Terraform で IOS-XE を設定する
Story DeWeese さんの記事ですが、しばらく前に Automation with Any Tooling on Any Interface が公開されています。
Story DeWeese さんは YouTube でも Cisco IOS XE Terraform provider introduction and demo という「Terraform で IOS-XE を操作する」という動画を公開してくださっています。
IOS-XE 用の Provider は Cisco IOS XE Provider で公開されています。 今回はこの Provider の基本的な使い方をメモしておきます。 Terraform は 1.2.7 を利用しました。
IOS-XE の前提コンフィグ
今回は CML2 上に Catalyst 8000V (IOS-XE 17.08.01a) を起動し、それを Terraform で設定します。 Catalyst 8000V には前提として以下を設定しておきます。
1
2
3
4
5
6
7
8
9
10
11
12 | aaa new-model
aaa authentication login default local
aaa authorization exec default local
!
username ADMIN privilege 15 password PASSWORD
!
restconf
!
ip http secure-server
ip http authentication local
!
end
|
.tf ファイル
Google Public NTP を設定する .tf ファイルの例は以下の通りです。
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 | terraform {
required_providers {
iosxe = {
source = "CiscoDevNet/iosxe"
version = "0.1.1"
}
}
}
provider "iosxe" {
host = "https://10.0.0.1"
device_username = "ADMIN"
device_password = "PASSWORD"
insecure = true
}
resource "iosxe_rest" "ntp_servers" {
method = "POST"
path = "/data/Cisco-IOS-XE-native:native/ntp/server"
payload = jsonencode(
{
"Cisco-IOS-XE-ntp:server-list" : [
{
"ip-address" : "216.239.35.12",
"prefer" : [null]
},
{
"ip-address" : "216.239.35.8",
},
{
"ip-address" : "216.239.35.4",
},
{
"ip-address" : "216.239.35.0",
},
]
}
)
}
|
実行
ここまで用意出来れば、後は Terraform を実行するだけです。
| terraform init
terraform plan
terraform apply -auto-approve
|
IOS-XE 側での確認
IOS-XE 側で確認すると意図した通りに NTP サーバが設定されていました。
| ios-xe# show ntp associations
address ref clock st when poll reach delay offset disp
+~216.239.35.0 .GOOG. 1 23 64 37 38.000 47.990 1.900
+~216.239.35.8 .GOOG. 1 23 64 37 38.000 48.459 1.898
+~216.239.35.4 .GOOG. 1 18 64 37 39.000 47.709 1.920
*~216.239.35.12 .GOOG. 1 14 64 37 38.000 48.493 1.942
* sys.peer, # selected, + candidate, - outlyer, x falseticker, ~ configured
|