らくがきちょう

なんとなく

Linux/macOS + Python 環境で Cisco ACI 用の vCenter プラグインをインストールする

vCenter に Cisco ACI 用のプラグインをインストールする手順は ACI How-toACI vCenter Plugin に記載されています。 この手順では下記のうち、「1.」を前提にしていますが、今回は「2.」の Linux + Python でインストールする手順をメモしておきます。 尚、今回は CentOS7.5 + Python 2.7.15 を使いました。

  1. Windows + PowerShell 環境でインストールする
  2. Linux/macOS + Python 環境でインストールする

ACI 上のプラグインは DL 不要 (Python スクリプトが無い為)

ACI 用の vCenter プラグインは ACI 自体の URL「https://ADDRESS/vcplugin/」からダウンロードすることが可能です。 この URL は認証無しにアクセスすることが可能です。 ブラウザでアクセスしてみると以下のように表示されるはずです。 ここには PowerShell 用のインストールスクリプトはあるものの、Python 用のインストールスクリプトが無いので、今回のインストール手順ではこの URL へアクセスする必要はありません。

f:id:sig9:20181219162149p:plain

Cisco からダウンロードした vCenter プラグインを展開する

作業する Linux 環境に Cisco の Software Download ページからダウンロードした vCenter プラグインをコピーし、展開しておきます。 以下は実際にプラグイン (.tgz) を展開した出力サンプルです。 よく見るとこの .tgz の中に vcenter-plugin-3.2.4000.4.zip というファイルが含まれていることが分かりますが、これは Cisco ACI から直接、ダウンロード出来るファイルと同じもののようです。

# tar zxvf vcenter-plugin-3.2.4d.tgz
vcenter-plugin-3.2.4000.4/
vcenter-plugin-3.2.4000.4/vcenter-plugin-3.2.4000.4.zip
vcenter-plugin-3.2.4000.4/deployPlugin.py
vcenter-plugin-3.2.4000.4/deploy.cfg
vcenter-plugin-3.2.4000.4/README
vcenter-plugin-3.2.4000.4/ACIPlugin-Install.ps1
vcenter-plugin-3.2.4000.4/ACIPlugin-Uninstall.ps1

ファイルの展開が完了したら、移動しておきます。

cd vcenter-plugin-3.2.4000.4/

HTTPS Fingerprint の確認

Python のインストールスクリプトを実行する際、Cisco ACI の管理 Web UI の HTTPS Fingerprint を要求されます(※ vCenter の Fingerprint は不要のようです)。 Windows であればブラウザで Cisco ACI の Web UI へアクセスして証明書を表示させ、Fingerprint を取得するのが簡単です。 Linux/macOS であれば以下のように openssl のワンライナーで Fingerprint を取得出来ます。

openssl s_client -connect ADDRESS:PORT < /dev/null | openssl x509 -fingerprint -noout

実行例は以下の通りです。 最下行に「poll errorSHA1 Fingerprint」という行がありますが、この行が Fingerprint になりますので控えておきます (後で利用します)。 ]

$ openssl s_client -connect 192.168.0.1:443 < /dev/null | openssl x509 -fingerprint -noout
depth=0 CN = APIC, emailAddress = US
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = APIC, emailAddress = US
verify return:1
poll errorSHA1 Fingerprint=AB:CD:EF:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

インストール用変数を用意する

Python でインストールする場合、vCenter のアドレスやログイン情報等の必要パラメータを予めファイルに用意しておきます。 deploy.cfg という、パラメータのテンプレートファイルがあり、初期状態では以下の内容になっています。

[vCenter]
host = VCENTER_IP
user = VC_ADMIN_LOGIN
password = VC_ADMIN_PASSWORD

[plugin]
zipUrl = http://WEB_SERVER_IP/PATH_TO_FILE/vcenter-plugin-3.2.4000.4.zip
httpsThumbprint =

例えば以下のパラメータだとします。 No.4 の「プラグインの位置」ですが、今回は直接、APIC を参照していますが、同じファイルを Web サーバにアップロードされていれば、必ずしも APIC を参照する必要はありません。

No. 項目
1 vCenter のアドレス 192.168.1.1
2 vCenter のユーザ名 administrator@vsphere.local
3 vCenter のパスワード password
4 プラグインの位置 https://192.168.1.100/vcplugin/vcenter-plugin-3.2.4000.4.zip
5 HTTPS Fingerprint AB:CD:EF:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

この場合、deploy.cfg は以下のようになります。

[vCenter]
host = 192.168.1.1
user = administrator@vsphere.local
password = password

[plugin]
zipUrl = https://1792.168.1.100/vcplugin/vcenter-plugin-3.2.4000.4.zip
httpsThumbprint = AB:CD:EF:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

必要な Python モジュールのインストール

あとはインストールを実行するだけです。

python deployPlugin.py deploy.cfg

ですが、今回の環境では以下のようなエラーになってしまいました。

# python deployPlugin.py deploy.cfg
Traceback (most recent call last):
  File "deployPlugin.py", line 5, in <module>
    import requests
ImportError: No module named requests

エラーの原因は「プラグインインストール用 Python スクリプトrequestspyvmomi モジュールに依存している為」です。 不足しているモジュールをインストールすれば、エラーは解消します。 今回の環境には pip 自体が無かった為、pip をインストールしつつ、不足モジュールをインストールしました。

yum -y install gcc python-devel
curl -L https://bootstrap.pypa.io/get-pip.py | python
pip install requests pyvmomi

vCenter プラグインのインストール

これで全ての準備は整いました。 インストールを開始します。

# python deployPlugin.py deploy.cfg

================================================================
                .:|:.:|:.  Cisco Systems Inc
================================================================
    ACI Plugin for the vSphere Web Client deployment tool
----------------------------------------------------------------


Connecting to the vCenter 192.168.1.1...
Fetching service instance content ...
Checking the API version ...
Checking for an existing version of the plugin ...
Installing the plugin ...

The plugin information was successfully installed on the vCenter 192.168.1.1


--- Please Read ---
The information provided was successfully pushed to the vCenter, but plugin installation is not over.
You need to login into the vSphere Web Client and check for the Cisco ACI Plugin icon to ensure that the installation is successful
If the plugin does not appear in the UI, check the vSphere Web Client log file to see what went wrong
See the 'README' file for more information

vCenter 上での表示

インストールしたプラグインは、現時点では Flash 版の UI でしか利用出来ない ようです。 実際のメニュー表示は以下のようになります。 HTML5 版のメニューにはプラグインが表示されないようです。

f:id:sig9:20181219162738p:plain