Nutanixのクラスタ内のすべてのホストに同じ操作をする
こんにちは。クララの吉村です。
今日はクラスタ内のすべてのホストに同じ操作をしたいときのTipsです。
先に結論をいうと、Nutanixが用意している allssh コマンドを利用します。
allssh とは
allssh はその名との通り、すべてのホストにsshをするコマンドです。
Nutanixのマニュアルを読むと、クラスタ全体の設定変更を行う際や、クラスタ全体のヘルスチェックをする際に、Nutanixのシステム内部で利用されるようです。
そしてこのコマンドの素晴らしいところは自由に使えるので、bash操作を全てのホストに行いたいときに都合が良いです。
例えば、1台のホストのみ設定変更していても、CVMのVIPが他のホストに移動してしまったら、そのホストに再度設定変更しないといけません。
しかし allssh を使って全ホストに設定変更をしてしまえば、同じ労力で済むので楽できます。AOSをカスタマイズする時の参考にしてください。
全てのホストにソフトウェアをインストール
いきなりNutanixサポート対象外のことをやりますので、自己責任で行ってください。
前回 jq のインストール記事を書きましたが、全てのホストにまとめてインストールしちゃいましょう。
重要なことなので何度でも言いますが、AOS上での yum インストールはお勧めしません。何かしらソフトウェアインストールする場合には、既存システムに変更を加えない範囲での作業を行ってください。
[bash]
#allssh で全てのホストに、jqインストール、所有者変更、実行権限付与
$ allssh “sudo curl -o /usr/local/bin/jq -L https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 && sudo chown nutanix:nutanix /usr/local/bin/jq && sudo chmod +x /usr/local/bin/jq”
================== 10.0.11.2 =================
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 599 0 599 0 0 953 0 –:–:– –:–:– –:–:– 953
100 2956k 100 2956k 0 0 252k 0 0:00:11 0:00:11 –:–:– 528k
================== 10.0.11.3 =================
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 599 0 599 0 0 946 0 –:–:– –:–:– –:–:– 947
100 2956k 100 2956k 0 0 566k 0 0:00:05 0:00:05 –:–:– 688k
================== 10.0.11.4 =================
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 599 0 599 0 0 719 0 –:–:– –:–:– –:–:– 719
100 2956k 100 2956k 0 0 91627 0 0:00:33 0:00:33 –:–:– 103k
================== 10.0.11.5 =================
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 599 0 599 0 0 862 0 –:–:– –:–:– –:–:– 863
100 2956k 100 2956k 0 0 342k 0 0:00:08 0:00:08 –:–:– 559k
# インストールされたかを確認
$ allssh “ls -al /usr/local/bin/jq”
================== 10.0.11.2 =================
-rwxr–r–. 1 nutanix nutanix 3027945 Apr 3 13:05 /usr/local/bin/jq
================== 10.0.11.3 =================
-rwx——. 1 nutanix nutanix 3027945 Apr 3 13:05 /usr/local/bin/jq
================== 10.0.11.4 =================
-rwx——. 1 nutanix nutanix 3027945 Apr 3 13:05 /usr/local/bin/jq
================== 10.0.11.5 =================
-rwx——. 1 nutanix nutanix 3027945 Apr 3 13:06 /usr/local/bin/jq
[/bash]
大丈夫そうですね!
全てのホストにファイルをコピーする
1個のファイルを別のホストにもコピーしておきたい場合です。
前回の記事でfaviconを折角用意したのに、CVMのVIPが移動したらfaviconが戻ってました。
毎回設定するのは嫌なので、全台にコピーしておきましょう。
[bash]
# まずは前回設定したfaviconを探します
$ allssh “find /home/nutanix/prism/webapps/console/ -name claraLogo_favicon.ico”
================== 10.0.11.2 =================
/home/nutanix/prism/webapps/console/app/assets/images/favicon/claraLogo_favicon.ico
================== 10.0.11.3 =================
================== 10.0.11.4 =================
================== 10.0.11.5 =================
# 10.0.11.2 がfaviconを持ってました。
# 10.0.11.2 からすべてのサーバにコピーします
$ allssh “scp -p [email protected]:/home/nutanix/prism/webapps/console/app/assets/images/favicon/claraLogo_favicon.ico /home/nutanix/prism/webapps/console/app/assets/images/favicon”
================== 10.0.11.2 =================
FIPS mode initialized
Nutanix Controller VM
claraLogo_favicon.ico 100% 1522 1.5KB/s 00:00
================== 10.0.11.3 =================
FIPS mode initialized
Nutanix Controller VM
claraLogo_favicon.ico 100% 1522 1.5KB/s 00:00
================== 10.0.11.4 =================
FIPS mode initialized
Nutanix Controller VM
claraLogo_favicon.ico 100% 1522 1.5KB/s 00:00
================== 10.0.11.5 =================
FIPS mode initialized
Nutanix Controller VM
claraLogo_favicon.ico 100% 1522 1.5KB/s 00:00
# もう一度、faviconを確認すると、全てのホストが持ってます
$ allssh “find /home/nutanix/prism/webapps/console/ -name claraLogo_favicon.ico”
================== 10.0.11.2 =================
/home/nutanix/prism/webapps/console/app/assets/images/favicon/claraLogo_favicon.ico
================== 10.0.11.3 =================
/home/nutanix/prism/webapps/console/app/assets/images/favicon/claraLogo_favicon.ico
================== 10.0.11.4 =================
/home/nutanix/prism/webapps/console/app/assets/images/favicon/claraLogo_favicon.ico
================== 10.0.11.5 =================
/home/nutanix/prism/webapps/console/app/assets/images/favicon/claraLogo_favicon.ico
[/bash]
全てのホストのファイルを一括編集する
faviconをコピーしましたが、まだ index.html の編集をしていませんね。
それでは allssh を使って一括で編集しちゃいましょう。
[bash]
# index.html の設定を確認
# 10.0.11.2 だけコメントアウトされているのは気にしないでください。
allssh “grep -w ‘favicon.ico’ /home/nutanix/prism/webapps/console/index.html”
================== 10.0.11.2 =================
href=”app/assets/images/favicon/favicon.ico”> –>
================== 10.0.11.3 =================
href=”app/assets/images/favicon/favicon.ico”>
================== 10.0.11.4 =================
href=”app/assets/images/favicon/favicon.ico”>
================== 10.0.11.5 =================
href=”app/assets/images/favicon/favicon.ico”>
# 一括置換します
# grep で -l オプションでファイル名を出力して、xarge で sed に渡しています
$ allssh “grep -l ‘favicon.ico’ /home/nutanix/prism/webapps/console/index.html | xargs sed -i ‘s/favicon.ico/claraLogo_favicon.ico/g'”
================== 10.0.11.2 =================
================== 10.0.11.3 =================
================== 10.0.11.4 =================
================== 10.0.11.5 =================
# 確認したら、favicon.ico が claraLogo_favicon.ico に置換されています。
$ allssh “grep -w ‘favicon.ico’ /home/nutanix/prism/webapps/console/index.html”
================== 10.0.11.2 =================
================== 10.0.11.3 =================
================== 10.0.11.4 =================
================== 10.0.11.5 =================
$ allssh “grep -w ‘claraLogo_favicon.ico’ /home/nutanix/prism/webapps/console/index.html”
================== 10.0.11.2 =================
href=”app/assets/images/favicon/claraLogo_favicon.ico”> –>
================== 10.0.11.3 =================
href=”app/assets/images/favicon/claraLogo_favicon.ico”>
================== 10.0.11.4 =================
href=”app/assets/images/favicon/claraLogo_favicon.ico”>
================== 10.0.11.5 =================
href=”app/assets/images/favicon/claraLogo_favicon.ico”>
[/bash]
今回は以上です。
allssh はとても便利ですが、全てのホストに同時に実行するコマンドですので、操作する時には注意して利用しましょう。