VMware NSX Advanced Load Balancer(NSX ALB、旧 Avi)に、Ansible で接続してみます。
※この投稿は古い内容です。新しい投稿はこちらをどうぞ。
今回の内容です。
今回の環境
VMware Photon OS 4.0 に、Ansible の RPM をインストールして利用します。
Ansible 実行環境
下記のサイトにある「Photon OS 4.0 GA Binaries」→「OVA with virtual hardware v13 (UEFI Secure Boot)」をデプロイ&起動しておきます。
- https://github.com/vmware/photon/wiki/Downloading-Photon-OS#photon-os-40-ga-binaries
- ファイル名: photon-hw13-uefi-4.0-1526e30ba0.ova
NSX ALB の Ansible モジュール
NSX ALB むけのモジュールは、以前の名前のまま Avi(avi_~)です。
community.network.avi_network もありますが、今回は Ansible 2.9 を利用するので、Ansible に同梱されているモジュールを利用します。
NSX ALB 環境
NSX ALB 20.1.6 の Avi Controller をデプロイして、初期設定(admin ユーザのパスワード設定など)を実施ずみです。
少しバージョンは異なりますが、下記のように環境構築しています。
About Avi Vantage 画面などから、バージョンが確認できます。
Ansible RPM のインストール
今回は、tdnf コマンドでインターネット上のリポジトリから RPM をインストールします。そのため、Photon OS の VM はインターネット接続できるネットワーク環境にデプロイしておきます。
また、今回のネットワーク設定は DHCP を利用しています。
まず、OVA を起動して、SSH でログインしておきます。ちなみに、初期ログインは root / changeme です。
VMware Photon OS 4.0 です。
root@photon-machine [ ~ ]# cat /etc/photon-release VMware Photon OS 4.0 PHOTON_BUILD_NUMBER=1526e30ba
わかりやすいホスト名に変更しておきます。今回は「lab-ansible-01」にしました
「tdnf update」でRPM パッケージを更新してから、OS を再起動しておきます。
root@photon-machine [ ~ ]# hostnamectl set-hostname lab-ansible-01 root@photon-machine [ ~ ]# tdnf update -y root@photon-machine [ ~ ]# reboot
再度 SSH ログインして、インストール可能な Ansible を確認しておきます。Photon OS 4.0 GA 時点の 2.9.10-1.ph4 と、2.9.22-1.ph4 がインストールできることがわかります。
root@lab-ansible-01 [ ~ ]# tdnf list ansible ansible.noarch 2.9.22-1.ph4 photon-updates ansible.noarch 2.9.10-1.ph4 photon-release
特にバージョン指定せず、最新の Ansible をインストールします。
root@lab-ansible-01 [ ~ ]# tdnf install -y ansible
Ansible 2.9.22 がインストールされました。
root@lab-ansible-01 [ ~ ]# rpm -q ansible ansible-2.9.22-1.ph4.noarch root@lab-ansible-01 [ ~ ]# ansible --version ansible 2.9.22 config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.9/site-packages/ansible executable location = /usr/bin/ansible python version = 3.9.1 (default, May 19 2021, 10:27:03) [GCC 10.2.0]
Ansible の NSX ALB 接続準備
NSX ALB は、Avi Controller で制御されます。そのため、Ansible で操作するのも、Avi Controller になります。
ただし、Ansible インベントリとして指定するのは localhost にします。 これは、uri モジュールや vSphere を操作するモジュールと同様の方式です。
まず、Ansible の設定ファイル(ansible.cfg)を vi エディタなどで作成しておきます。
ansible.cfg
[defaults] inventory = ./inventory.ini interpreter_python = /usr/bin/python
Ansible のインベントリ ファイル(inventory.ini)を作成しておきます。ただ、Avi Controller への接続先は Ansible インベントリではなくモジュール(avi_~ モジュール)で指定するので、実際のところ作成しなくても大丈夫です。
inventory.ini
localhost
今回は、Avi Controller への接続情報を Ansilbe の変数ファイルとして用意しておきます。この変数は、各 avi_~ モジュールで指定します。
login.yml
avi_controller: "Avi Controller の IP Address または FQDN" avi_username: "admin" avi_password: "パスワード" avi_tenant: "admin"
Ansible から NSX ALB への接続(API バージョン確認)
Avi Controller に接続して API バージョンを確認する、Playbook (YAML ファイル)を用意します。
これは、下記のモジュールを使用しています。
また、avi_~ モジュールは、戻り値としてオブジェクトの情報(obj)になっているので、それを debug モジュールで表示してみました。
それでは、ansible-playbook コマンドで Playbook を実行します。
root@lab-ansible-01 [ ~ ]# ansible-playbook get_avi-version.yml
実行すると、下記のように情報取得できるはずです。
以上、Ansible で NSX ALB の Avi Controller に接続してみる話でした。