うさぎ好きエンジニアの備忘録

うさぎたちに日々癒されているエンジニアが業務で直面したもの & 個人的な学習メモを残していきます。

fabric2 検証

Python3 + fabric2を試すために環境構築した際の備忘録。

インストール

Pythonのバージョンは3.7.0を使用。

Users who are migrating from Fabric 1 to Fabric 2+ may find it useful to have both versions installed side-by-side. The easiest way to do this is to use the handyfabric2PyPI entry: $ pip install fabric2

とのことなので、fabric1系と2系を共存させるために fabric2 をインストールする。

$ python --version
3.7.0
$ pip install fabric2
$ pip freeze | grep fabric
fabric2==2.4.0

バージョン確認してみたが1系を実行している模様。。

$ fab -V
Fabric 1.14.1
Paramiko 2.4.2

$ which fab
/usr/bin/fab

なんとなく which fab2 とかしてみたら見つかった。

$ which fab2
~/.pyenv/shims/fab2

$ fab2 -V
Fabric 2.4.0
Paramiko 2.4.2
Invoke 1.2.0

タスクの作成

タスクを定義する際は @task アノテーションを使用する (ここら辺はv1と同じ)。 @taskfabric2 に含まれているので from fabric2 import task で読み込む。

from fabric2 import task

@task
def hostname(c):
    """ホスト名を出力します"""
    c.run('hostname')

タスク一覧の表示

これに関してはv1と同様のコマンドでOK。

$ fab2 -l
Available tasks:
  hostname   ホスト名を出力します。

タスクの実行

これもv1と同じでOK。

$ fab2 -H kazono01.sample.co.jp hostname
kazono01.sample.co.jp

コマンドの実行結果を出力しない

今までは quiet だったが、fabric v2からは hide を使う。

@task
def hostname(c):
    """ホスト名を出力します"""
    c.run('hostname', hide=True)