双六工場日誌

平凡な日常を淡々と綴ります。

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" のような形式で実行対象ホストを指定することができます。