Before proceeding, make sure to install “netaddr” as this is required for “ipaddr()” used in the Jinja2 configuration template.
pip install netaddr
aggr.yml is the playbook that will be utilized for generating L3 SVI configuration:
---
- hosts: local
connection: local
gather_facts: no
tasks:
- name: GENERATE CONFIG
template:
src: ./SVI.j2
dest: ./{{ item.vlan }}.conf
with_items:
- { vrf: NET1, vlan: 502, vlanname: VLAN-502-NAME, net: 10.80.120.128/29 }
- { vrf: NET1, vlan: 503, vlanname: VLAN-503-NAME, net: 10.80.120.136/29 }
This is the SVI.j2 Jinja2 template that is being utilized to generate the final configuration:
###### A-Side ######
vlan {{ item.vlan }}
name {{ item.vlanname }}
interface Vlan {{ item.vlan }}
description {{ item.vlanname }}
mtu 9100
vrf member {{ item.vrf }}
no ip redirects
ip address {{ item.net | ipaddr('2') }}
hsrp version 2
hsrp 1
authentication md5 key-string password{{ item.vlan }}
preempt delay minimum 120
priority 120
timers 1 3
ip {{ item.net | ipaddr('1') | ipaddr('address') }}
###### B-Side ######
vlan {{ item.vlan }}
name {{ item.vlanname }}
interface Vlan {{ item.vlan }}
description {{ item.vlanname }}
mtu 9100
vrf member {{ item.vrf }}
no ip redirects
ip address {{ item.net | ipaddr('3') }}
hsrp version 2
hsrp 1
authentication md5 key-string password{{ item.vlan }}
preempt delay minimum 120
priority 110
timers 1 3
ip {{ item.net | ipaddr('1') | ipaddr('address') }}
In my setup, the play-book (aggr.yml), source template SVI.j2 file and the destination file exist in the same folder.
Hi Mavan,, Can you please through some light on Ansible tools. Thanks Jhaas
@JHAAS – Can you clarify what you are looking for specifically ? It will help me to provide a better answer.
Going through you blog & found Ansible is interesting. So, Is there any document, which you can share to me.
There aren’t specific documents. I read the official ansible docs and was able to work on something based on other blogs that I read. Most of ansible tutorial tends to be for server guys and not network guys.