ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Jenkins: Jenkins Publish Over SSH
    공부합시다!/Jenkins 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
Designed by Tistory.