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.