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()など色々ある。