Avi Load Balancer を Terraform で操作してみる。(Virtual Service の作成 / 削除) (original) (raw)

Avi Load Balancer の仮想サービスを、Terraform で作成してみます。

今回の環境です。

今回の環境

下記の投稿と同様に、Avi Load Balancer の仮想サービスを作成してみます。

プール メンバーの Web サーバーも、上記の投稿で用意したものを利用します。

1. Linux マシンの準備

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

cat /etc/photon-release

VMware Photon OS 5.0 PHOTON_BUILD_NUMBER=dde71ec57

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

tdnf install unzip -y

vim(vi)で編集しやすいように、.vimrc ファイルに設定を追記しておきます。

gowatana [ ~ ]$ echo 'set clipboard=unnamed,autoselect' >> ~/.vimrc

バイナリ ファイルを配置するディレクトリを作成します。

gowatana [ ~ ]$ mkdir bin gowatana [ ~ ]$ export PATH=$HOME/bin:$PATH gowatana [ ~ ]$ echo 'export PATH=$HOME/bin:$PATH' >> .bash_profile

2. Terraform のインストール

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

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

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

gowatana [ ~ ]$ curl -OLs https://releases.hashicorp.com/terraform/1.9.8/terraform_1.9.8_linux_amd64.zip

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

gowatana [ ~ ]$ unzip terraform_1.9.8_linux_amd64.zip terraform -d $HOME/bin/ gowatana [ ~ ]$ ls -l ./bin/ total 86976 -rwxr-xr-x 1 gowatana users 89059480 Oct 16 12:28 terraform

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

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

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

Avi Load Balancer の Terraform プロバイダ情報を記載した HCL(.tf)ファイルを用意しておきます。

Terraform の vmware/avi プロバイダは、Avi Load Balancer のバージョンに合わせたものが提供されています。今回は VCF 5.2.1 でデプロイした Avi Load Balancer 22.1.7 と同バージョンのプロバイダをインストールします。

provider.tf ファイル

gist.github.com

terraform init コマンドを実行して、プロバイダをインストールします。

gowatana [ ~ ]$ terraform init Initializing the backend... Initializing provider plugins...

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work.

If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.

3. Terraform での仮想サービス作成

TCL(.tf)ファイルを作成して、terraform apply コマンドで仮想サービスを関連リソースを作成します。

3-1. .tf ファイルの作成

Avi Load Balancer のサーバー プール、VIP、仮想サービスを定義した TCL ファイルを作成します。

main_avi_vs.tf ファイル

gist.github.com

Avi Controller にログインするユーザーのパスワードは、下記のように別ファイルとして用意しておきます。

gowatana [ ~ ]$ echo 'avi_password = "VMware1!VMware1!"' > password.auto.tfvars gowatana [ ~ ]$ cat password.auto.tfvars avi_password = "VMware1!VMware1!"

3-2. 仮想サービス(Virtual Service)の作成

terraform apply コマンドで、仮想サービスを作成します

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

自動的に割り当てられた VIP アドレスは output リソースとして登録してあるので、下記のように確認できます。

gowatana [ ~ ]$ terraform output vip_address = "10.0.11.201"

これで、下記のように仮想サービスと関連リソースが作成されます。

VIP アドレスは、「10.0.11.201」が払い出されました。

Web ブラウザから VIP アドレスにアクセスすると、2台のWeb サーバーのページが、ラウンド ロビンで交互に表示されます。

仮想サービスの画面を開きます。

「ログ」タブを開いてアクセス ログを展開すると、クライアントから Web サーバーまでの詳細なログを確認できます。

4. 作成した Virtual Service の削除

terraform apply で作成したリソースは、terraform destroy で削除できます。

gowatana [ ~ ]$ terraform destroy -auto-approve

以上、Terraform で Avi Load Balancer の仮想サービスを作成してみる話でした。