공부합시다!/Jenkins

Jenkins: Jenkins Publish Over SSH

간서치 2023. 1. 18. 00:13
728x90

약속대로 오늘은 가장 간단하고 심플한 SSH를 이용한 Build 및 배포에 대해서 설명드립니다.

Node에 Infra를 배포하는 가장 쉬운 방법은 SSH를 이용한 방법입니다.

Jenkins에서는 Publish Over SSH 라는 Plugin을 설치해서 활용이 가능합니다.

설정 또한 간단하기 때문에 디렉토리 구조만 잘 이해 하신다면 크게 문제는 없을 겁니다.

 

1. Plugin Install

2. Publish Over SSH 구성

3. docker 배포

4. Test 

순서로 진행하겠습니다.

 

 

1. Plugin Install

 1.1. Publish Over Install

  1.1.1. DashBoard 'Jenkins관리' -> '플러그인 관리' 클릭

 

 

  1.1.2. 'Avaliable plugins' -> ssh 검색

   1.1.2.1. 'Publish Over SSH' 선택 후 'Install without restart' 선택

 

 

  1.1.3. 성공 메세지 확인 후 '메인 페이지로 돌아가기' 클릭

 

 

2. Publish Over SSH 구성

 2.1. SSH Server 설정

  2.1.1. DashBoard의 'Jenkins 관리' -> '시스템설정' 클릭

 

 

 2.2. SSH Servers 섹터

  2.2.1. node1 설정

   2.2.1.1. Name: node1 -> build에서 선택하는 이름이 됩니다.

   2.2.1.2. Hostname: 10.0.0.11

   2.2.1.3. Username: root -> 관리자 권한이 편하죠!

   2.2.1.4. Remote Directory: 기존에 만들어 두었던 /dep 디렉토리 활용, 

   2.2.1.5. Password: It1

   2.2.1.6. 반드시 Test 해서 'Success' 확인

 

 

   2.2.2. node2 설정

    2.2.2.1. Name: node2 -> build에서 선택하는 이름이 됩니다.

    2.2.2.2. Hostname: 10.0.0.12

    2.2.2.3. Username: root -> 관리자 권한이 편하죠!

    2.2.2.4. Remote Directory: 기존에 만들어 두었던 /dep 디렉토리 활용, 

    2.2.2.5. Password: It1

    2.2.2.6. 반드시 Test 해서 'Success' 확인

    2.2.2.7. 하단의 '저장' 클릭

 

 

 

3. docker 배포

 3.1. Node 확인

 

 3.2. Project 생성

  3.2.1. DashBoard의 'New Item' 클릭

  3.2.2. Projectl 생성

   3.2.2.1. Name: docker Install

   3.2.2.2. Freestyle project 선택

   3.2.2.3. OK 클릭해서 저장

 

 

 3.3. Project 세부설정

  3.3.1. 설명: node1 docker install test -> 알아보기 쉽게

  3.3.2. 다른 옵션을 설정할 필요없습니다.

  3.3.3. Build 환경 섹션

   3.3.3.1. 'send files or execute commands over SSH after the build runs' 빌드 실행 후 파일 전송 및 명령실행 

   3.3.3.2. Name: node1

   3.3.3.3. source file: docker.sh -> build후 생성 및 전송할 파일명 입니다. build는 더 아래쪽에서 설정합니다.

   3.3.3.4. Remote Directory: SSH 설정에서 /dep를 디렉토리로 지정했습니다. 따라서 / 디렉토리는 node의 /dep 디렉토리

   3.3.3.5.  Exec command: sh /dep/docker.sh  전송한 파일 실행

 

 

  3.3.4. Build Steps 섹션

   3.3.4.1. docker.sh 파일을 생성하는 스크립트 작성

 

cat > docker.sh << EOF
#! /bin/bash

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
EOF

docker 완전 삭제 명령어
systemctl stop docker
yum -y remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /run/docker /run/docker.sock

 

 

 3.4. Build 

  3.4.1.Project 상태 창

   3.4.1.1. '지금 빌드' -> 성공

   3.4.1.2. console Output 클릭

 

 

   3.4.1.3. 콘솔 출력의 성공 메세지 확인

 

 

4. Test 

 4.1. Node 1

  4.1.1. Node 1에서 설치된 Docker Version과 전송된 docker.sh 파일 확인

 

 

자! 그럼 생각을 잠시 해볼까요!
배포하는게 docker가 아니라 K8S라면 쉽게 code로 간단하게 여러 Node에 배포를 할 수 있습니다.

뭔지 느낌이 오세요!

Project가 얼마 남지 않았으니 조금씩 따라 오셔야 합니다.

GIT -> GITHUB -> Jenkins로 이어지는 CI/CD가 이래서 재밌습니다.

Code의 변화가 있을 때 자동배포라?

 

Have a nice day!

 

 

 

728x90