Fabric で fabfile.py のコメントを使ったタスクの簡易Usage
最近、Fabric関連のエントリが流行っているようなので、ネタかぶりしない範囲で小ネタをちょっと書いて見ます。
Fabricは、単純にタスクを実行するだけはなく、実行するタスクに引数を渡すことができます。
以下は引数の渡し方についてのPython製デプロイツール Fabricを初めて使う際に役立つTipsからの引用です。
タスクに引数を渡したい場合がありますよね。 解決策 $ fab hoge:fuga でhoge関数の第一引数に’fuga’を渡すことができます。 $ fab hello:name=Jeff とかね。 最初に提示したチュートリアル(Overview and Tutorial)に載っているから詳しくはそっち参考にしてね。
この引数指定機能は非常に便利なのですが、時間が経つと各タスクにどういう引数があったのか忘れてしまい、都度ソースを確認してしまうことがしばしば…。
それでなんとかできないかと思っていたのですが、あるときにタスクにコメントを書いてみたところ、これが fab --list の出力結果に表示される機能があることを発見。この機能を使うと fab --list で表示できる簡易マニュアルを書くことができます。
そこにタスクの引数を書いておけば、簡易Usage機能のように使えます。
具体的にはこんな感じ。*1
def deploy_vmwaretools(): """ fab deploy_vmwaretools:host=192.168.1.1 """ archive_name = 'VMwareTools-9.0.0-782409.tar.gz' put(archive_name, '/tmp') (いろいろ作業) def initial_setting(type='ubuntu12.04'): """ fab initial_setting:host=192.168.1.1,type=ubuntu12.04 """ set_vim() (いろいろ作業)
$ fab --list Available commands: deploy_vmwaretools fab deploy_vmwaretools:host=192.168.1.1 initial_setting fab initial_setting:host=192.168.1.1,type=ubuntu12.04 restart (以下略)
ほかにもコメントの使い方はありそうですが、これで僕のような忘れっぽい人は少し幸せになれると思います。
*1: host, hostsは特別な引数で host=host1、hosts="host1;host2" のような形式で実行対象ホストを指定することができます。