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

以上です。
上手くコンフィグが生成されていますね。
本当はこのコンフィグを機器に流し込むところまでやりたいんですが、それはまたの機会と言う事で!