2014年5月15日木曜日

fabricやってみた

■環境
CentOS 5.10
Python 2.6.8
easy_install 0.6.45

easy_installのインストール方法
CentOS5系でのpythonのアップデート方法

■fabricインストール
easy_install fabric

■設定ファイル作成
touch fabfile.py
from fabric.api import run

def current_ls():
  run("ls")

■実行
fab -H 192.168.0.1,host1,host2 current_ls

上記の場合fabコマンドを実行したユーザの「192.168.0.1」でのログインパスワードを聞かれます
「host1」「host2」で同じパスワードを使用している場合は続けて聞かれませんが、パスワードが違う場合は再度パスワードの入力を求められます
[root@fabhost fabric]# fab -H 192.168.0.1,host1,host2 current_ls
[192.168.0.1] Executing task 'current_ls'
[192.168.0.1] run: ls
[192.168.0.1] Login password for 'root':

■設定ファイル内に認証情報を記載する方法
from fabric.api import run, env

def current_ls():
  env.password = 'hogehoge'
  run("ls")

ポイントは「env」をimportするのと「env.password」でパスワードを記載するところ
current_ls を実行した場合はenv.passwordで設定したパスワードでまずSSH認証を試みます
もし、認証できない場合は先ほどのようにパスワードを入力するように促されます

envには他にも鍵情報やユーザを設定することもできます
http://docs.fabfile.org/en/latest/usage/env.html

基本的な動作は以上で完了です
これだけで複数のサーバに同時にSSH実行することができるのでだいぶオペレーションが楽になります

■Tips
sudoをimportしてrunの代わりにsudoとするとrootユーザで実行できるようになります
env.passwordにsudoのパスワードを入力しておけば実行時に省略できます、記載しなかった場合は入力を求められます

「--」を使用すると指定したコマンドをfabfile.pyを書かずとも実行できます、以下のような感じです
fab -H 192.168.0.1 -- ls

0 件のコメント:

コメントを投稿