tentakel
ネタ元
BSD Hacks ―プロが使うテクニック & ツール 100選
- 作者: Dru Lavigne,桃井康成,林秀幸
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/03/29
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 47回
- この商品を含むブログ (35件) を見る
複数のサーバを管理している場合,全サーバに同じタスクを入れることはよくある.毎回各サーバに ssh で潜って,毎回同じコマンドを入力するか? コレはかなり面倒だ.しかも繰り返し作業は慣れによるオペミスを招きやすい.ということでコマンドを分散実行するのだ.
Environment
ホストは3台ある.2台をサーバ,1台を管理用端末としよう.
- Servers
- sv-win : Windows XP
- 今回は Cygwin/sshd を起動してある.Cygwin/sshd については コンピュータ系blog: Cygwinを使ってSSHサーバを作成する を参照.
- sv-bsd : FreeBSD 6.0-RELEASE
- sv-win : Windows XP
- Management Host
- mgmt : Fedora Core 4
- 実際には sv-win 上で coLinux を使って動かしているホストだ.
- mgmt : Fedora Core 4
Install
FC4 で tentakelをインストールする.Official Site からダウンロードをたどっていくと
へたどり着くはず.Fedora 向けのは FC3 までのバイナリがあったので試しにそれ(tentakel-2.2-1.1.fc3.rf.noarch.rpm)を入れてみたのだが,python module のインストールパスが python2.3 向けに作ってあったのでコケる(FC4 は python2.4).SRPM から rebuild するのがよさそうだ.
Experiment
設定ファイルはサンプル (/usr/share/doc/tentakel-2.2/tentakel.conf.examp) を元にこんな感じにしておく.
$ cat ~/.tentakel/tentakel.conf set ssh_path="/usr/bin/ssh" set method="ssh" set format="%d\n%o\n" group servers(user="username") +sv-win +sv-bsd group local () +127.0.0.1
さて,実行してみよう.ssh-agent を動かしてパスワードを省略できる状態にしておくとこんな感じで動く.
$ tentakel -g servers "uname -a" sv-bsd FreeBSD sv-bsd.example.jp 6.0-RELEASE FreeBSD 6.0-RELEASE #0: Thu Nov 3 09:36:13 UTC 2005 root@x64.samsco.home:/usr/obj/usr/src/sys/GENERIC i386 sv-win CYGWIN_NT-5.1 sv-win 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin
二つのサーバで同時にコマンドが実行できているのがわかる.今回は全然別のプラットフォームなのでアレなのだが,実際仕事で使う場合はある程度同じ環境の機械を多数扱うことになるはず.そうなるとこのように分散実行できるというのはとても作業効率が上がるはずだ.
対話モードでもやってみよう.
$ tentakel tentakel: unknown group: 'default' interactive mode tentakel(default)> use servers tentakel(servers)> exec mount sv-bsd /dev/ad0s1a on / (ufs, local) devfs on /dev (devfs, local) /dev/ad0s1e on /tmp (ufs, local, soft-updates) /dev/ad0s1f on /usr (ufs, local, soft-updates) /dev/ad0s1d on /var (ufs, local, soft-updates) devfs on /var/named/dev (devfs, local) sv-win C:\cygwin\bin on /usr/bin type system (binmode) C:\cygwin\lib on /usr/lib type system (binmode) C:\cygwin on / type system (binmode) c: on /c type system (binmode,noumount) d: on /d type system (binmode,noumount) e: on /e type system (binmode,noumount) f: on /f type system (binmode,noumount) tentakel(servers)> quit $
default グループを消してしまったものだから最初に unknown といわれてしまっている.
ちなみに,ssh公開鍵認証 + ssh-agent を使っていない場合はサーバにログインするたびにパスワード(もしくはパスフレーズ)の入力を要求されてとても疲れる.ssh 回りの設定をしないと楽しさ半減といったところだろうか.