vm.gowatana.jp

NEOにほんごVMware(仮)

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

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...
- Finding vmware/avi versions matching "22.1.7"...
- Installing vmware/avi v22.1.7...
- Installed vmware/avi v22.1.7 (signed by a HashiCorp partner, key ID 6B6B0F38607A2264)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

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 ファイル

  • L1-13:Avi Controller への接続情報。パスワードのみ別ファイルに分離しています。
  • L45-47:プールの「リアルタイム メトリックの有効化」を ON にする。
  • L48-61:プール メンバーの Web サーバーを指定。
  • L78-89:VIP アドレスは自動割り当て。静的に割り当てる場合は、L72-76 とコメント アウトを切り替える。
  • L104-107:仮想サービスの「メトリックの更新頻度」を設定。(0 分)
  • L109-112:仮想サービスの「重要でないログ間隔」を設定。(0 分)
  • L121-123:scaleout_ecmp が反映されなかったので、変更確認の対象から除外。
  • L126-128:自動割り当てされた VIP アドレスを表示する。

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 の仮想サービスを作成してみる話でした。