ファブリック自動化配置の簡単な使用

4050 ワード

Fabricは、ssh(paramikoライブラリを通じて)を使用して、複数のサーバで一括してタスク、アップロード、ダウンロードを実行します.
使う前にまずfabricパッケージをインストールする必要があります(私が使っているシステムはuuntu 16.04です)
pip install fabric
私たちはfabricを使用して展開する前に、まず簡単な数分間でシナリオを書きます.(脚本の名前はできるだけfabfile.py).git pullを使って展開すれば、一分でいいかもしれません.
# -*- coding=utf-8 -*-
from fabric.api import *

#              
env.user = 'root'
#             
env.hosts = ['test.com', ]


def deploy():
    with cd('/tmp/example'):
        run('git pull')
実行時はコマンドライン入力fab deployスクリプトだけで、与えられたすべてのサーバに自動的にリンクしてdeploy関数を実行するコマンドです.もし私達はもう一つのexampleという関数が実行したいなら、fab deploy exampleを実行すればいいです.
スクリプトを作成するときは、スクリプト名がfabfile.pyではないなら、もちろんこれも可能ですが、スクリプトを実行するコマンドはfab -f test.py deployに変更されます.
デフォルトでは、命令の実行に失敗した場合、Fabricは後続命令の実行を停止します.場合によっては、失敗したコマンドを無視して実行を続けることができます.例えば、run(「rm/tmp/example」)はファイルが存在しない時に失敗する可能性があります.この時にはwith settings(warn_only=True):でコマンドを実行してもいいです.このようにファブリックは警告情報だけを表示して、実行を中断することはありません.
Fabricのすべての操作はSSHに基づいて実行されます.必要に応じてユーザーにパスワードの入力を要求します.
SSHパスワード、ユーザ、ポートの管理
SSH公開鍵認証の使用がより推奨されているが、Fabricは暗号を管理する仕組みを提供している.Fabricは2つのパスワードを提供しています.あなたのserverが同じパスワードを持っているなら、env.passwordにデフォルトのパスワードを設定できます.serverパスワードが異なる場合は、env.passwords(host,password)ペアを設定することもでき、各serverのために個別のsshパスワードを設定します.上のhost文字列はこのようなフォーマットを採用しています.username@hostname:ポルト.したがって、sshパスワードを指定するとともに、sshユーザを指定します.パスワードと同様に、env.userでデフォルトのユーザを指定することもできます.すべて指定されていない場合は、fabコマンドを実行するときにパスワードの入力を促すことがあります.
関数の説明:
1:from fabric.api import *
local    #      , local('uname -s')
lcd      #      , lcd('/home')
cd       #      , cd('/var/logs')
run      #      , run('free -m')
sudo     #sudo        , sudo('/etc/init.d/httpd start')
put      #           , put('/home/user.info','/data/user.info')
get      #            , :get('/data/user.info','/home/user.info')
prompt   #        , :prompt('please input user password:')
confirm  #        , :confirm('Test failed,Continue[Y/N]?')
reboot   #      , :reboot()
@task    #     ,      fab    ,    fab   ,     
@runs_once   #     ,           ,        
@roles() #         ,  env.roledefs    

2:from fabric.colors import *
print blue(text)
print cyan(text)
print green(text)
print magenta(text)
print red(text)
print white(text)
print yellow(text)
関数の説明部分はFabric遠隔自動化に転載して説明します.