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)は揃えておきます。
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番
- Pool: tf-pool-01
それでは、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 を操作してみる話でした。