読者です 読者をやめる 読者になる 読者になる

NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix CVM にある allssh の正体。

Nutanix の CVM のコマンドラインで、allssh というものが使われていることがあり、これは、すべての CVM にまとめて SSH でコマンド実行するもののようです。
CVM に設定コマンドを投入するときに使用されていることがあります。

今回の Nutanix CE の CVM のバージョンです。

nutanix@NTNX-a97be8ba-A-CVM:192.168.1.192:~$ cat /etc/nutanix/svm-version
4.6r28

ためしに allssh で virsh list を実行した様子です。

nutanix@NTNX-a97be8ba-A-CVM:192.168.1.192:~$ allssh virsh list
Executing virsh list on the cluster
================== 192.168.1.191 =================
 Id    Name                           State
----------------------------------------------------
 2     NTNX-99f5d66a-A-CVM            running

Connection to 192.168.1.191 closed.
================== 192.168.1.192 =================
 Id    Name                           State
----------------------------------------------------
 2     NTNX-a97be8ba-A-CVM            running

Connection to 192.168.1.192 closed.
================== 192.168.1.193 =================
 Id    Name                           State
----------------------------------------------------
 2     NTNX-29660487-A-CVM            running

Connection to 192.168.1.193 closed.

 

これは allssh という実行ファイルがあるわけではなく、alias が設定された、bash のファンクションのようです。

nutanix@NTNX-a97be8ba-A-CVM:192.168.1.192:~$ which allssh
alias allssh='__allssh'

 

ファンクションの内容です。svmips という CVM の IP アドレスを取得するコマンド(Python スクリプト)を使ったりしています。

nutanix@NTNX-a97be8ba-A-CVM:192.168.1.192:~$ declare -f __allssh
__allssh ()
{
    CMDS=$@;
    OPTS="-t -o LogLevel=ERROR -o StrictHostKeyChecking=no";
    echo "Executing $CMDS on the cluster";
    for i in `svmips`;
    do
        echo "================== "$i" =================";
        /usr/bin/ssh $OPTS $i "source /etc/profile;$@";
    done
}

 

プロファイル設定を /etc/profile.d/nutanix_env.sh からたどっていくと、設定は /usr/local/nutanix/profile.d/bashrc に含まれているようです。

ちなみに、他にも下記のような bash エイリアスが設定されています。

alias cs='cluster status'
alias gs='genesis status'

以上。