Cisco ACI の設定を Terraform でインポートする

ACI 用の Terraform Provider を利用すれば Terraform から ACI の構成管理 (設定/設定削除) することが出来ます。 ACI の場合も他 Provider と同様に設定を tfstate にインポートすることが可能です。 例えば Tenant-1 というテナントをインポートする場合、以下のような .tf ファイルを用意します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
terraform {
  required_providers {
    aci = {
      source  = "CiscoDevNet/aci"
      version = "2.5.2"
    }
  }
}

provider "aci" {
  url      = "https://10.0.0.1"
  username = "admin"
  password = "password"
  insecure = true
}

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

あとは通常通り、terraform import を実行してインポートします。

1
terraform import aci_tenant.tenant1 uni/tn-Tenant1

ACI に限った話しではありませんが、インポートされた対象 (今回はテナント) のパラメータまで読み込んでいるわけではありません。 詳細な設定まで .tfstate に読み込ませるのであれば以下、いずれかの手段を取る必要があります。

  1. 事前の .tf ファイルに、実機と同じ設定をしておく
  2. .tfstate を修正し、実機の設定と同じにする

いずれにしろ、「実機上の設定を全て・正確にインポートする」のは面倒です。 「自動化する」ということがわかっているのであれば、(後から .tfstate を修正していくより) 最初から自動化したい対象設定を Terraform に管理させた方が簡単ではあります。