ファブリック自動化配置の簡単な使用
4050 ワード
Fabricは、ssh(paramikoライブラリを通じて)を使用して、複数のサーバで一括してタスク、アップロード、ダウンロードを実行します.
使う前にまずfabricパッケージをインストールする必要があります(私が使っているシステムはuuntu 16.04です)
スクリプトを作成するときは、スクリプト名がfabfile.pyではないなら、もちろんこれも可能ですが、スクリプトを実行するコマンドは
デフォルトでは、命令の実行に失敗した場合、Fabricは後続命令の実行を停止します.場合によっては、失敗したコマンドを無視して実行を続けることができます.例えば、run(「rm/tmp/example」)はファイルが存在しない時に失敗する可能性があります.この時には
Fabricのすべての操作はSSHに基づいて実行されます.必要に応じてユーザーにパスワードの入力を要求します.
SSHパスワード、ユーザ、ポートの管理
SSH公開鍵認証の使用がより推奨されているが、Fabricは暗号を管理する仕組みを提供している.Fabricは2つのパスワードを提供しています.あなたのserverが同じパスワードを持っているなら、
関数の説明:
使う前にまず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遠隔自動化に転載して説明します.