Fabricの便利な使い方
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Fabric]]
*シェル・コマンドを実行する [#e64ef95e]
$ 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...
[192.168.100.100] out:
Done.
Disconnecting from 192.168.100.100... done.
*fabfileを使ってコマンド実行する [#yc4abb93]
$ vim どこか適当なローカルのディレクトリ/fabfile.py
from fabric.api import *
def ipcheck():
run("sudo cat /var/log/httpd/access.log")
$ fab -H ホスト名 -u ユーザー名 ipcheck
*sudoが必要なコマンドを列挙する場合 [#z04b76a8]
run("sudo ほげ")だと都度sudoパスワードを確認されるため下...
sudo("hoge")
*タスクをまとめる [#i745234d]
def hoge()
#task1
def fuga()
#task2
def HOGE()
#task3
def all()
hoge()
fuga()
HOGE()
$ fab all -f fabfile.py
*接続情報を記述する [#kb3ccad8]
env.hosts = [
'192.168.X.X',
'192.168.X.X',
]
env.key_filename = ['~/.ssh/id_rsa']
env.user = 'vagrant'
env.password = 'vagrant'
*踏み台経由で接続する [#oa439165]
env.gateway = '192.168.X.X'
*ローカルのssh/configを参照する [#c6e763be]
env.use_ssh_config = True
*エラーが出ても続行する [#zbccfff4]
※デフォルトではエラーが出たらその時点で中止する
**envで指定する [#rca1a371]
env.warn_only=true
**warn_only=trueをコマンドの後に記述する [#eec00ff2]
def yumcheck()
run("yum list installed, warn_only=true")
*実行するタスクが何か、fab --listで表示させる [#q524348d]
def hostinfo():
"""
これはホストの情報を確認するタスクです
"""
run("uname -a")
run("hostname")
$ fab --list
hostinfo これはホストの情報を確認するタスクです
*タスクごとに適用するroleを変更する [#j3f017b9]
env.roledefs= {
'webservers': ['192.168.33.10', '192.168.33.11'],
'mailservers': ['192.168.33.12']
}
@roles("webservers")
def sometask():
#do something
**タスクごとに適用するhostsを変更する [#n7e9fb76]
上記のようにroleを設定しても良いけど、特定のタスクで特定...
WEBSERVER="192.168.1.10"
@hosts(WEBSERVER)
def hogetask():
*ファイルで定数を設定してタスクで参照するようにする [#if5...
TESTID="testdayo"
MAILADDRESS="hogepiyo@hogepiypiyo.com"
def testshell():
run("/bin/bash test.sh %s %s" % (TESTID, MAILADDRESS))
*コマンドの結果を変数にセットする [#dc7c774f]
hostname = run("hostname -s")
run("echo %s" % hostname)
*SFTPでファイルをGETする [#ifcfce8c]
hostname = run("hostname -s")
get("/remote/path/%s.log" $ hostname, "/local/path/%s" %...
~
~
終了行:
[[Fabric]]
*シェル・コマンドを実行する [#e64ef95e]
$ 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...
[192.168.100.100] out:
Done.
Disconnecting from 192.168.100.100... done.
*fabfileを使ってコマンド実行する [#yc4abb93]
$ vim どこか適当なローカルのディレクトリ/fabfile.py
from fabric.api import *
def ipcheck():
run("sudo cat /var/log/httpd/access.log")
$ fab -H ホスト名 -u ユーザー名 ipcheck
*sudoが必要なコマンドを列挙する場合 [#z04b76a8]
run("sudo ほげ")だと都度sudoパスワードを確認されるため下...
sudo("hoge")
*タスクをまとめる [#i745234d]
def hoge()
#task1
def fuga()
#task2
def HOGE()
#task3
def all()
hoge()
fuga()
HOGE()
$ fab all -f fabfile.py
*接続情報を記述する [#kb3ccad8]
env.hosts = [
'192.168.X.X',
'192.168.X.X',
]
env.key_filename = ['~/.ssh/id_rsa']
env.user = 'vagrant'
env.password = 'vagrant'
*踏み台経由で接続する [#oa439165]
env.gateway = '192.168.X.X'
*ローカルのssh/configを参照する [#c6e763be]
env.use_ssh_config = True
*エラーが出ても続行する [#zbccfff4]
※デフォルトではエラーが出たらその時点で中止する
**envで指定する [#rca1a371]
env.warn_only=true
**warn_only=trueをコマンドの後に記述する [#eec00ff2]
def yumcheck()
run("yum list installed, warn_only=true")
*実行するタスクが何か、fab --listで表示させる [#q524348d]
def hostinfo():
"""
これはホストの情報を確認するタスクです
"""
run("uname -a")
run("hostname")
$ fab --list
hostinfo これはホストの情報を確認するタスクです
*タスクごとに適用するroleを変更する [#j3f017b9]
env.roledefs= {
'webservers': ['192.168.33.10', '192.168.33.11'],
'mailservers': ['192.168.33.12']
}
@roles("webservers")
def sometask():
#do something
**タスクごとに適用するhostsを変更する [#n7e9fb76]
上記のようにroleを設定しても良いけど、特定のタスクで特定...
WEBSERVER="192.168.1.10"
@hosts(WEBSERVER)
def hogetask():
*ファイルで定数を設定してタスクで参照するようにする [#if5...
TESTID="testdayo"
MAILADDRESS="hogepiyo@hogepiypiyo.com"
def testshell():
run("/bin/bash test.sh %s %s" % (TESTID, MAILADDRESS))
*コマンドの結果を変数にセットする [#dc7c774f]
hostname = run("hostname -s")
run("echo %s" % hostname)
*SFTPでファイルをGETする [#ifcfce8c]
hostname = run("hostname -s")
get("/remote/path/%s.log" $ hostname, "/local/path/%s" %...
~
~
ページ名: