HiRoLabブログ

HiRoのゆるふわIT備忘録

Terraform CloudでAvi Load BalancerのAlert設定を自動化してみた

■はじめに

この投稿は、vExperts Advent Calendar 2024 の 13日目です。

今回はAvi Load BalancerのAlert設定周りのTerraformのテンプレートファイルを作成して
Terraform Cloudにてワークスペースを実行しAlert設定を自動化したブログになります

Terraform Cloudのより詳細な使い方は過去の検証ブログを参考に

hiro1325.hatenablog.com

■目次

■対象者

・Terraform Cloudで自動化を初めようと思っている人

VMware Avi Load Balancerの自動化に興味がある人

■前提知識

・gitの操作が出来る

■構成図

Terraform Cloud実行における構成図は以下

■Avi Load BalancerのAlert設定

本セクションではEvent発生から通知までの仕組みに加え
実際の設定画面を使って新規でAlert設定する手順を説明

Event発生から通知

Event発生し通知されるまでのフローは以下

Alert設定概要

新規でAlert設定する場合は
手戻りを無くすためNotifications→Alert Action→Alert Configの順で設定するのが良い

今回は設定を自動化する為
Web UIの画面においては必要箇所のみ簡単に説明

Notifications(Syslog)

Syslogの設定は名前とIPアドレスのみの設定で完了
ポート番号はデフォルトで指定されている

Alert Action

Alert Actionの設定はNotificationsで作成したSyslog設定を指定

Alert Config

Alert Configの名前を指定

次にAlert Configが動作する為のトリガーになるEventを指定

最後に作成したAlert Actionを指定

参考
VMware by BroadcomのAvi Load Balancer Alert設定のドキュメント

■テンプレートファイルの準備

TerraformのAviのプロバイダーは以下を参考にしてください

registry.terraform.io

作成したテンプレートファイルは以下

provider.tf
main.tf

プロバイダー情報やAviコントローラーのユーザ情報などが記載されている
テンプレートファイル(provider.tf)は以下

terraform {
  required_providers {
    avi = {
      source = "vmware/avi"
      version = "30.2.1"
    }
  }
}
provider "avi" {
avi_username = "admin"
avi_tenant = "admin"
avi_password = "<パスワード>"
avi_controller = "< AviコントローラーのIPアドレス >"
avi_version = "30.2.1"
}

resourceブロックのリソースタイプとAviの設定項目の紐づけは以下

リソースタイプ Avi Load Balancerの設定
avi_alertsyslogconfig Notification Syslog
avi_actiongroupconfig Alert Action
avi_alertconfig Alert Config

よって作成したmain.tfは以下

data "avi_tenant" "default_tenant" {
  name= "admin"
 }

resource "avi_alertsyslogconfig" "syslog" {
  name      = "avi-syslog"
  syslog_servers {
    syslog_server = "< SyslogサーバのIP >"
    syslog_server_port = "514"
    udp = "True"
  }
  tenant_ref = data.avi_tenant.default_tenant.id
}

resource "avi_actiongroupconfig" "action" {
  name = "avi-syslog-action"
  external_only = "True"
  level = "ALERT_LOW"
  syslog_config_ref = avi_alertsyslogconfig.syslog.id
  tenant_ref = data.avi_tenant.default_tenant.id
}

resource "avi_alertconfig" "alert" {
  action_group_ref = avi_actiongroupconfig.action.id
  name = "avi-Syslog-Config-Events"
  alert_rule {
    sys_event_rule {
      event_id = "USER_LOGIN"
      not_cond = "False"
    }
  }
  category = "REALTIME"
  source = "EVENT_LOGS"
  summary = "Syslog for Config Events occured"
  throttle = "0"
}

最後にgithubにpushすればファイル作成は終了

■terrform cloudの設定

ワークスペースの作成

前回と同じリポジトリを使用するが
Avi Load Balancer用のディレクトリを作成

特定のディレクトリを指定する方法は以下の
Terraform Working Directoryにてパスを入力

その他の設定は冒頭で説明した過去の検証ブログを参考に

ワークスペースの実行

ワークスペースを実行し
terraform planが正常終了

作成されるリソースを確認
問題なければconfirm & apply

terraform applyが成功

■syslog通知の確認

Avi Load Balancerでsyslog設定が出来ているかテストメッセージを送信して確認

まずはじめにValidate settingをクリック

送信するメッセージを入力してSubmitをクリック

syslogサーバにて以下のメッセージ確認が出来る

■お片付け

最後に作成した環境のお片付けを行う terraform destoroyをTerraform Cloudで実行する手順にあたる

ワークスペースの Settings->Destruction and Deletionにて Queue destroy planをクリック

確認の為のワークスペース名が求められるので入力しQueue destroy planをクリック

terraform planが正常終了

confirm & applyをクリック

成功してsyslog設定が削除されたことが分かる

■おわりに

はじめてのアドベントカレンダーに挑戦し無事ブログを公開できたことを嬉しく思います

本ブログの内容を少しアレンジしたデモを次のJapan VMUG vExpert が語る #42で行いたいと思います