Fabric

シェル・コマンドを実行する

$ fab -H ホスト名 -u ユーザー名 -- シェルコマンド 

$ fab -H 192.168.100.100 -u vagrant -- uname -a
[192.168.100.100] Executing task '<remainder>'
[192.168.100.100] run: uname -a
[192.168.100.100] Login password for 'vagrant':
[192.168.100.100] out: Linux vagrant.vm1 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[192.168.100.100] out:


Done.
Disconnecting from 192.168.100.100... done.

fabfileを使ってコマンド実行する

$ vim どこか適当なローカルのディレクトリ/fabfile.py
  from fabric.api import *
 
  def ipcheck():
    run("sudo cat /var/log/httpd/access.log")

$ fab -H ホスト名 -u ユーザー名 ipcheck

sudoが必要なコマンドを列挙する場合

run("sudo ほげ")だと都度sudoパスワードを確認されるため下記のように記述する

sudo("hoge")

タスクをまとめる

def hoge()
  #task1

def fuga()
  #task2

def HOGE()
  #task3

def all()
  hoge()
  fuga()
  HOGE()

$ fab all -f fabfile.py

接続情報を記述する

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

踏み台経由で接続する

env.gateway = '192.168.X.X'

ローカルのssh/configを参照する

env.use_ssh_config = True

エラーが出ても続行する

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

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
Last-modified: 2022-06-30 (木) 01:40:11