CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
みなさん、こんにちは。
前回は、例外処理やタイムアウト、ログ出力といった「失敗を前提にした自動化」について取り上げました。ネットワーク自動化では、単に処理を自動化するだけでなく、異常時にも適切に動作する設計が重要であることを確認しました。今回は、さらに一歩進んで、「設定を自動で生成する」というテーマに取り組んでみましょう。
ネットワーク運用の現場では、似たような設定を複数の機器に投入する場面が多くあります。たとえば、
といった作業です。こうした作業を1台ずつ手で入力するのは非効率で、ミスの原因にもなります。そこで重要になるのが、「テンプレートを使った設定生成」です。
Pythonでは、Jinja2というテンプレートエンジンを使うことで、設定ファイルを柔軟に生成できます。値の差し替えや繰り返し処理を簡単に記述できるため、ネットワーク自動化において非常に重要な技術です。今回は、このJinja2を中心に、設定生成の基本を確認する模擬問題を3問用意しました。
以下は、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は構文が誤っています。
以下の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 に含まれる各要素について、
を繰り返し出力しています。
たとえば、以下のようなデータを渡した場合
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はテンプレートの役割とは異なります。
ネットワーク設定をJinja2テンプレートで生成するメリットとして、最も適切なものを1つ選びなさい。
選択肢:
A. CLIコマンドを高速に実行できるようになる
B. 設定内容を自動的に最適化してくれる
C. 設定の再利用性と保守性を高められる
D. 機器との接続が不要になる
正解:
C
解説:
テンプレートを使う最大のメリットは、「設定とロジックを分離できること」です。
従来のスクリプトでは、
config = f”hostname {hostname}\\ninterface {iface}”
のように、コードの中に設定を書いてしまいがちです。この方法では、
といった問題があります。
一方、テンプレートを使うと、
を分離できます。
これにより、
といったメリットがあります。
AはNetmikoなどの役割、Bは自動最適化ではありません。Dも誤りで、接続処理は別途必要です。
今回は、Jinja2テンプレートを使った設定生成というテーマを取り上げました。
テンプレートを使うことで、
といった効果が得られます。
これまで扱ってきた、
と組み合わせることで、ネットワーク自動化はより実践的なものになります。単体の技術としてではなく、「どう組み合わせるか」を意識することが重要です。ネットワーク自動化は、「1台の設定を自動化する段階」から、「複数機器へ安全に展開する段階」へ進むことで、初めて現場で価値を発揮します。テンプレートは、そのための重要な要素のひとつです。
次回は、設定の適用や検証といった「変更を伴う自動化」について取り上げる予定です。ぜひ続けて確認していきましょう。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes