Fabric

接続情報を記述する

env.hosts = [
 '192.168.33.11',
 '192.168.33.12',
]
env.key_filename = ['~/.ssh/id_rsa']
env.user = 'vagrant'
env.password = 'vagrant'

踏み台経由で接続する

env.gateway = '192.168.33.100'

エラーが出ても続行する

※デフォルトではエラーが出たらその時点で中止する

envで指定する

env.warn_only=true

warn_only=trueをコマンドの後に記述する

def yumcheck()
  run("yum list installed, warn_only=true")

実行するタスクが何か、fab --listで表示させる

def hostinfo():
"""
これはホストの情報を確認するタスクです
"""
run("uname -a")
run("hostname")

$ fab --list
hostinfo これはホストの情報を確認するタスクです

タスクごとに適用するroleを変更する

env.roledefs= {
  'webservers': ['192.168.33.10', '192.168.33.11'],
  'mailservers': ['192.168.33.12']
}

@roles("webservers")
def sometask():
   #do something

タスクごとに適用するhostsを変更する

上記のようにroleを設定しても良いけど、特定のタスクで特定のroleだけを指定したい場合に下記のように記述するこもと可能

WEBSERVER="192.168.1.10"

@hosts(WEBSERVER)
def hogetask():

ファイルで定数を設定してタスクで参照するようにする

TESTID="testdayo"
MAILADDRESS="hogepiyo@hogepiypiyo.com"

def testshell():
  run("/bin/bash test.sh %s %s" % (TESTID, MAILADDRESS))

コマンドの結果を変数にセットする

hostname = run("hostname -s")
run("echo %s" % hostname)

SFTPでファイルをGETする

hostname = run("hostname -s") 
get("/remote/path/%s.log" $ hostname, "/local/path/%s" % env.user)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS