vm.gowatana.jp

NEOにほんごVMware(仮)

NSX ALB の Avi CLI を VMware Photon OS 4.0 で使用してみる。

VMware NSX Advanced Load Balancer(NSX ALB、旧 Avi)の CLI である「Avi CLI」は、Avi Controller VM に SSH ログインすれば使用できます。しかし Avi CLI は、Linux / Mac / Docker コンテナにインストールして使用することもできます。

そこで、Linux である VMware Photon OS 4.0 に Avi CLI をインストールしてみます。

 

今回の内容です。

 

ドキュメントでは、下記のあたりが参考になります。

 

用意するもの

Avi CLI のインストーラと、Photon OS 4.0 の OVA ファイルを用意しておきます。なお、ここでは Photon OS を起動するインフラ(ネットワーク / DNS / DHCP / vSphere など)の準備については省略しています。

 

Avi CLI のインストーラ

Avi CLI のインストーラは、tar.gz ファイルとして提供されています。NSX ALB と同じバージョン(今回は 20.1.6)のものをダウンロードしておきます。

  • ファイル名: avi_shell-20.1.6-9132.tar.gz

 

このファイルは、Avi Controller OVA と同じダウンロード サイトにあります。VMware Customer Connect(旧 My VMware)へのログインが必要です。

 

Photon OS 4.0 の OVA ファイル

Photon OS の OVA ファイルは、下記サイトからダウンロードできます。

 

今回は、Photon OS 4.0 GA Binaries にあるもの利用してみました。

 

インターネット接続

Avi CLI をインストールする際に、pip コマンドを利用して、インターネットから依存パッケージをインストールします。そのため Photon OS がインターネット接続できる環境を用意しておきます。

 

Photon OS 4.0 の準備

まず、Photon OS の OVA をデプロイして、パワーオンしておきます。そして、初回ログイン(root / changeme)と root パスワード変更は実施ずみです。

Photon OS 4.0 のバージョンです。

root@photon-machine [ ~ ]# cat /etc/photon-release
VMware Photon OS 4.0
PHOTON_BUILD_NUMBER=1526e30ba

 

ネットワーク設定には、DHCP を利用しています。

ホスト名は、わかりやすく「lab-avicli-01」という名前にしました。

root@photon-machine [ ~ ]# hostnamectl set-hostname lab-avicli-01

 

RPM を最新のものにアップデートして、OS を再起動しておきます。

root@photon-machine [ ~ ]# tdnf update -y
root@photon-machine [ ~ ]# reboot

 

Avi CLI のインストール

あらためて、Photon OS(ホスト名は lab-avicli-01)に SSH ログインしてあります。

この環境の Python バージョンです。

root@lab-avicli-01 [ ~ ]# python -V
Python 3.9.1

 

インストールで使用する、pip と virtualenv の RPM をインストールしておきます。Photon OS 4.0 での RPM は、python3-pip と python3-virtualenv です。

root@lab-avicli-01 [ ~ ]# tdnf install -y python3-pip python3-virtualenv

 

virtualenv で、Python の仮想環境を作成します。名前はドキュメントにあわせて「avi_shell」にしてあります。

root@lab-avicli-01 [ ~ ]# virtualenv avi_shell

 

生成された activate ファイルを読み込むことで、Python の環境(virtualenv)を avi_shell に切り替えます。これは、今後も Avi CLI を実行する前に必要です。

ちなみに現在の virtualenv は、プロンプトの文字列「(avi_shell)」で判別できます。

root@lab-avicli-01 [ ~ ]# source avi_shell/bin/activate
(avi_shell) root@lab-avicli-01 [ ~ ]#

 

Avi CLI の tar.gz ファイルを、pip コマンドでインストールします。このときの依存パッケージも、インターネットからダウンロードされます。

(avi_shell) root@lab-avicli-01 [ ~ ]# pip install ./avi_shell-20.1.6-9132.tar.gz

 

Avi CLI(avi-shell)がインストールされました。

(avi_shell) root@lab-avicli-01 [ ~ ]# pip freeze
avi-shell @ file:///root/avi_shell-20.1.6-9132.tar.gz
certifi==2021.5.30
chardet==3.0.4
cmd2==0.8.0
commentjson==0.9.0
idna==2.8
iso8601==0.1.11
lark-parser==0.7.8
prettytable==0.7.2
pyparsing==2.4.7
pyperclip==1.8.2
pytz==2015.7
PyYAML==5.4.1
requests==2.22.0
requests-toolbelt==0.9.1
six==1.16.0
urllib3==1.25.3
virtualenv==13.1.2
wrapt==1.10.6

 

Avi CLI の使用

「avi_shell」という環境(virtualenv)に切り替えてある状態であれば、「avi_shell」と実行すると、Avi CLI を起動できます。まずは help を表示してみました。

(avi_shell) root@lab-avicli-01 [ ~ ]# avi_shell --help
usage: avi_shell [-h] [--address ADDRESS] [--batch-mode] [--min-output] [--local] [--debug] [--file FILE] [--json]
                 [--password PASSWORD] [--token TOKEN] [--tenant TENANT] [--user USER] [--log LOG] [--server]
                 [--port PORT] [--clear-sessions]

optional arguments:
  -h, --help           show this help message and exit
  --address ADDRESS    Address of the REST API server
  --batch-mode
  --min-output
  --local              local shell login procedure
  --debug
  --file FILE          Execute the CLI commands from this file
  --json
  --password PASSWORD  Password for the REST API server
  --token TOKEN        Token for the REST API server
  --tenant TENANT
  --user USER          Username for the REST API server
  --log LOG            Log file name
  --server             Use a client server model for CLI
  --port PORT          Listening port for the CLI server
  --clear-sessions

 

avi_shell に、Avi Controller のアドレスを指定(たとえば --address 192.168.10.97)することで、NSX ALB を操作できるようになります。ためしに、「show version controller」で Avi Controller のバージョンを取得してみました。

(avi_shell) root@lab-avicli-01 [ ~ ]# avi_shell --address 192.168.10.97
Login: admin
Password: ★パスワード入力。

[admin:192-168-10-97]: > show version controller
+-----------------+--------------------------------------+-------+------+
| Controller Name | Version                              | Patch | Fips |
+-----------------+--------------------------------------+-------+------+
| 192.168.10.97   | 20.1.5(9148) 2021-04-15 07:08:29 UTC | -     | -    |
+-----------------+--------------------------------------+-------+------+

Avi CLI は、Exit で終了できます。

[admin:192-168-10-97]: > exit
(avi_shell) root@lab-avicli-01 [ ~ ]#

 

Python の virtualenv からは、exit か 「deactivate <環境名>」で抜けることができます。

(avi_shell) root@lab-avicli-01 [ ~ ]# deactivate avi_shell
root@lab-avicli-01 [ ~ ]#

 

参考情報

Linux OS ユーザの .bash_profile ファイルなどに「source ~/bin/activate」といった環境切りかえのコマンド ラインを記載しておくと、ユーザが OS ログインした時点で、Python の virtualenv も切り替えられます。

root@lab-avicli-01 [ ~ ]# echo 'source $HOME/avi_shell/bin/activate' >> $HOME/.bash_profile
root@lab-avicli-01 [ ~ ]# cat $HOME/.bash_profile
source $HOME/avi_shell/bin/activate

 

この場合、OS ログイン ~ Avi CLI 起動の様子は下記のような感じになります。最初にログインしている 192.168.11.40 は、Photon OS の IP アドレスです。

f:id:gowatana:20210707022054p:plain


Avi Controller への直接ログインを避けたい場合は、このような Avi CLI 踏み台となるマシンを用意してもよいかもしれません。

 

以上、Linux で Avi CLI を使用してみる話でした。