Nutanixのクラスタ内のすべてのホストに同じ操作をする
こんにちは。クララの吉村です。
今日はクラスタ内のすべてのホストに同じ操作をしたいときのTipsです。
先に結論をいうと、Nutanixが用意している allssh コマンドを利用します。
allssh とは
allssh はその名との通り、すべてのホストにsshをするコマンドです。
Nutanixのマニュアルを読むと、クラスタ全体の設定変更を行う際や、クラスタ全体のヘルスチェックをする際に、Nutanixのシステム内部で利用されるようです。
そしてこのコマンドの素晴らしいところは自由に使えるので、bash操作を全てのホストに行いたいときに都合が良いです。
例えば、1台のホストのみ設定変更していても、CVMのVIPが他のホストに移動してしまったら、そのホストに再度設定変更しないといけません。
しかし allssh を使って全ホストに設定変更をしてしまえば、同じ労力で済むので楽できます。AOSをカスタマイズする時の参考にしてください。
全てのホストにソフトウェアをインストール
いきなりNutanixサポート対象外のことをやりますので、自己責任で行ってください。
前回 jq のインストール記事を書きましたが、全てのホストにまとめてインストールしちゃいましょう。
重要なことなので何度でも言いますが、AOS上での yum インストールはお勧めしません。何かしらソフトウェアインストールする場合には、既存システムに変更を加えない範囲での作業を行ってください。
#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
大丈夫そうですね!
全てのホストにファイルをコピーする
1個のファイルを別のホストにもコピーしておきたい場合です。
前回の記事でfaviconを折角用意したのに、CVMのVIPが移動したらfaviconが戻ってました。
毎回設定するのは嫌なので、全台にコピーしておきましょう。
# まずは前回設定した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
全てのホストのファイルを一括編集する
faviconをコピーしましたが、まだ index.html の編集をしていませんね。
それでは allssh を使って一括で編集しちゃいましょう。
# 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">
今回は以上です。
allssh はとても便利ですが、全てのホストに同時に実行するコマンドですので、操作する時には注意して利用しましょう。