Python fabric - 管理タスクの実行

アプリケーションのデプロイやシステム管理タスクを行うツールとしてfabicモジュールをご紹介します。

fabicモジュールを使うと、ローカルやリモートでのコマンド実行や、ファイルのアップロード・ダウンロードが簡単にできるようになります。

インストール

次のコマンドを実行しfabicをインストールします。

1
2
3
4
# インストール
pip install fabric3


コード

fabfile.pyを作成し、次のようなコードを書きます。ファイル名は必ずfabfile.pyにする必要があります。

4行目から7行目は環境に応じて設定して下さい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from fabric.api import *

# 接続情報を設定
env.hosts = ['IPアドレス']
env.user = 'ユーザ名'
env.password = 'パスワード'
env.port = ポート番号

# タスクとなる関数を定義
# この関数名がfabコマンドを実行する際の引数になります。
def task1():
# ローカルでのコマンド実行
res = local('ipconfig')
print('res[{}]'.format(res)) # なぜか結果が格納されない

# コマンド実行
res = run('crontab -l')
print('res[{}]'.format(res))

# sudoでコマンド実行
res = sudo('crontab -l')
print('res[{}]'.format(res))

# ディレクトリを移動してコマンド実行
with cd('/tmp/'):
res = run('pwd')
print('res[{}]'.format(res))

# ファイルを転送する(ローカル → サーバ)
# *等を使ったパターン指定も可能
put('test.txt', '/var/samba/.')

# ファイルを受信する(サーバ → ローカル)
# *等を使ったパターン指定も可能
get('/var/samba/test.json', '.')

一通りの基本操作は上記のコードでカバーできていると思います。

コマンドの実行もファイル転送もとてもシンプルに書くことができます。

実行

動作を確認する場合は、fabコマンドにfabfile.py内の関数名を指定して実行します。

1
fab task1