vm.gowatana.jp

NEOにほんごVMware(仮)

NSX ALB(Avi)を Terraform で操作してみる。(Virtual Service の作成 / 削除)

NSX Advanced Load Balancer(Avi)に、Terraform で Virtual Service を作成してみます。

今回の内容です。

 

1. 今回の環境

NSX ALB Controller は、下記の投稿でデプロイしたものを利用します。

 

Virtual Service を作成する前提となる、ネットワークや Service Engine Group / Service Engine などの準備も事前に実施してあります。

 

そして下記の投稿にあるような Virtual Service の作成を、Terraform に置き換えてみます。

 

Terraform は、Linux マシン(Photon OS 4.0)から実行します。

gowatana [ ~ ]$ cat /etc/photon-release
VMware Photon OS 4.0
PHOTON_BUILD_NUMBER=2f5aad892

 

2. Terraform のインストール

Photon OS 専用のパッケージは用意されていないので、下記のサイトのリンクから Linux 用(AMD64)のバイナリ ファイルをダウンロードしてインストールします。

 

2-1. terraform コマンドのインストール

unzip をインストールしておきます。

root@lab-terraform-01 [ ~ ]# tdnf install unzip

 

Terraform を利用するユーザに su でスイッチしておきます。(ちなみに、root のままでも作業できます)

root@lab-terraform-01 [ ~ ]# su - gowatana
gowatana [ ~ ]$

 

Terraform のバイナリ ファイルをダウンロードします

gowatana [ ~ ]$ curl -O https://releases.hashicorp.com/terraform/1.3.6/terraform_1.3.6_linux_amd64.zip

 

インストール先ディレクトリを作成します。

gowatana [ ~ ]$ mkdir $HOME/bin

 

terraform を Zip ファイルから取り出します。

gowatana [ ~ ]$ unzip terraform_1.3.6_linux_amd64.zip terraform -d $HOME/bin/

 

OS ユーザで再ログインして、PATH 環境変数を読み込みなおしておきます。

gowatana [ ~ ]$ exit
root@lab-terraform-01 [ ~ ]# su - gowatana
gowatana [ ~ ]$

 

これで terraform コマンドが実行できるようになっているはずなので、バージョンを確認しておきます。

gowatana [ ~ ]$ terraform -version
Terraform v1.3.6
on linux_amd64

 

2-2. Terraform プロバイダ(vmware/avi)のインストール

NSX ALB の Terraform プロバイダと、NSX ALB へのログイン情報を記載したファイルを用意しておきます。

provider.tf ファイル

  • Terraform プロバイダの名前は、旧製品名のまま vmware/avi です。
  • このラボの NSX ALB Container のアドレスは lab-avi-02.go-lab.jp です。
  • vmware/avi プロバイダのバージョンと、NSX ALB のバージョン(avi_version)は揃えておきます。

gist.github.com

 

Terraform を初期化すると、vmware/avi が自動的にダウンロードされます。

gowatana [ ~ ]$ terraform init

 

下記のコマンドで、vmware/avi プロバイダのインストールを確認できます。

gowatana [ ~ ]$ terraform providers

 

3. Terraform での Virtual Service 作成

ここからは、Virtual Service を作成してみます。冒頭でも説明したように、今回は下記の投稿に近い設定で作成してみます。

 

Virtual Service と、それに関連するリソースの定義を記載したファイルを用意しておきます。

main.tf ファイル

  • 今回は下記のようなリソースを作成します。
    • Pool: tf-pool-01
      • メンバは 2台(192.168.62.72 と 192.168.62.91)
      • メンバのポートは 80番
      • ロードバランシングのアルゴリズムはラウンド ロビン
    • VIP: tf-vip-01
      • VIP アドレスは 192.168.61.241
    • Virtual Service: tf-vs-01
      • ポートは 80番

gist.github.com

 

それでは、Virtual Service(と付随する VIP と Pool)を作成してみます。

gowatana [ ~ ]$ terraform plan
gowatana [ ~ ]$ terraform apply -auto-approve

 

これで、Virtual Service が作成されるはずです。

 

上記のツリーでは表示されていませんでしたが、VIP も作成されています。

 

4. 作成した  Virtual Service の削除

作成したリソースは、「terraform destroy」で削除されます。

gowatana [ ~ ]$ terraform destroy -auto-approve

 

以上、Terraform で NSX ALB を操作してみる話でした。