[Rundeck] 설치 및 사용법
[Rundeck ] 설치 및 사용법
필자가 운영하는 프로젝트에서는 CI툴로는 Jenkins를 사용하고 CD툴로는 Rundeck을 사용한다. 소스는 IDC 서버에 있고, WAS 서버들이 아마존 웹서비스에 존재하다보니, 빌드를 한뒤 파일을 아마존쪽으로 전달해서 배포하는 형식이다.
라이브 배포툴로 사용하면 좋을 오픈소스 Rundeck에 대해서 정리한다.
1. 설치
• 설치
yum install java-1.8.0
rpm -Uvh http://repo.rundeck.org/latest.rpm
yum install rundeck
• 중지 및 기동
service rundeckd stop
service rundeckd start
2. 런덱 기본 설정
- hostname 변경
vi /etc/rundeck/rundeck-config.properties grails.serverURL=http://xx.xx.xxx.xx:{port} # Public IP 등록
- admin 계쩡 설정
vi /etc/rundeck/realm.properties admin:admin,user,admin,architect,deploy,build # admin 계정 패스워드 변경
- Framework 설정
vi /etc/rundeck/framework.properties framework.server.name = xx.xx.xxx.xx framework.server.hostname = 0.0.0.0 framework.server.port = {port} framework.server.url = http://xx.xx.xxx.xx:{port} framework.rundeck.url = http://xx.xx.xxx.xx:{port}
- 영구 API 토근 설정 (필요시)
외부에서 API를 연계할일이 있어, API를 발급받아 사용했는데, 토큰 만료일자가 30일로 셋팅되어 매번 토근을 재발급받아야 했다.
토근을 영구적으로 셋팅하기 위해서는 다음과 같이 하면된다.vi /etc/rundeck/tokens.properties Rundeck Web UI 의 Profile 메뉴에서 API Token 생성 후 등록 admin: jgxMLwbkWBWR8huqzc07GAgT9dbpH4Kx
- 로그 셋팅
cd /etc/logrotate.d/ vi rundeck vi rundeck-access vi rundeck-api vi rundeck-audit vi rundeck-exec vi rundeck-jobs vi rundeck-options vi rundeck-service vi rundeck-storage /var/log/rundeck/{파일명}.log { daily rotate 14 compress delaycompress missingok notifempty create 0664 rundeck rundeck }
3. 플러그인 설치
• /var/lib/rundeck/libext 경로에 Plug-In 파일 복사 후 재기동
openssh-node-execution-master.zip
rundeck-influxdb-annotation-step-plugin-master-0.1.0-SNAPSHOT.jar
rundeck-slack-incoming-webhook-plugin-0.6.jar
4. 노드 접속 키 설정
• 노드 접속 Key 생성 ( password 방식 )
cd /var/lib/rundeck/var/storage/content
( rundeck 기동 후에 path 생성됨 )
mkdir keys
cd keys
vi {node_name}.password
{password}
5. 노드 연결 확인
설치가 완료되면, 노드를 추가해야 해당 서버로 ssh 접속이 가능하게 된다.
vi /var/rundeck/projects/{프로젝트 명}/etc/resources.xml ( 프로젝트 추가 후 생성됨 )
노드는 프로젝트별로 추가 필요
=> /var/rundeck/projects/resources.xml 로 통합하여 1개 파일만 수정하면 모든 프로젝트에 적용됨
추가할 노드 정보 입력 ( 예시 )
6. RSA 인증방식으로 설정
필자가 운영하는 프로젝트에서는 배포할 파일을 각 서버로 SCP하는 작업이 있었다. 그렇게 하기 위해서는 해당 서버로 SCP를 하기 위해 RSA 인증을 얻어야 하는데 다음과 같은 방식으로 인증을 획득한다.
1. 각 서버에서 키 생성 후, rundeck 서버에 publick key 등록 ( 패스워드 없이 scp 가능하도록 )
- 대상 서버 : ssh-keygen -t rsa -b 2048
- 생성된 rsa_id.pub 키 내용을 rundeck 서버 rundeck 계정 ~/.ssh/authorized_keys 에 추가
/var/lib/rundeck/.ssh/authorized_keys
2. 서버에서 scp 수동으로 1회 실행 ( 각 서버 → Rundeck 서버 )
클라이언트에서 생성한 공개키 값을 접속하려는 서버의 authorized_keys 파일에 추가시키는 이유는 SSH 접속 시 client의 id_rsa.pub 키 값과 서버의 authorized_keys 값을 비교하여 인증을 진행하기 때문이다.
이상으로 런덱의 설치 및 운용방법에 대해서 알아보았다.
런덱은 내부적으로 h2라는 db를 사용하는데, 보통 런덱을 업그레이드 하거나 백업을 할때는 다음의 경로를 백업 하면 된다.
/var/lib/rundeck/data/rundeckdb.mv.db
/var/lib/rundeck/data/rundeckdb.trace.db
다음에는 각 JOB을 생성하는 방법에 대해서 알아보겠습니다.