とよぶ

歌いながらコード書いてます

【小ネタ】Fabricのlocalメソッドの出力を変数に入れる

忘備録。

現象

特定のタスクを特定のホストマシン以外で実行させないように、こんな処理を入れて見てた。

if not local('hostname') == 'host-wap01':
    abort('Except for host-wap01, you cannot execute this task!')

確実にlocalの出力としてはhost-wap01と出力されているのだが、条件が必ずFalseになってしまう。

解決

localメソッドだと標準出力を返してくれないので、引数を追加する。

if not local('hostname', capture=True) == 'host-wap01':
    abort('Except for host-wap01, you cannot execute this task!')

これでlocalメソッドの返り値としてhostnameコマンドの結果が返るので、ホスト名'host-wap01'で実行した場合に条件がTrueとなる。