배포툴 Rundeck

개발툴|2015. 9. 2. 14:30

라이브 배포툴로 사용하면 좋을 오픈소스 Rundeck에 대해서 정리한다.

http://rundeck.org/ 페이지에서 jar파일을 다운로드 받을 수 있으며 설정 방법과 동작 방식을 간단하게 설명하면 다음과 같다.



[배포 설정 방법]

1. Rundeck 설치

 - 설치라고 할 것도 없이 jar 파일 다운로드 후 실행만 해주면 된다.


2. 프로젝트 생성

 - Rundeck에서의 프로젝트는 하나의 서비스라고 생각하면 이해하기 쉽다. 흔히 개발을 할 때 여러 개의 서비스를 개발하고, 각 서비스는 별도의 시스템을 할당 받아 라이브 서비스를 하기에 이와 같은 구조를 잡은 듯 싶다.



3. Job 등록

 - Job이 하는 역할은 tomcat shutdown, war 배포, tomcat startup 과 같은 일을 담당한다.

 - 대게 라이브 장비에 shell script를 생성하고 Rundeck에서 순차적으로 호출하는 방법을 이용한다.



4. 배포 대상 서버 등록

 - resources.xml 파일에 배포 대상 서버를 추가한다. (아래에 해당 파일 경로 설명)

 

 

[동작 원리]

1. job을 실행 (배포 Job인 경우)

2. rundeck은 ssh를 이용하여 등록되어 있는 대상 서버에 접속한다.

3. 서버에 접속 후 tomcat shutdown, war 복사, tomcat startup을 실행한다.

4. 위의 작업이 완료되면 새로운 대상 서버에 접속하여 3번의 작업을 진행한다.

한 가지 알아둬야 할 점은 ssh 기본 설정은 원격 접속시마다 항상 패스워드를 물어본다는 것이다.

패스워드를 물어보게 되면 Rundeck이 정상적으로 동작하지 않으므로 RSA 인증 방식으로의 변경이 필요하다.

RSA 인증 방식은 개인키, 공개키를 이용한 인증 방식이기에 패스워드 입력 없이도 원격 접속이 가능하다.

RSA 인증 방식으로의 변경 작업은 다음과 같이 진행하면 된다.



[RSA 인증 방식으로의 설정]

1. 클라이언트 작업 (Rundeck이 설치된 장비)

> # ssh-keygen -t rsa

> 위의 명령어를 실행하게 되면 아래 두 개의 파일이 생성된다.

 - id_rsa : 개인키

 - id_rsa.pub : 공개키


2. 서버 작업 (라이브 배포 장비)

> .ssh 디렉토리 이동

> 클라이언트에서 생성한 id_rsa.pub 파일을 해당 디렉토리로 복사

> # cat id_rsa.pub >> authorized_keys

> .ssh 디렉토리 권한 추가 755

클라이언트에서 생성한 공개키 값을 접속하려는 서버의 authorized_keys 파일에 추가시키는 이유는 SSH 접속 시 client의 id_rsa.pub 키 값과 서버의 authorized_keys 값을 비교하여 인증을 진행하기 때문이다.



[Rundeck 설정]

## rundeck 실행

http://rundeck.org/ 사이트에서 rundeck을 다운로드 받은 후 아래 명령 실행

java -jar rundeck-launcher-x.x.x.jar


## path 설정

export RDECK_BASE=/home/nklee/utils/rundeck

PATH=$PATH:$RDECK_BASE/tools/bin

{RUNDECK_HOME}/server/sbin/rundeckd 실행 파일을 vi로 열은 후 위의 내용을 추가


## JVM 메모리 설정 변경

{RUNDECK_HOME}/etc/profile

profile을 열어보면 아래와 같이 옵션 설정이 존재

적절한 사이즈로 메모리를 할당

export RDECK_JVM="$RDECK_JVM -Xmx1024m -Xms256m -XX:MaxPermSize=256m -server"


## 포트 변경

{RUNDECK_HOME}/etc/framework.properties 파일에서 아래의 영역 변경


## 로그 확인

{RUNDECK_HOME}/var/log/service


## 서버 restart

{RUNDECK_HOME}/server/sbin/rundeckd 명령어를 이용해서 서버 restart 를 할 수 있음


## 계정 생성

{RUNDECK_HOME}/server/config/realm.properties 변경하면 됨

{계정}:{패스워드}:{권한}:{권한}


## 배포 대상 서버 추가

{RUNDECK_HOME}/projects/LIVE_DEPLOY_TEST/etc/resources.xml

<node name="api_server_1" description="Rundeck server node" tags="api" hostname="172.xx.xx.xxx" osArch="amd64" osFamily="unix" osName="Linux" osVersion="2.6.18-348.16.1.el5" username="계정"/>


## shell 스크립트 샘플

https://github.com/dtolabs/rundeck-training/tree/master/jobs


## 배포 시 question alert 띄우기

라이브 배포 시 버튼을 잘못 누르는 실수를 방지하기 위해서 alert를 띄울 수 있는지 확인해 보았지만 이와 같은 기능을 제공해 주고 있지 않은 듯 하여 rundeck에서 기본적으로 제공하는 옵션 기능을 이용했다.

job 실행 버튼 클릭 시 "Do you want to execute this job?" 이라는 문구를 보여주고 input box에 "yes"를 입력해줘야 실행이 되는 방식이다.




댓글()