Fabric
- 파일을 디플로이 하거나, 시스템 태스크를 관리를 간편화 하기 위한 툴이다.
- command line 기반의 처리 수행
베이스 버젼 :
Python 2.5 ~ 2.7 에서 사용가능하다.
기능 : 간소화된 기능제공
- SSH를 이용하여 App의 디플로이
- System 관리 Task 수행
상세기능 :
- Local/Remote 커맨드 실행, sudo를 이용한 실행가능
- 파일의 update/download 기능
- 사용자의 입력에 대한 수치연산 제공.
- 요청 작업의 취소 처리.
Install
# Python을 이용한 설치.
pip install fabric
# Ubuntu Linux계열 install
pip apt-get install fabricSample
fabfile.py
from fabric.api import run
def host_type():
run('uname -s')실행결과 : $ fab -H localhost host_typye
[localhost] Executing task 'host_type'
[localhost] run: uname -s
[localhost] Login password for 'KIDO':
[localhost] out: Darwin
[localhost] out:기타 유용한 기능 (서버 디플로이)
deploy_tomcat.py
from fabric.api import env, run, put
import time
# 사용자 아이디/비번설정
env.user = 'kido'
env.password = 'kido'
env.sudoer = {'user': 'kidoroot', 'password': ''}
# 설치 디렉토리 지정
CATALINA_HOME = "/usr/home/apps/tomcat"
INSTANCES_BASE = "/usr/home/apps/tomcat"
SCRIPTS_BASE = "/usr/home/apps/script"
# 설치를 위한 파이선 모듈 작성
def deploy_tomcat(archive_filepath, project, context_name='ROOT'):
context_path = "%s/%s/webapps/%s.war" % (INSTANCES_BASE, project, context_name)
run("nohup %s/tomcat.sh %s %s" % (SCRIPTS_BASE, project, 'stop'))
run("rm -rf %s/%s/webapps/%s/" % (INSTANCES_BASE, project, context_name))
time.sleep(1)
# 로컬 빌드 파일을 서버로 업로드 한다.
put(archive_filepath, context_path)
# 서버에서 해당 컨텍스트를 실행한다.
run("nohup %s/tomcat.sh %s %s" % (SCRIPTS_BASE, project, 'start'))
time.sleep(20)실행
서버상에서 tomcat에 바로 webapps를 이용하는 것이 아니라.
test_tomcat와 같은 인스턴스 그룹을 만든경우라고 가정
빌드된 디렉토리는 /usr/home/build_directory/에 ROOT.war로 패키지 된다고 가정.
설치하고자 하는 대상 서버의 호스트는 server_host_address로 지정하고 있다.
fab -f deploy_tomcat.py -H [server_host_address] deploy_tomcat:'/usr/home/build_directory/ROOT.war','test_tomcat'