IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Pythonでネットワーク自動化をしよう

CTC 教育サービス

 [IT研修]注目キーワード   Python  Power Platform  最新技術動向  生成AI  Docker  Kubernetes 

第45回 Pythonとネットワーク自動化基礎検定 模擬問題解説(7) (小澤昌樹) 2026年5月14日公開

みなさん、こんにちは。

前回は、例外処理やタイムアウト、ログ出力といった「失敗を前提にした自動化」について取り上げました。ネットワーク自動化では、単に処理を自動化するだけでなく、異常時にも適切に動作する設計が重要であることを確認しました。今回は、さらに一歩進んで、「設定を自動で生成する」というテーマに取り組んでみましょう。

ネットワーク運用の現場では、似たような設定を複数の機器に投入する場面が多くあります。たとえば、

  • VLAN設定の追加
  • インターフェース設定の展開
  • ACLやルーティング設定の配布

といった作業です。こうした作業を1台ずつ手で入力するのは非効率で、ミスの原因にもなります。そこで重要になるのが、「テンプレートを使った設定生成」です。

Pythonでは、Jinja2というテンプレートエンジンを使うことで、設定ファイルを柔軟に生成できます。値の差し替えや繰り返し処理を簡単に記述できるため、ネットワーク自動化において非常に重要な技術です。今回は、このJinja2を中心に、設定生成の基本を確認する模擬問題を3問用意しました。

【問題1】Jinja2テンプレートの基本

以下は、Jinja2テンプレートの一部です。このテンプレートに変数 hostname="router01" を渡した場合、出力として正しいものを1つ選びなさい。


hostname {{ hostname }}

選択肢:
A. hostname { hostname }
B. hostname router01
C. hostname = router01
D. {{ hostname }} router01

正解:
B

解説:
Jinja2では、{{ }} の中に記述した変数が、レンダリング時に実際の値へ置き換えられます。

この例では、


hostname {{ hostname }}

というテンプレートに対して、hostname="router01" を渡すと、


hostname router01

という文字列が生成されます。

この「値の差し替え」が、テンプレートの基本です。手作業で設定を書くのではなく、「ひな形+変数」という形で管理することで、設定ミスを減らし、再利用性を高めることができます。

Aは単なる文字列、Cはテンプレート構文ではありません。Dは構文が誤っています。

【問題2】ループ処理による設定生成

以下のJinja2テンプレートは、複数のインターフェース設定を生成するものです。このテンプレートの説明として最も適切なものを1つ選びなさい。


{% for iface in interfaces %}
interface {{ iface.name }}
 ip address {{ iface.ip }}
{% endfor %}

選択肢:
A. 1つのインターフェース設定だけを生成する
B. interfaces の数だけ繰り返し設定を生成する
C. JSON形式に変換する処理である
D. YAMLファイルを読み込む処理である

正解:
B

解説:
Jinja2では、{% for %} 構文を使うことで、リストの要素を順に処理できます。
このテンプレートでは、interfaces に含まれる各要素について、

  • interface 名
  • IPアドレス

を繰り返し出力しています。
たとえば、以下のようなデータを渡した場合


interfaces = [
    {”name”: ”Gig0/0”, ”ip”: ”192.168.1.1”},
    {”name”: ”Gig0/1”, ”ip”: ”192.168.2.1”}
]

次のような設定が生成されます。


interface Gig0/0
 ip address 192.168.1.1
interface Gig0/1
 ip address 192.168.2.1

このように、同じ構造の設定を大量に生成する場合、テンプレートを使うことでコード量を大幅に減らすことができます。

Aは誤りで、ループにより複数生成されます。CとDはテンプレートの役割とは異なります。

【問題3】テンプレートを使うメリット

ネットワーク設定をJinja2テンプレートで生成するメリットとして、最も適切なものを1つ選びなさい。

選択肢:
A. CLIコマンドを高速に実行できるようになる
B. 設定内容を自動的に最適化してくれる
C. 設定の再利用性と保守性を高められる
D. 機器との接続が不要になる

正解:
C

解説:
テンプレートを使う最大のメリットは、「設定とロジックを分離できること」です。
従来のスクリプトでは、


config = f”hostname {hostname}\\ninterface {iface}”

のように、コードの中に設定を書いてしまいがちです。この方法では、

  • 設定変更のたびにコード修正が必要
  • 可読性が低い
  • 再利用しにくい

といった問題があります。
一方、テンプレートを使うと、

  • 設定(テンプレート)
  • データ(変数)

を分離できます。
これにより、

  • 同じテンプレートを複数機器に使い回せる
  • 設定変更はテンプレートだけ修正すればよい
  • レビューや管理がしやすい

といったメリットがあります。
AはNetmikoなどの役割、Bは自動最適化ではありません。Dも誤りで、接続処理は別途必要です。

まとめ

今回は、Jinja2テンプレートを使った設定生成というテーマを取り上げました。
テンプレートを使うことで、

  • 設定の再利用性を高める
  • 人為的ミスを減らす
  • 大量の機器への設定展開を効率化する

といった効果が得られます。
これまで扱ってきた、

  • YAMLによる設定管理
  • 並列処理による高速化
  • 例外処理による安定化

と組み合わせることで、ネットワーク自動化はより実践的なものになります。単体の技術としてではなく、「どう組み合わせるか」を意識することが重要です。ネットワーク自動化は、「1台の設定を自動化する段階」から、「複数機器へ安全に展開する段階」へ進むことで、初めて現場で価値を発揮します。テンプレートは、そのための重要な要素のひとつです。

次回は、設定の適用や検証といった「変更を伴う自動化」について取り上げる予定です。ぜひ続けて確認していきましょう。

 

 [IT研修]注目キーワード   Python  Power Platform  最新技術動向  生成AI  Docker  Kubernetes