본문 바로가기
IT 잡지식/DevOps

[Jenkins] PollSCM과 SSH로 다른 서버 연결

by 쯀리♥️ 2023. 9. 18.

 

안녕하세요, 쯀리입니다.

지난시간에는 Jenkins에서 Tomcat Server를 연동해보았습니다.

https://funlife-julie.tistory.com/25

 

[Jenkins] CI/CD에서 Tomcat Server 연동

안녕하세요, 쯀리입니다. 지난 시간에는 톰캣을 설치했는데 오늘은 Jenkins에서 톰캣 설정을 해보고 실행해보겠습니다. https://funlife-julie.tistory.com/24 [Jenkins] Ubuntu에 Tomcat 설치 안녕하세요, 쯀리입

funlife-julie.tistory.com

 

오늘은 PollSCM을 통해서 자동으로 내용이 변경되면 내용을 가져와서 빌드를 하는 것을 살펴보고 

SSH로 다른 서버에 연결해보겠습니다. 

 


 

PollSCM

PollSCM이란?

프로젝트 내부에 변화가 있을 때 자동으로 build 해주는 역할

여기서 build란 어떤 어플리케이션을 설치하는 build가 아닌

Jenkins 내부에서의 작업을 의미합니다.

 

지난 시간에 진행했던 TomcatTestPrj에서 

소스코드 관리 > Poll SCM > Schedule 에서 crontab을 잡아줍니다.

일단 테스트이기 때문에 변경될 때마다 적용시켜주겠습니다.  

 

 

리눅스에서 crontab이란?

특정 시간에 특정 작업을 하는 데몬을 Cron(크론) 이라고 하고,  이것을 특정 파일에 저장하는 것을 Crontab 이라고 합니다.

 

위와 같이 * * * * * 는 1분마다 해당 업무를 실행 한다는 뜻입니다

schedule : " '분' '시' '일' '월' '요일'"

MINUTE[0~59] HOUR[0~23] DAY[1~31] MONTH[1~12] WEEK[0~7 0,7=일요일]

 

 

 

설정이 완료되면 GitHub에서 코드를 수정해주겠습니다. 

 

 

수정이 완료되면 바로  자동으로 빌드 되는 것을 확인할 수 있습니다. 

 

 

 

빌드가 완료되면 자동으로 title이 Hello-World로 변경 되는 것을 확인 할 수 있습니다. 

 


SSH

새로운 도커 환경에서도 설정 환경을 동일하게 맞추어 주기 위해서 SSH로 연결해보겠습니다. 

 

우선 도커를 설치해주겠습니다.

강의 환경과 동일하도록 이미지를 가져와 보겠습니다. 

docker pull edowon0623/docker

 

 

이미지를 실행해보겠습니다.

저는 윈도우 방법을 사용하겠지만 Mac 환경을 사용하시는 분들은 선택을 잘 하셔서 실행하시면 됩니다.

더보기
  • Windows1) SSH 서버 (with 도커 + dind) 실행 명령어 (방법1)
    • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init
  • Windows2) SSH 서버 (with 도커 + dood) 실행 명령어 (방법2, 위 명령어로 실행되지 않을 경우)
    • docker run -itd --name docker-server -p 10022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init
  • Windows3) SSH 서버 (with 도커 + no_iptables) 실행 명령어 (방법3, 위 명령어로 실행되지 않을 경우, iptables 사용하지 않고 실행)
    • docker run -itd --name docker-server -p 10022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:no_iptables /usr/sbin/init
  • MacOS1) intel chip: SSH 서버 (with 도커 + intel chip) 실행 명령어
    • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init
  • MacOS2) intel chip+Ventura: SSH 서버 (with 도커 + intel chip) 실행 명령어 (위 MacOS1 위명령어로 실행 시 오류가 발생할 경우)
    • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081: 8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:intel /usr/sbin/init
  • MacOS3) apple silicon chip, m1: SSH 서버 (with 도커 + apple chip) 실행 명령어
    • docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init

 

 

도커가 실행이 되었다면 ssh로 접근해보겠습니다. 

ssh root@localhost -p 10022

 

 

에러 : kex_exchange_identification: Connection closed by remote host

더보기

 

이미지까지 삭제하고 다시 실행해보았습니다. 

아래와 같이 실행했더니 

아주 성공입니다!

docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker:latest /usr/sbin/init

 

접속이 되었다면 docker 가 정상 작동중인지 살펴보겠습니다. 

systemctl status docker
systemctl start docker

 

내부에 ip를 확인하기 위해서는 

ifconfig 명령어를 사용하면 됩니다. 

 

설치가 되어있지 않으니 net-tools를 설치해보겠습니다.

 yum install -y iptables net-tools

 

 

새로운 도커 주소를 확인할 수 있습니다.

 

오늘 알아낸 Docker-server의 IP주소를 이용해 

Ansible로 여러 서버로 사용하는 방법을 알아보겠습니다. 

Ansible이란 무엇인지 다음시간에 확인해보겠습니다. 

 


 

 


참조

※  Jenkins를 이용한 CI/CD 구축