개요
어떤 서버에 위치하고 있는 쉘 스크립트를 Jenkins를 이용해 실행시키려고 한다. 물론 Jenkins가 동작하고 있는 서버에 스크립트를 옮기는 것을 먼저 생각했지만, 이 글의 Jenkins는 쿠버네티스 환경에서 동작하고 있어 적용이 쉽지 않았다.
다행히 SSH 플러그인을 이용하면 Jenkins가 원격 서버에 SSH로 연결하여 쉘을 실행할 수 있다고 한다.
크게 아래와 같은 절차로 적용할 수 있다.
- SSH 플러그인 설치
- Credential 설정
- SSH Remote Host 추가
- 프로젝트에 적용
순서대로 방법을 정리한다.
1. SSH 플러그인 설치
Jenkins 관리 > 플러그인 관리로 이동하여 SSH 플러그인이 설치되어 있는지 확인한다.
설치되어 있지 않으면 설치한다.
2. Credential 설정
원격 서버에 인증을 하기 위해 Credential 생성이 필요하다.
2-1) Jenkins 관리 > Manage Credentials로 이동
2-2) global을 클릭한다.
global 설정은 Jenkins 전체에 적용된다.
2-3) adding some credentails?를 클릭한다.
2-4) 인증에 필요한 정보를 설정한다.
- kind : Username with password
- Username : SSH로 원격 서버에 접속할 계정명
- Password: SSH로 원격 서버에 접속할 계정 비밀번호
- ID : SSH로 원격 서버에 접속할 계정명
2-5) 설정 저장
생성된 credential을 확인한다.
3. SSH Remote Host 추가
3-1) Jenkins 관리 > 시스템 설정으로 이동
3-2) 원격 서버 정보를 설정한다.
- Hostname : 원격 서버 IP
- Port : 접속 시 사용할 포트 번호 (기본 : 22)
- Credentials : SSH 인증을 위한 Credential 선택
설정 정보 입력 후에는 Check connection 버튼을 클릭하여 연결에 문제가 없는지 확인하는 것이 좋다.
만약 시스템 정보 페이지에 SSH remote hosts 항목이 없으면 SSH 플러그인이 정상적으로 설치되어있는지 확인한다.
4. 프로젝트 생성
SSH로 원격 서버에 쉘을 실행할 프로젝트를 생성한다.
프로젝트에서 SSH를 사용한 쉘 스크립트 실행 관련해서는 두 가지 방식이 있다.
- 빌드 환경
빌드 환경에서 Excute shell script on remote host using ssh를 선택하면 빌드 단계 전후에 원격 서버에서 쉘 스크립트를 실행할 수 있다.
- Build
Add build step에서 Excute shell script on remote host using ssh를 선택한다.
command에 실행할 명령어를 입력한다.
참고로 빌드 환경에서 Excute shell script on remote host using ssh를 설정해도, Build에서 Excute shell script on remote host using ssh를 선택하지 않고 Excute shell을 선택하면 로컬 환경에서 쉘을 실행한다.
Build 단계에서도 Excute shell script on remote host using ssh을 설정하면 아래와 같이 SSH를 통한 실행 결과가 출력되는 것을 확인할 수 있다.
참고 문서
https://uchupura.tistory.com/67