Fabricインストールメモ
Hadoopのような複数台のマシンを相手にする作業だと一括でコマンド発行したいことがあります。
その際に各マシンにいちいちSSHでログインして作業するのは面倒です。
なのでその辺りを解決するツールが欲しくなります。
Hadoop徹底入門だとparallel-sshが紹介されています。
ただこれだとsudoがうまくいかないんですよね。
sudo: sorry, you must have a tty to run sudo
と言われます。
Google Code Archive - Long-term storage for Google Code Project Hosting.によれば-xオプションつけてsshの-tオプションを渡せば良いように見えますが、
pssh -h hostlist -O "StrictHostKeyChecking=no" -x -t -A -l ユーザ -i "sudo ..."
とやっても状況は同じです。
うまくいく方法があるかもしれないですが、これは置いといてFabricネタを書きます。これが今日のメイン。
FabricはPythonで作られたデプロイツールです。Rubyで作られたCapistranoとの対比であげられることが多いかも。
Fabricは1.3から並列実行できるようになりました。
http://docs.fabfile.org/en/1.3.3/usage/parallel.html
この機能はPython 2.6で追加されたmultiprocessingモジュールに依存しています。
なのでここではPython 2.6 + Fabric 1.3系のインストール方法をCentOS 5.6とWindows XPの両方で書きます。あ、Windowsの方はPython 2.7使います。バイナリ配布が2.7だったので。
まずCentOS5.6へのインストール方法です。
CentOS5系はPython 2.4系しか入っていないのでPython 2.6をインストールする必要があります。
EPEL追加
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm # vi /etc/yum.repos.d/epel.repo [epel] ... enabled=0 ...
python26とpython26-develのインストール
# yum install python26 python26-devel --enablerepo=epel
easy_install-2.6のインストール
# wget http://peak.telecommunity.com/dist/ez_setup.py # python26 ez_setup.py
pip-2.6のインストール
# easy_install-2.6 pip
fabricのインストール
# pip-2.6 install fabric
これでインストールは終了です。
fabfile.pyを以下のように用意します。
from fabric.api import run def host_type(): run('uname -s')
そして以下のように実行します。
$ fab -H localhost -u ユーザ -p パスワード host_type
並列実行の場合は以下のように-Pオプションを指定して実行します。
fab -H hostA,hostB -u ユーザ -p パスワード -P host_type
次はWindows XPの場合
Download Python | Python.orgからpython-2.7.2.msiをダウンロードしてPython 2.7をインストールします。
setuptools · PyPIからsetuptools-0.6c11.win32-py2.7.exeをダウンロードしてeasy_installをインストールします。
C:\Python27とC:\Python27\Scriptsを環境変数PATHに追加してpipをインストール後にFabricをインストールします。
easy_install pip pip install fabric
がしかし、
building 'Crypto.Random.OSRNG.winrandom' extension warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath. error: Unable to find vcvarsall.bat
と言われます。
どうもPyCryptoが必要らしいのでインストールします。
The Voidspace Python Modulesからpycrypto-2.3.win32-py2.7.zipをダウンロードしてインストールします。
そして
fab -H localhost -u ユーザ -p パスワード host_type
と実行すると下記のエラーになります。
ImportError: No module named win32api
よくわからんですが、どうもpywin32が必要らしいです。
Python for Windows Extensions - Browse /pywin32/Build216 at SourceForge.netからpywin32-216.win32-py2.7.exeをダウンロードしてインストールします。
いじょ。