【小ネタ】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となる。