jinja2を使ってコンフィグの自動生成をやってみた
最近業務で似たような検証環境をいくつも構築する事が多くなり、構築するたびにコンフィグを用意するのは面倒になっていました。
なのでjinja2を使って自動でコンフィグを生成するようにしてみました。
実行環境
- Winodows7 64bit
- Python 3.7.0
- pip 18.1
- jinja2 2.10
jinja2のインストール
pip install jinja2
テンプレートファイルの準備
※一部のコンフィグのみ載せています。
★OSPF設定 set protocols ospf area {{area_number}} interface lo0.0 passive set protocols ospf area {{area_number}} interface lo0.0 metric 10 set protocols ospf area {{area_number}} interface ge-0/0/0.0 interface-type p2p set protocols ospf area {{area_number}} interface ge-0/0/0.0 metric 100 ★BGP設定 set routing-options router-id {{Loopback}} set routing-options autonomous-system {{AS_number}} set protocols bgp group VPN local-address {{Loopback}} set protocols bgp group VPN cluster {{Loopback}} set protocols bgp group VPN peer-as {{AS_number}} set protocols bgp group VPN neighbor {{Opp_address}} import passall set protocols bgp group VPN neighbor {{Opp_address}} export passall
jinja2で生成するスクリプトの準備
#! /usr/bin/env python # -*- coding: utf-8 -*- from jinja2 import Template, Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('.')) template = env.get_template('template.txt') data = { "area_number": "0.0.0.0", "Loopback": "192.168.27.129", "AS_number": "65000", "Opp_address": "192.168.27.3", } rendered = template.render(data) print(str(rendered))a
実行結果
$ python config_generate.py ★OSPF設定 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface lo0.0 metric 10 set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 interface-type p2p set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 metric 100 ★BGP設定 set routing-options router-id 192.168.27.129 set routing-options autonomous-system 65000 set protocols bgp group VPN local-address 192.168.27.129 set protocols bgp group VPN cluster 192.168.27.129 set protocols bgp group VPN peer-as 65000} set protocols bgp group VPN neighbor 192.168.27.3 import passall set protocols bgp group VPN neighbor 192.168.27.3 export passall
以上です。
上手くコンフィグが生成されていますね。
本当はこのコンフィグを機器に流し込むところまでやりたいんですが、それはまたの機会と言う事で!