Creating Device configuration snippets [CREATED] dut: initial,ospf,bgp,vrf [CREATED] r1: initial,ospf [CREATED] r2: initial,bgp [CREATED] r3: initial,ospf [CREATED] r4: initial,bgp Config Deploying device configurations [INFO] Executing initial configuration for node r1 [INFO] Executing initial configuration for node r2 [INFO] Executing initial configuration for node r3 [INFO] Executing initial configuration for node r4 [INFO] Executing ospf configuration for node r1 [INFO] Executing bgp configuration for node r2 [INFO] Executing bgp configuration for node r4 [INFO] Executing ospf configuration for node r3 [INFO] Starting Ansible playbook to deploy the rest of the configurations [WARNING]: Found variable using reserved name: hosts PLAY [Deploy initial device configuration] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [dut] TASK [Find configuration template for normalize] ******************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] TASK [Deploy normalize configuration] ****************************************** skipping: [dut] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut TASK [Figure out whether to deploy the module initial on current device] ******* ok: [dut] TASK [Find configuration template for initial] ********************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "initial configuration for dut\n=========================================\n\n/system identity set name=\"dut\"\n\n/interface bridge add name=loopback protocol-mode=none\n\n\n/ip address add interface=loopback address=10.0.0.1/32\n\n\n\n\n/ip/vrf/add place-before=0 name=red interfaces=ether2,ether3\n\n\n\n/ip/vrf/add place-before=0 name=blue interfaces=ether4,ether5\n\n\n\n/interface ethernet set comment=\"dut -> r1\" ether2\n\n/interface ethernet set mtu=1500 ether2\n/ip address add interface=ether2 address=10.1.0.1/30\n/ip address set [find where interface=ether2] comment=\"dut -> r1\"\n\n\n/interface ethernet set comment=\"dut -> r2 [external]\" ether3\n\n/interface ethernet set mtu=1500 ether3\n/ip address add interface=ether3 address=10.1.0.5/30\n/ip address set [find where interface=ether3] comment=\"dut -> r2 [external]\"\n\n\n/interface ethernet set comment=\"dut -> r3\" ether4\n\n/interface ethernet set mtu=1500 ether4\n/ip address add interface=ether4 address=10.1.0.9/30\n/ip address set [find where interface=ether4] comment=\"dut -> r3\"\n\n\n/interface ethernet set comment=\"dut -> r4 [external]\" ether5\n\n/interface ethernet set mtu=1500 ether5\n/ip address add interface=ether5 address=10.1.0.13/30\n/ip address set [find where interface=ether5] comment=\"dut -> r4 [external]\"\n\n\n/ip neighbor discovery-settings set discover-interface-list=all\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/routeros7.yml for dut TASK [load initial from /work/netlab_cicd/node_files/dut/initial] ************** ok: [dut] TASK [Run commands on CHR] ***************************************************** changed: [dut] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=vrf) TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [dut] TASK [Find configuration template for ospf] ************************************ ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for ospf] ******************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "ospf configuration for dut\n=========================================\n\n\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/routeros7.yml for dut TASK [load ospf from /work/netlab_cicd/node_files/dut/ospf] ******************** ok: [dut] TASK [Run commands on CHR] ***************************************************** changed: [dut] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [dut] TASK [Find configuration template for bgp] ************************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for bgp] ********************* ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "bgp configuration for dut\n=========================================\n\n/routing/bgp/template add name=main as=65000 output.network=bgp-networks\n\n/routing/bgp/template set main router-id=10.0.0.1\n\n\n\n# BGP Network now is controlled by simple ACL\n/ip/firewall/address-list/ add list=bgp-networks address=10.0.0.1/32\n\n\n\n\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/routeros7.yml for dut TASK [load bgp from /work/netlab_cicd/node_files/dut/bgp] ********************** ok: [dut] TASK [Run commands on CHR] ***************************************************** changed: [dut] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [dut] TASK [Find configuration template for vrf] ************************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for vrf] ********************* ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vrf configuration for dut\n=========================================\n\n/routing/bgp/vpn add label-allocation-policy=per-vrf vrf=red route-distinguisher=65000:1 import.route-targets=65000:1 export.route-targets=65000:1 export.redistribute=bgp,connected,ospf,static,vpn\n\n/routing/bgp/template add name=vrf_red as=65000 output.network=bgp-networks-red vrf=red routing-table=red output.redistribute=connected,bgp,bgp-mpls-vpn,vpn\n\n/routing/bgp/template set vrf_red router-id=10.0.0.1\n\n/routing/bgp/template set vrf_red output.redistribute=([get vrf_red output.redistribute],\"ospf\")\n\n\n/routing/bgp/connection add template=vrf_red name=10_1_0_6 remote.address=10.1.0.6 remote.as=65100 comment=\"r2\" local.role=ebgp\n\n\n\n\n/routing/bgp/vpn add label-allocation-policy=per-vrf vrf=blue route-distinguisher=65000:2 import.route-targets=65000:2 export.route-targets=65000:2 export.redistribute=bgp,connected,ospf,static,vpn\n\n/routing/bgp/template add name=vrf_blue as=65000 output.network=bgp-networks-blue vrf=blue routing-table=blue output.redistribute=connected,bgp,bgp-mpls-vpn,vpn\n\n/routing/bgp/template set vrf_blue router-id=10.0.0.1\n\n/routing/bgp/template set vrf_blue output.redistribute=([get vrf_blue output.redistribute],\"ospf\")\n\n\n/routing/bgp/connection add template=vrf_blue name=10_1_0_14 remote.address=10.1.0.14 remote.as=65101 comment=\"r4\" local.role=ebgp\n\n\n\n\n\n\n\n\n\n/routing/ospf/instance add name=default4_red version=2 router-id=10.100.0.1 vrf=red\n\n/routing/ospf/area add instance=default4_red name=\"red_2_0.0.0.0\" area-id=0.0.0.0\n\n\n\n\n\n\n\n\n/routing/ospf/interface-template add area=[/routing ospf area find area-id=0.0.0.0 and instance=default4_red] interface=ether2 type=ptp\n\n\n\n/routing/ospf/instance set [/routing/ospf/instance find name=default4_red] redistribute=bgp,bgp-mpls-vpn,vpn,connected,static routing-table=red\n\n\n\n/routing/ospf/instance add name=default4_blue version=2 router-id=10.101.0.1 vrf=blue\n\n/routing/ospf/area add instance=default4_blue name=\"blue_2_0.0.0.0\" area-id=0.0.0.0\n\n\n\n\n\n\n\n\n/routing/ospf/interface-template add area=[/routing ospf area find area-id=0.0.0.0 and instance=default4_blue] interface=ether4 type=ptp\n\n\n\n/routing/ospf/instance set [/routing/ospf/instance find name=default4_blue] redistribute=bgp,bgp-mpls-vpn,vpn,connected,static routing-table=blue\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/routeros7.yml for dut TASK [load vrf from /work/netlab_cicd/node_files/dut/vrf] ********************** ok: [dut] TASK [Run commands on CHR] ***************************************************** changed: [dut] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=38 changed=4 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ r1 OK: 2 r2 OK: 2 r3 OK: 2 r4 OK: 2 The device under test has two VRFs with two interfaces in each VRF. Routers are attached to those interfaces and run OSPF and BGP with device under test. Assuming the OSPF and BGP multi-vrf test cases succeeded, this one tests OSPF-to-BGP two-way redistribution. * r1 and r2 should be able to ping each other * r3 and r4 should be able to ping each other * r1 should not be able to reach r3