以前、ブログに書いて以来、活用しているpssh
とpscp
なんですが、
付属コマンドのpslurp
についてはすっかり忘れて全く利用していなかったんですが、
同僚の刺身さんが結構活用しているというのを聞いて、改めて使ってみると大変便利!
環境はSL6.1です。
pslurpの使いどころ
- 複数のサーバから
access.log
などのログ、my.cnf
といった設定ファイルなどの同名ファイルを持ってくる場合
- DNSラウンドロビンや、ロードバランサを利用していてアクセスログが分散している場合
通常何も考えずscpとかで持ってくるとファイルが上書きされてしまうので、
ホスト毎にファイルを分けて管理したい場合にpslurpが活躍します。
pipを利用してpsshの導入
2012年なんでeasy_install
ではなく、pip
を利用して導入。
接続先のサーバリストの作成
db_server.txt
とかで下記のようなファイルを用意。
各ホストには鍵が通っている必要があります。
1
2
3
4
5
6
7
8
9
10
| mysql0.glidenote.lan
mysql1.glidenote.lan
mysql2.glidenote.lan
mysql3.glidenote.lan
mysql4.glidenote.lan
mysql5.glidenote.lan
mysql6.glidenote.lan
mysql7.glidenote.lan
mysql8.glidenote.lan
mysql9.glidenote.lan
|
ファイルの一斉取得
下記のようなコマンドでファイルを一斉に取得
1
2
| sudo pslurp -h db_server.txt /etc/my.cnf .
sudo pslurp -h db_server.txt /var/log/secure .
|
下記のようにホスト毎にディレクトリが作られて、ファイルが収納される。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| [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
|
同じようなことをシェルスクリプトでやろうとするとディレクトリ作ったりとか
下記のような感じで面倒くさい。
特定の日時のログを一括で確認したい場合や、サーバ全台の設定ファイルの比較とかに活用出来ます。
ファイルのデプロイに関してはpuppetやwebistranoなどで管理が出来ていますが、
ファイルの一斉収集についてはpslurpが良い感じですね。