vm.gowatana.jp

NEOにほんごVMware(仮)

NSX ALB(Avi)から Ansible で情報取得してみる。(JSON ファイル)

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」だけが存在しています。

f:id:gowatana:20210725181135p:plain

 

Default-Group は、Service Engine をデプロイするフォルダ名、クラスタ、データストア指定などを、デフォルト値から設定変更してあります。

f:id:gowatana:20210725181217p:plain

 

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」ファイルに保存します。

gist.github.com

 

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

f:id:gowatana:20210725180842p:plain

 

Playbook を実行します。

root@lab-ansible-01 [ ~ ]# ansible-playbook avi_segroup_Default-Group.yml

 

これで、avi_segroup_Default-Group.json を確認すると、下記のように情報が保存されているはずです。

gist.github.com

 

以上、Ansible で NSX ALB のオブジェクト情報を取得してみる話でした。