Terraform で ACI 上に指定個数、Contract を作成する
ACI 上で何某かのテストを実施する為に大量の設定が必要になる場合、Terraform で多少簡単に設定出来るかもしれません。 例えば「Contract を 10 個作成する」といった場合の Terraform 実行例をメモしておきます。
Terraform の設定ファイルは以下の通りです。
- main.tf
- aci.tf
main.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | terraform {
required_providers {
aci = {
source = "CiscoDevNet/aci"
version = "0.5.4"
}
}
}
provider "aci" {
username = "admin"
password = "password"
url = "https://10.0.0.1"
insecure = true
}
|
aci.tf
今回は Contract を 10 個作成しますが、スクリプト中では「10」という設定値を以下のように 2 回利用します。
- Contract を作成するタイミング
- Subject を作成するタイミング
その為、この指定値は変数として定義しました。 また、作成する Contract 名は format
を使って printf
ライクにフォーマットを指定しています。 今回は「10 個」なので %02d
としていますが、もし「100 個作成したい」「1,000 個作成したい」という場合は %03d
や %04d
といった具合に調整します。
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 | variable "index" { default = 10 }
# Tenant
resource "aci_tenant" "tenant" {
name = "Tenant1"
}
# Contract / Subject / Filter
resource "aci_filter" "any" {
tenant_dn = aci_tenant.tenant.id
name = "Filter1"
}
resource "aci_filter_entry" "entry1" {
name = "0010"
filter_dn = aci_filter.any.id
ether_t = "unspecified"
}
resource "aci_contract" "contract" {
count = var.index
tenant_dn = aci_tenant.tenant.id
name = format("Contract%02d", count.index + 1)
}
resource "aci_contract_subject" "subject" {
count = var.index
contract_dn = aci_contract.contract[count.index].id
name = "Subject1"
relation_vz_rs_subj_filt_att = [aci_filter.any.id]
}
|
実行結果
Terraform 実行後、APIC の CLI 上から確認すると、以下のように指定した個数分だけ Contract が作成されていました。
1
2
3
4
5
6
7
8
9
10
11
12
13 | apic1# show tenant Tenant1 contract
Tenant Contract Type Qos Class Scope Subject Access-group Dir Description
---------- ---------- ---------- ------------ ---------- ---------- ---------- ---- ----------
Tenant1 Contract01 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract02 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract03 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract04 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract05 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract06 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract07 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract08 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract09 permit unspecified vrf Subject1 Filter1 both
Tenant1 Contract10 permit unspecified vrf Subject1 Filter1 both
|