Creating Device configuration snippets [CREATED] dut: initial,ospf,bgp [CREATED] rc: initial,ospf,bgp,frr-community [CREATED] r2: initial,ospf,bgp [CREATED] x1: initial,bgp Config Deploying device configurations [INFO] Executing initial configuration for node rc [INFO] Executing initial configuration for node r2 [INFO] Executing initial configuration for node x1 [INFO] Executing ospf configuration for node rc [INFO] Executing bgp configuration for node x1 [INFO] Executing ospf configuration for node r2 [INFO] Executing bgp configuration for node rc [INFO] Executing bgp configuration for node r2 [INFO] Executing frr-community configuration for node rc [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/interface ethernet set comment=\"dut -> r2\" 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 -> r2\"\n\n\n/interface ethernet set comment=\"dut -> x1 [external]\" ether3\n\n/interface ethernet set mtu=1500 ether3\n/ip address add interface=ether3 address=10.1.0.9/30\n/ip address set [find where interface=ether3] comment=\"dut -> x1 [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) 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\n/routing/ospf/instance add name=default4 version=2 router-id=10.0.0.1 vrf=main\n\n/routing/ospf/area add instance=default4 name=\"main_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] interface=loopback \n\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] interface=ether2 type=ptp\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/routing/bgp/template set main cluster-id=10.0.0.1\n\n\n/routing/bgp/connection add template=main name=10_0_0_10 remote.address=10.0.0.10 remote.as=65000 comment=\"rc\" local.role=ebgp\n\n/routing/bgp/connection set [/routing/bgp/connection find name=10_0_0_10] local.role=ibgp local.address=loopback\n\n\n/routing/bgp/connection set [/routing/bgp/connection find name=10_0_0_10] local.role=ibgp-rr\n\n\n/routing/bgp/connection set [/routing/bgp/connection find name=10_0_0_10] nexthop-choice=force-self\n\n\n/routing/bgp/connection add template=main name=10_0_0_2 remote.address=10.0.0.2 remote.as=65000 comment=\"r2\" local.role=ebgp\n\n/routing/bgp/connection set [/routing/bgp/connection find name=10_0_0_2] local.role=ibgp local.address=loopback\n\n\n/routing/bgp/connection set [/routing/bgp/connection find name=10_0_0_2] local.role=ibgp-rr\n\n\n/routing/bgp/connection set [/routing/bgp/connection find name=10_0_0_2] nexthop-choice=force-self\n\n\n/routing/bgp/connection add template=main name=10_1_0_10 remote.address=10.1.0.10 remote.as=65101 comment=\"x1\" local.role=ebgp\n\n\n/routing/bgp/connection set [/routing/bgp/connection find name=10_1_0_10] nexthop-choice=force-self\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] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=30 changed=3 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ rc OK: 4 r2 OK: 3 x1 OK: 2 Use this topology to test the BGP community propagation. The device under test is a BGP route reflector that should propagate standard and extended communities to IBGP neighbors but only standard communities to EBGP neighbors (the default setting). Three BGP communities are attached to the prefix advertised by RC: a standard one, an extended one, and a long one (standard communitiy using 4-octet AS)