LoginSignup
0
0

More than 5 years have passed since last update.

knife sshでホスト名リストを使用してコマンドを流した件

Last updated at Posted at 2018-06-22

今までの無駄作業

例えば以下のようなサーバー郡があるとする。

[nkym@localhost ~]$ knife node list
server001.test.net
server002.test.net
server003.test.net
server004.test.net
server005.test.net
server006.test.net
.
.
.

全てのサーバにknife sshを使用してコマンドを流したい時は、以下のようにすると思う。

[nkym@localhost ~]$ knife ssh "name:*" "hostname"
xxx.xxx.xxx.xxx server001.test.net
xxx.xxx.xxx.xxx server002.test.net
xxx.xxx.xxx.xxx server003.test.net
xxx.xxx.xxx.xxx server004.test.net
xxx.xxx.xxx.xxx server005.test.net
xxx.xxx.xxx.xxx server006.test.net
.
.
.

ただ、特定のサーバのみにコマンドを流したい場合など、ホスト名には*以外の正規表現が使用できなそうなので
無知な私はそのたびにリストを取得してknife sshを実行してくれるスクリプトを書いていた。

便利なオプション、その名は-m

公式ドキュメント( https://docs.chef.io/knife_ssh.html )を見ると、

-m, --manual-list
  Define a search query as a space-separated list of servers.
  If there is more than one item in the list,
  put quotes around the entire list. For example: --manual-list "server01 server02 server03"

「・・・リストできるやん(´・ω・`)」

使い方

公式に記載されている通り、スペース区切りでホスト名を書くとそれぞれにコマンドを流してくれる。

[nkym@localhost ~]$ knife ssh -m "server001.test.net server002.test.net server003.test.net" "hostname"
xxx.xxx.xxx.xxx server001.test.net
xxx.xxx.xxx.xxx server002.test.net
xxx.xxx.xxx.xxx server003.test.net

リストを読み込む

テキストファイルなどにホスト名を記載して、それを読み込むことで奇数番号のみなど自分が実行したいサーバ郡に対してコマンド1つでコマンドを流すことができる。

[nkym@localhost ~]$ cat server_list.txt
server001.test.net
server003.test.net
server005.test.net
server007.test.net
server009.test.net
.
.
.
[nkym@localhost ~]$ knife ssh -m "$(cat server_list.txt)" "hostname"
xxx.xxx.xxx.xxx server001.test.net
xxx.xxx.xxx.xxx server003.test.net
xxx.xxx.xxx.xxx server005.test.net
xxx.xxx.xxx.xxx server007.test.net
xxx.xxx.xxx.xxx server009.test.net
.
.
.

まとめ

knife sshの-mオプションを使用することで、特定のサーバのみにコマンドを流し込むことができる。
これによりサーバリストを動的に作成するスクリプトを作って、そのサーバリストを使用してknife sshすればもっと楽にレシピ適用とかできそう。

もっと早くに気づきたかった。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0