Skip to main content

Fabric을 이용한 서버관리/배포 (스크립트)

배포 스크립트를 만들어 보도록 합시다.

Fabric은 하나의 서버에 이외에도 여러개의 서버에 동시에 배포할 수 있습니다.

AWS와 같은 서버에 서버의 환경을 조정하거나 소스 코드를 배포하기 위해서 참 좋은 프로그램 입니다.

예를 들면 10대의 서버가 있는데 소스를 배포 후 OS업데이트를 실행하고, 동시에 reboot가 가능하게 되는 것입니다.

생각보다는 쉽고 단순합니다. ^^

무조건 따라 해보시면 감이 잡힐 겁니다.

Fabric은 파일명이 고정입니다. 특정한 폴더 혹은 프로젝트에 [fabfile.py] 파일을 작성합니다.

from fabric.api import env,run

#접속할 host에 대한 접속정보
env.user = 'root'
env.hosts = ['myhost1.com','myhost2.com']
env.key_filename=['keyfile.pem']

#task 각각의 서버에 커맨드를 실행함
def update():
    run("yum update")

def ls():
    run("ls -al")

저장된 파일의 경로에서 fab ls 를 실행해보면, 지정된 호스트에서 각각 명령이 실행 되는 것을 확인 할 수 있습니다.

D:\Python\Python_work\pytest>fab ls
[teracle.com] Executing task 'ls'
[teracle.com] run: ls -al
[teracle.com] Login password for 'root':

물론 스크립트데로 fab update를 실행하여 각 서버의 업데이트도 진행 할 수 있습니다. 동시에 2가지 task를 실행할 수도 있고요. viagra 100 prix. fab update ls 처럼요…

서버 내부에서 rsync등을 이용하여 원하시는 작업을 처리 할 수도 있습니다.

이제 배포 스크립트를 봅시다. ^^
서버에 파일을 올리기 위해서는 put을 사용합니다.
로컬에 있는 특정 경로의 파일을 각각의 서버의 특정경로로 배포 할 수 있습니다.

from fabric.api import *

env.user = 'root'
env.hosts = ['myhost1.com','myhost2.com']
env.key_filename=['keyfile.pem']

def deploy():
    run('mkdir -p /home/my_account/public_html')
    put('local_source/public_html', '/home/my_account/public_html')

응용한다면 개발 환경으로 부터 운영으로 편리하게 배포 할 수 있으실 겁니다.

마지막으로 Rule을 사용하면, 각 서버의 역할 그룹을 지정하여 배포를 사용할 수도 있습니다.
(DB서버에 배포할 것들과 웹서버의 배포할 것들을 구분한다던지…)

자세한 내용은 공식 사이트를 참고하세요…
http://docs.fabfile.org/en/1.10/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.