Skip to content

Terraform でリストに定義したパラメータ通りに ACI を設定するサンプル

Terraform でリストに定義したパラメータに従い、ACI 上に設定を行うサンプルをメモしておきます。

VRF を作成するサンプル

locals として定義した VRF 名に従い、複数の VRF を作成するサンプルは以下の通りです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
locals {
  vrfs = ["Vrf1", "Vrf2", "Vrf3"]
}

# Tenant
resource "aci_tenant" "tenant" {
  name = "Tenant1"
}

# VRF
resource "aci_vrf" "vrf1" {
  count     = length(local.vrfs)
  tenant_dn = aci_tenant.tenant.id
  name      = local.vrfs[count.index]
}

BD / BD Subnet を作成するサンプル

リストとして定義した BD 名 / BD Subnet に従い、複数の BD を作成するサンプルは以下の通りです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
variable "fvBDs" {
  type = list(object({
    name = string
    subnet = string
  }))

  default = [
    { name = "Bd1", subnet = "10.0.1.254/24"},
    { name = "Bd2", subnet = "10.0.2.254/24"},
    { name = "Bd3", subnet = "10.0.3.254/24"},
  ]
}

# Tenant
resource "aci_tenant" "tenant" {
  name = "Tenant1"
}

# VRF
resource "aci_vrf" "vrf1" {
  tenant_dn = aci_tenant.tenant.id
  name      = "Vrf1"
}

# BD
resource "aci_bridge_domain" "bd" {
  count              = length(var.fvBDs)
  tenant_dn          = aci_tenant.tenant.id
  name               = var.fvBDs[count.index].name
  relation_fv_rs_ctx = aci_vrf.vrf1.id
}

resource "aci_subnet" "bd_subnet" {
  count     = length(var.fvBDs)
  parent_dn = aci_bridge_domain.bd[count.index].id
  ip        = var.fvBDs[count.index].subnet
  preferred = "yes"
  scope     = ["private"]
}