Python製のCapistrano的なツールであるFabric を少しだけ使ってみた。けっこう機能が多いので自分が使いそうなところをまとめておく。バージョンは1.7.0。
Fabricの基本的な機能
下記で任意のコマンドが実行可能
$ fab -H localhost -- uptime
またはfabfile.pyにタスクを書く
from fabric.api import run def uptime(): run('uptime')
$ fab -H host1,host2 uptime
$ fab --list
でfabfile.pyに定義されているタスク一覧を表示する。
ホストの定義はenv.hosts または env.roledefsで。
env.hosts = [ 'host1', 'host2' ] # or env.roledefs = { 'web': ['host1', 'host2'] }
並列実行
fab -P -H host1,host2,host3 -- uptime
たくさんのホストにコマンドを実行する時にpasswordをきかれまくる場合
最初にパスワードを入力する
$ fab -I -H host1,host2,host3 -- uptime
引数にパスワードを渡しちゃう(セキュリティ的にオススメできない)
$ fab -p <password> -I -H host1,host2,host3 -- uptime
taskに引数を渡す
$ fab create_user:username=oinume
途中でエラーが発生しても処理を継続させる
-wで失敗しても処理を継続。デフォルトは失敗したらその時点でAbortする
fabfile.py の中で
with warn_only(): pass
でも可
よくあるユースケース
リモートのサーバにコマンドを発行する
$ fab -H host1,host2,host3 -- mpstat -P ALL 1 1
サーバにファイルをアップロードする
from fabric.api import put put('authorized_keys', '.ssh/authorized_keys')
rsyncでサーバにファイルをアップロードしたい
from fabric.contrib import project project.rsync_project(local_dir='authorized_keys', remote_dir='.ssh/authorized_keys')
rsyncはローカルマシンから rsync コマンドを実行するだけのようだ。
rsyncでサーバからファイルをダウンロードする
- rsync_project()の引数にupload=Falseを指定する
- サーバが複数ある場合はダウンロード先の /tmp/my.cnf が上書きされちゃうので、ホスト名をサフィックスにつけている。env.host 現在実行しているホスト名が取れる。
from fabric.api import env from fabric.contrib import project project.rsync_project(remote_dir='/etc/my.cnf', local_dir='/tmp/my.cnf.' + env.host, upload=False)
Fabricのその他の豆知識
- colorize-errors: エラーが発生したら赤字になる
- hide=LEVELS: 出力する情報を制限できる。例えばhide=stdout,stderr,running と指定すると一切の情報が出なくなる
- stdout: コマンド実行時の標準出力
- stderr: コマンド実行時のエラー出力
- running: 実行時の出力
- -x HOSTS: 対象外にしたいホスト名を指定
- -i PATH: SSHの秘密鍵を指定できる
パーフェクトPython (PERFECT SERIES 5)
posted withamazlet
at 13.09.13
Pythonサポーターズ
技術評論社
売り上げランキング: 12,569
技術評論社
売り上げランキング: 12,569
2 件のコメント:
The information you have posted is very useful. The sites you have referred was good. Thanks for sharing
RegardS:chiffon fabrics
Emperor Casino Online Casino Review | $500 Free + 100
Emperor Casino Casino is the most well known and trusted 온카지노 online casino offering a variety of 제왕카지노 slots and other popular games. It is 우리카지노 쿠폰 owned by the same owner
コメントを投稿