Nutanixのクラスタ内のすべてのホストに同じ操作をする

Pocket

こんにちは。クララの吉村です。

今日はクラスタ内のすべてのホストに同じ操作をしたいときの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 はとても便利ですが、全てのホストに同時に実行するコマンドですので、操作する時には注意して利用しましょう。

おすすめ