VMware NSX Advanced Load Balancer(NSX ALB、旧 Avi)から、Ansible で既存オブジェクトの情報を取得して、JSON 形式のファイルとして保存してみます。
今回の内容です。
Ansble による NSX ALB オブジェクトの情報取得について
Ansble の NSX ALB(Avi)モジュールには、オブジェクトの情報取得をするためだけのモジュールが見当たらなそうです。
しかし、どのモジュールでも操作対象のオブジェクト情報(obj)が戻り値になっています。
そこで今回は、Service Engine Group の情報を取得してみます。Avi モジュールでは、オブジェクトの設定変更が発生しなくても、戻り値としてオブジェクト情報を取得できます。そこで、avi_serviceenginegroup モジュールを、ほぼ最小限のパラメータのみ指定して実行します。
今回の環境
NSX ALB と Ansible は、以前の投稿で用意した環境を利用します。
Service Engine Group は、デフォルトの「Default-Group」だけが存在しています。
Default-Group は、Service Engine をデプロイするフォルダ名、クラスタ、データストア指定などを、デフォルト値から設定変更してあります。
Playbook の作成
前回の投稿と同様に、Avi Controller への接続情報を記載した login.yml というファイルを用意しておきます。今回の Avi Controller のアドレスは、FQDN で指定(lab-avi-51.go-lab.jp)しています。
login.yml
avi_controller: "lab-avi-51.go-lab.jp" avi_username: "admin" avi_password: "VMware1!" avi_tenant: "admin" avi_api_version: "20.1.6"
Avi モジュールでは、オブジェクトの設定変更が発生しなくても、戻り値としてオブジェクト情報を取得できます。そこで、Avi Service Engine Group の、ほぼ最小限のパラメータのみを記載した Playbook の YAML ファイルを作成しました。
- 「Default-Group」という Service Engine Group が、ほぼ最小限のパラメータのみで定義されています。接続情報やオブジェクトの配置場所を除くと、「name」のみ指定しています。
- Service Engine Group の戻り値は、変数「avi_segroup」に格納します。
- avi_segroup.obj の内容を、整形した JSON 形式のデータとして(to_nice_json)、「avi_segroup_Default-Group.json」ファイルに保存します。
Playbook の実行(情報取得)
今回は情報取得したいだけなので、「--check」オプションで、Playbook の実行によって Service Engine Group の設定が変更されないことを確認しておきます。
「TASK [Create Avi SE Group]」が ok となっており、Playbook を実行してもオブジェクトに変更が発生しないことが分かります。
root@lab-ansible-01 [ ~ ]# ansible-playbook avi_segroup_Default-Group.yml --check
Playbook を実行します。
root@lab-ansible-01 [ ~ ]# ansible-playbook avi_segroup_Default-Group.yml
これで、avi_segroup_Default-Group.json を確認すると、下記のように情報が保存されているはずです。
以上、Ansible で NSX ALB のオブジェクト情報を取得してみる話でした。