【入門編】Ansible NetconfとYANGモデルを用いたネットワーク機器のコンフィグ管理:マルチベンダー対応の高度な自動化術 – インフラ構成管理(IaC)活用バイブル

ネットワークエンジニアの皆さん、こんにちは。

「またCLIでログインして、`show run`して、`conf t`で流し込む……」。そんな作業に、そろそろ限界を感じていませんか?

もし、あなたが「自動化=スクリプトでCLIを叩くこと」だと思っているなら、今日でその考えは捨ててください。それはただの「手作業の代行」であり、本質的な自動化ではありません。

今日は、ネットワークインフラを「コードとして定義し、理想の状態へ強制的に収束させる」ための極限の技術、NETCONFとYANGモデルを用いたAnsibleによる構成管理について解説します。これをマスターすれば、マルチベンダー環境の運用が「作業」から「設計」へと昇華されますよ。

—

1. なぜ「CLI自動化」ではダメなのか?

従来のCLI自動化(ExpectやNetmikoなど)は、人間がコマンドを打つ動作をシミュレートするだけです。

  • 冪等性(べきとうせい)がない: 何度実行しても同じ状態になる保証がありません。
  • アトミック(原子性)がない: 設定の途中でエラーが起きると、中途半端な状態で止まります。
  • 解析が困難: 機器が吐き出すテキストを人間が読む前提のフォーマットから、必要な値だけを抜き出す(パースする)のは、苦痛以外の何物でもありません。

そこで登場するのが、NETCONFとYANGです。

  • NETCONF: ネットワーク機器を制御するための「標準化されたAPI」。SSH上でXML/JSONをやり取りします。
  • YANG: 機器の設定モデルを定義する「言語」。どのベンダーでも「インターフェース」は「インターフェース」として定義されます。

つまり、これらを使えば「ベンダーに関係なく、共通のデータ構造でネットワークを操れる」のです。

—

2. 環境構築:最小にして最強のセットアップ

Ansibleでこれを行うには、ベンダーごとのコレクションが必要です。ここではCiscoとJuniperを例に、必要な環境を整えます。

必要なライブラリのインストール

まず、Ansible本体と、NETCONFを扱うためのライブラリをインストールします。

NETCONFライブラリとAnsible本体をインストール
pip install ncclient ansible
Cisco IOS XE用とJuniper Junos用のコレクションを追加
ansible-galaxy collection install cisco.iosxe junipernetworks.junos

インベントリファイルの設計(ここが重要)

接続情報をハードコードしてはいけません。`group_vars`で接続方法を一元管理するのがプロの作法です。

group_vars/all.yml
ansible_connection: netconf
ansible_netconf_port: 830
ansible_network_os: cisco.iosxe.iosxe # もしくは junipernetworks.junos.junos
ansible_user: your_username
ansible_password: your_password

—

3. HelloWorld:アトミックな設定変更

さあ、実際に設定を流し込んでみましょう。「HelloWorld」として、ループバックインターフェースを定義します。

`site.yml`

—

  • name: ネットワーク設定の自動化(NETCONF版)

hosts: routers
tasks:

  • name: ループバックインターフェースの構成

cisco.iosxe.iosxe_config:
# YANGモデルに基づいた構造化データとして設定を記述
config:

  • interface: Loopback100

description: “Managed by Ansible”
enabled: true
ipv4:
address: 192.168.100.1
mask: 255.255.255.255
state: merged # 既存設定を壊さず、差分だけを適用(これが冪等性)

このコードの「凄み」

1. `state: merged`: これにより、Ansibleは「現在の状態」と「定義された状態」を比較し、必要な変更だけを適用します。既に設定済みなら、何もせず終了します。これが冪等性です。
2. XMLを意識させない: AnsibleのコレクションがYANGモデルを解釈し、背後で適切なXMLに変換してくれます。私たちは「あるべき姿」を書くだけです。

—

4. 次のステップへ:プロの思考

ここから先は、以下の技術を深掘りしてみてください。

  • Diffモードの活用: `–check` オプションを付けて実行し、適用前に「何が変わるか」を可視化する習慣をつけましょう。
  • YANGモデルの探索: 機器に対して `get-schema` を行い、その機器がサポートするYANGモデルを確認してください。これが見えれば、その機器の「すべて」を制御できるようになります。
  • CI/CDへの組み込み: GitHubにプッシュされた瞬間に検証環境へ展開し、テストが通ったら本番へ……というパイプラインを構築しましょう。

最後に:あなたへのメッセージ

ネットワーク自動化は、単なる「スクリプト書き」ではありません。「インフラという巨大なシステムをコードで支配する」という、非常にクリエイティブで知的な冒険です。

最初は難しく感じるかもしれません。しかし、CLIから脱却したその先には、夜中に呼び出されることのない、安定した、そして何より「あなたが設計した通りに動く」美しいネットワークが待っています。

さあ、今日から「コード」でネットワークを語りましょう。応援しています!

タイトルとURLをコピーしました