Fabricを試してみた
Fabric はシェルスクリプトを強化するPython製ライブラリ&ツールだ。
便利な点は
- 複数ホストへの並列実行
- Pythonでサポートされるデータ構造を利用出来る
- シェルより変数などが扱い易い
with
構文でコマンドの実行時コンテキストが明確になる- 環境の構築作業が関数(
sudo()
,local()
, etc)で提供され明確になる
などがある。類似ツールに Cinnamon (Perl製) がある。
インストール
pipでインストールする。v1.7
がインストールされた。pythonは2.5以上が必要。
利用例: Doxygenの解析結果を公開する
以前LuaソースコードをDoxygenで解析し結果を公開した。 その作業をFabricで自動で行う様にしてみた。 作業ディレクトリに以下の内容で [fabfile.py]{role=“file”} を作成した。
|
|
上記を準備し以下のコマンドを叩く。
|
|
引数を渡すにはコマンド名の後ろに:
を使用する。引数が複数ある場合は,
で区切る。
今回の例では渡した値がデフォルト値なので書く必要はない。
これでLua
をダウンロードしてDoxygen
を実行しrsyncで同期するまでが実行される。
put_garage()
を使えばサーバーを利用しないスクリプトはgarage
配下として直ぐに公開できる。
単純なので手軽に始められた良さそう。
呼び出している関数の説明
Fabric-1.7を読む。
local()
-
ローカルホストでシェルコマンドを実行する
lcd()
-
- ローカルホストのカレントディレクトリを変更する
with
構文に対応していてwith
文から抜けるとカレントディレクトリは元に戻る- (リモートホストのカレントディレクトリを変更したい場合
cd()
関数がある)
project.rsync_project()
-
対象ディレクトリを
rsync()
で同期する
他にもリモートホストでシェルコマンド実行するsudo()
, run()
やファイルを送信するput()
など色々ある。