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 ファイル
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 アドレスを表示する。
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 の仮想サービスを作成してみる話でした。