以前、ブログに書いて以来、活用している
pssh
とpscp
なんですが、付属コマンドのpslurp
についてはすっかり忘れて全く利用していなかったんですが、同僚の刺身さんが結構活用しているというのを聞いて、改めて使ってみると大変便利!環境はSL6.1です。
pslurpの使いどころ
- 複数のサーバから
access.log
などのログ、my.cnf
といった設定ファイルなどの同名ファイルを持ってくる場合- DNSラウンドロビンや、ロードバランサを利用していてアクセスログが分散している場合
通常何も考えずscpとかで持ってくるとファイルが上書きされてしまうので、ホスト毎にファイルを分けて管理したい場合にpslurpが活躍します。
pipを利用してpsshの導入
2012年なんで
easy_install
ではなく、pip
を利用して導入。
1 sudo pip install pssh接続先のサーバリストの作成
db_server.txt
とかで下記のようなファイルを用意。各ホストには鍵が通っている必要があります。
12345678910 mysql0.glidenote.lanmysql1.glidenote.lanmysql2.glidenote.lanmysql3.glidenote.lanmysql4.glidenote.lanmysql5.glidenote.lanmysql6.glidenote.lanmysql7.glidenote.lanmysql8.glidenote.lanmysql9.glidenote.lanファイルの一斉取得
下記のようなコマンドでファイルを一斉に取得
12 sudo pslurp -h db_server.txt /etc/my.cnf .sudo pslurp -h db_server.txt /var/log/secure .下記のようにホスト毎にディレクトリが作られて、ファイルが収納される。
123456789101112131415161718192021222324252627282930313233 [akira@manage] $ tree.|-- db_server.txt|-- mysql0.glidenote.lan| |-- my.cnf| `-- secure|-- mysql1.glidenote.lan| |-- my.cnf| `-- secure|-- mysql2.glidenote.lan| |-- my.cnf| `-- secure|-- mysql3.glidenote.lan| |-- my.cnf| `-- secure|-- mysql4.glidenote.lan| |-- my.cnf| `-- secure|-- mysql5.glidenote.lan| |-- my.cnf| `-- secure|-- mysql6.glidenote.lan| |-- my.cnf| `-- secure|-- mysql7.glidenote.lan| |-- my.cnf| `-- secure|-- mysql8.glidenote.lan| |-- my.cnf| `-- secure`-- mysql9.glidenote.lan |-- my.cnf `-- secure同じようなことをシェルスクリプトでやろうとするとディレクトリ作ったりとか下記のような感じで面倒くさい。
12345678910111213141516171819202122232425262728 #!/bin/shSERVERS=“mysql0.glidenote.lanmysql1.glidenote.lanmysql2.glidenote.lanmysql3.glidenote.lanmysql4.glidenote.lanmysql5.glidenote.lanmysql6.glidenote.lanmysql7.glidenote.lanmysql8.glidenote.lanmysql9.glidenote.lan“FILES=“/var/log/secure/etc/my.cnf“for server in ${SERVERS};domkdir ${server}for file in ${FILES}doscp ${server}:${file} ${server}/donedone<pre><code>#!/bin/shSERVERS="mysql0.glidenote.lanmysql1.glidenote.lanmysql2.glidenote.lanmysql3.glidenote.lanmysql4.glidenote.lanmysql5.glidenote.lanmysql6.glidenote.lanmysql7.glidenote.lanmysql8.glidenote.lanmysql9.glidenote.lan"FILES="/var/log/secure/etc/my.cnf"for server in ${SERVERS};do mkdir ${server} for file in ${FILES} do scp ${server}:${file} ${server}/ donedone</code></pre>
特定の日時のログを一括で確認したい場合や、サーバ全台の設定ファイルの比較とかに活用出来ます。
ファイルのデプロイに関してはpuppetやwebistranoなどで管理が出来ていますが、ファイルの一斉収集についてはpslurpが良い感じですね。
複数のサーバから一斉にファイルを収集するのにpslurpが便利 – Glide Note – グライドノート
コメントを残す