1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cisco Network as Codeを利用してTerraformでIOS-XEを触ってみた

1
Last updated at Posted at 2026-03-31

Terraformはクラウドサービスだけでなく、ネットワーク機器の構成管理にも利用できます。
しかし、AWSなどでの使い方は事例も沢山公開されておりTFファイルのサンプルも容易に入手できますが、ネットワーク機器を扱う方法はあまり情報が無く、TFファイルも0から書くとなると実用的なものを作るのは結構大変です。

Cisco社の製品についてはNetwork as Codeという名称でCiscoが作って公開されているものがあり、「IOS-XE用のものはまだ開発中ですが公開はされています」と聞いたので、それを試してみたいと思います。

Network as Codeのドキュメントは下記のサイトにあります。
https://netascode.cisco.com/docs/

サイトを開くとACIやCatalyst SD-WAN、Meraki等が並んでいますが、一見するとIOS-XEがありません。
image.png

Data Modelsを見るとIOS-XEがあり、説明を確認することができました。
image.png

しかしACI等のようにFirst Stepsの説明はまだ載っておらず、何から手を付ければ良いのかよくわかりません。

TFファイルはgithubで公開されているので、そちらを確認してみます。
https://github.com/netascode/

IOS-XEのリポジトリはterraform-iosxe-nac-iosxeです。
https://github.com/netascode/terraform-iosxe-nac-iosxe

Examplesが書かれており、system.nac.yamlとmain.tfの2つのファイルを用意すれば良い模様。
image.png

main.tfについては内容を変更する必要は無さそうなので、全くそのままコピー。
今回はテスト用の機器としてC1111を用意しており、先ほどのData Modelsの中からStatic Routeの書き方を確認し、system.nac.yamlの内容を下記のように作成しました。
https://netascode.cisco.com/docs/data_models/iosxe/device/static_route/

system.nac.yaml
iosxe:
  devices:
    - name: Device1
      configuration:
        routing:
          static_routes:
            - prefix: 192.0.2.1
              mask: 255.255.255.255
              next_hops:
                - ip: 192.0.2.254

もちろんTerraformも使えるようにしておく必要があります。
今回はWindowsの環境で、Terraformの導入方法は調べると沢山情報が出てきますが、今回そこは本題ではないので省略します。
とりあえず動かしてみる事を優先し、ダウンロードサイトから入手した実行ファイルをそのまま同ディレクトリに。
image.png

機器に接続して設定を変更するわけなので認証情報が要ると思うのですが、書き方のお作法がわかりません。
そもそもC1111側にもAPIインターフェースの有効化などが必要なのでは。。

とりあえず試しにinit、planを実行してみると、やはりエラーに。
image.png

これはProviderの情報を確認してみた方が良さそうなので、下記のドキュメントを読んでみる事にします。
https://registry.terraform.io/providers/CiscoDevNet/iosxe/latest/docs

ドキュメントによるとデフォルトではNETCONFを利用する仕様との事で、C1111側ではnetconf-yangという1行を設定するだけでした。
※ TCPの830番でNETCONFのインターフェースが有効化されるので、インターネットに繋がっている機器では不正アクセスされないようACL等も考慮が必要

認証情報は先ほどのエラーメッセージの通り、provider "iosxe"でusernameとpasswordを書けば良いようです。
しかし作った構成情報は複数人で共有できるようにしたいので、認証情報を平文で直書きするのは避けたい。

さらに説明を読んでいくと、IOSXE_USERNAMEとIOSXE_PASSWORDの環境変数に値を入れる形でも良いようなので、これでやってみます。
image.png

再度plan、apply
image.png

丁寧に確認メッセージが出るので、yesで実行。
image.png

show running-configで確認してみると、反映されていました!
startup-configへの保存はされていません。
image.png

このままだと追加した設定は再起動後に消えてしまうので、write memoryしておきます。
image.png

さらにドキュメントを読み進めていくとsave_configの値を使ってstartup-configに書き込む方法なども載っていたのでTerraformからでも設定の保存は出来そうですが、今回はここまで。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?