티스토리 뷰

젠킨스 배포 시 

"Publish Over SSH" 플러그인을 사용하여

원격 리눅스 서버에 배포 및 명령어 실행 시

SSH 접속 계정이 아닌 다른 특정한 계정을 이용하여

명령어를 실행하여야 할 경우가 있다.


이때, 'su' 명령어를 이용하여 특정 사용자의 명령어를 해당 권한으로 실행할 수 있다.

물론 'su' 명령어는 사용자의 프로필 설정까지 반영되어 실행되기 때문에

설정된 경로패스라던지 alias, 또는 환경변수까지 적용되어 명령어 실행이 가능하다.


"Publish Over SSH" 배포 설정의 "Exec command" 란에 다음과 같이 이용하여 명령어 실행이 가능하다.


su - "사용자" -c '/path/to/command'


위와 같이 명령어를 작성하고 실행하여 원격 SSH에서 특정 사용자 권한으로 명령어 실행이 가능하다.


작성자 본인은 젠킨스를 이용하여 배포 작업 진행 시

내부 및 외부망 서버 6개에 동시에 소스 배포 및 서버 재시작을 위하여

단순 작업이지만 Ant를 이용하지 않고 적용할 방법을 궁리하다가 찾게된 방법이다.

또한 젠킨스에 SSH 접속을 위한 서버 정보를 저장하고

다시 SSH로 빌드 파일 전송 및 처리가 끝나면 

별도로 또 각 서버 재시작을 위한 접속정보를 이용하여 다시 접속하지 않고

SSH 접속 후 해당 계정으로만 작업하기 위하여 고민끝에 적용하게되었다.


참고로 예를 들자면, 본인은 다음과 같이 사용하였다.


su - jeus -c '/work/jeus/bin/jeus_server1_restart.sh'


위 명령어를 통해서 별도로 작성한 서버 재시작을 위한 스크립트를 실행하였다.


위와 같이 구성하면 젠킨스에 필요한 서버정보를 모두 등록하지않고 SSH 접속 권한의 계정만을 이용하여 처리할 수 있다.



단점은, 현재(글 작성 시점인 18.10.24일) 시점에는 일부 서버의 경우,

위 방법을 이용하여 명령어 실행 후 스크립트 정상종료 리턴(스크립트 결과가 0으로) 반환되어 

젠킨스 빌드 상태가 SUCCESS가 아닌 Unstable 상태로 되는 서버가 일부 존재하였다.



댓글