Fabric をPythonから呼び出す
Fabricをライブラリとして使う例をメモしておく。 理由はネットで引くと大抵、ツールとして使われていて公式ドキュメントを読まないと誤解しがちなため。
fabfile.py
を書いてfab
コマンドとして使う場合が多いけれどfab
コマンドだとトップレベルがタスクのため対象ホストの数だけ実行されてしまう。
例えばシステムの負荷検証を考えてみると、全体のタスクは1回だが一部に複数ホストに横断したタスクがある。 このような状況ではPythonで全体タスクを記述し複数ホストに横断する共通作業をFabric に任せるという使い方が便利。
- Fabric
-
システム管理・デプロイタスクの効率化の為のPythonライブラリおよびツール
サンプルコード
試しに以下のプログラムを書いてみる。
|
|
上記の実行結果は下の様になる。
|
|
タスクを表現した実行可能オブジェクトをfabric.tasks.execute
に渡せば
Fabricのタスクとして実行される。
Fabricのタスクはホスト毎に1回実行されるため、
上記の様に引き数で渡したりまたはwith settings():
などコンテキストの指定を行なう事で
env.hosts
, env.roles
, env.exculude_hosts
の値を定めておく必要がある。