Quitada ブログ HAX

Hatena Blog でも Quitada ブログ

pdsh インストール

ネットワークで接続された複数の Linux ノードがあり、クラスタ構成で接続されている場合、全ノードに同じような処理を行いたい場合があります。たとえば、どっかの共有ディスクを NFS マウントしたりとか。これを、ひとつひとつ手でやってたら大変なんで、コマンド一発で一括して並列実行したいと思いますよね。ということで、そういったことを行える pdsh をインストールしてみました。

ターゲット OS は、CentOS 5.x あたりです。まずインストールということで、お約束のおまじないを実行。

# yum install pdsh

あー、駄目だ。インストールされません。標準のリポジトリには登録されていないようです。なので、こことかからダウンロード。今回は、src.rpm から挑戦してみました(pdsh-2.18-1.src.rpm とか)。早速、src.rpm をインストール。

# rpm -ivh pdsh-2.18-1.src.rpm

インストール完了。で、以下の spec ファイルができる。

/usr/src/redhat/SPECS/pdsh.spec

次に、rpm ファイルをビルドしてみる。

# cd /usr/src/redhat/SPECS
# rpmbuild -ba pdsh.spec

で GO と思ったら、rpmbuild がないですよ。ぐはぁ。なんで、おまじない。

# yum install rpm-build

#なんでかしりませんが、rpm と build の間にハイフンがいるよ。

rpmbuild を yum でインストールした後も、ncurses が無い! gcc が無い!だのなんだの言われますが、適宜 yum でインストール。というか、どうなってんだ<オレの Linux 環境。そんなこんなで、rpmbuild に成功すると、以下の様なフォルダに rpm がいくつかできる

/usr/src/redhat/RPMS/x86_64

とりあえず、以下のような rpm ファイルができあがりました。

pdsh-2.18-1.x86_64.rpm
pdsh-mod-netgroup-2.18-1.x86_64.rpm
pdsh-mod-dshgroup-2.18-1.x86_64.rpm
pdsh-rcmd-exec-2.18-1.x86_64.rpm
pdsh-mod-machines-2.18-1.x86_64.rpm
pdsh-rcmd-ssh-2.18-1.x86_64.rpm

で、インストールですよ。

# cd /usr/src/redhat/RPMS/x86_64
# rpm -ivh *.rpm

インストール完了したら動作確認。たとえば、対象ホスト名が、host001〜host999 とか連番になっていて、各ホストで ls を実行したい!という場合は、

# pdsh -l root -R ssh -w host[001-999] ls

でいけますよ(-l が実行ユーザー、-R sshssh 方式でリモート実行、-w が実行するホストで、host001 から host999 まで実行するといったイメージ)。 べたなサンプルスクリプトを作成。

#! /bin/sh
pdsh -l root -R ssh -w host[001-999] mkdir /shared
pdsh -l root -R ssh -w host[001-999] cp -p /etc/fstab /etc/fstab20091117
pdsh -l root -R ssh -w host[001-999] "echo '#20091117 quitada' >> /etc/fstab"
pdsh -l root -R ssh -w host[001-999] "echo 'fileserver01:/shared /shared nfs defaults 0 0' >> /etc/fstab"
pdsh -l root -R ssh -w host[001-999] mount /shared

host001〜host999 まで、共有ファイルサーバの fileserver01 の /shared を一括マウントするようなサンプルだよ。 でわ〜。