Creating Device configuration snippets [CREATED] dut: initial,ripv2,bgp,vrf [CREATED] r1: initial,ripv2 [CREATED] r2: initial,bgp [CREATED] r3: initial,ripv2 [CREATED] r4: initial,bgp Checking Are lab devices ready to be configured? [INFO] Checking SSH server(s) on dut [SSH] SSH server on node dut (device iol) is ready after 25.4 seconds 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 bgp configuration for node r2 [INFO] Executing bgp configuration for node r4 [INFO] Executing ripv2 configuration for node r1 [INFO] Executing ripv2 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=========================================\nhostname dut\n!\nno ip domain lookup\nlogging buffered 256000\n\n!\nlldp run\n!\nip host dut-red 2001:db8:3::1 2001:db8:3:1::1\nip host dut-blue 2001:db8:3:2::1 2001:db8:3:3::1\nip host r1 2001:db8:1:2::1 2001:db8:cafe::2 2001:db8:3::2\nip host r2 2001:db8:1:3::1 2001:db8:3:1::2\nip host r3 2001:db8:1:4::1 2001:db8:cafe:1::4 2001:db8:3:2::2\nip host r4 2001:db8:1:5::1 2001:db8:3:3::2\n!\nip routing\n!\nipv6 unicast-routing\n!\nvrf definition red\n rd 65000:1\n route-target import 65000:1\n route-target export 65000:1\n!\n address-family ipv6\n exit-address-family\n!\nvrf definition blue\n rd 65000:2\n route-target import 65000:2\n route-target export 65000:2\n!\n address-family ipv6\n exit-address-family\n!\n\n!\n!\ninterface Loopback0\n ipv6 address 2001:DB8:1:1::1/64\n!\ninterface Ethernet0/0\n no lldp transmit\n no lldp receive\n!\ninterface Ethernet0/1\n vrf forwarding red\n description dut -> r1\n ipv6 nd ra interval 5\n ipv6 address 2001:DB8:3::1/64\n no shutdown\n!\ninterface Ethernet0/2\n vrf forwarding red\n description dut -> r2 [external]\n ipv6 nd ra interval 5\n ipv6 address 2001:DB8:3:1::1/64\n no shutdown\n!\ninterface Ethernet0/3\n vrf forwarding blue\n description dut -> r3\n ipv6 nd ra interval 5\n ipv6 address 2001:DB8:3:2::1/64\n no shutdown\n!\ninterface Ethernet1/0\n vrf forwarding blue\n description dut -> r4 [external]\n ipv6 nd ra interval 5\n ipv6 address 2001:DB8:3:3::1/64\n no shutdown\n!\n!\nline vty 0 4\n exec-timeout 0 0 \n!\nno banner exec\nno banner login\nno banner incoming\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut TASK [ios_config: deploying initial from /work/netlab_cicd/cisco_c/node_files/dut/initial] *** [WARNING]: To ensure idempotency and correct diff the input configuration lines should be similar to how they appear if present in the running configuration on device including the indentation 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=ripv2) 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 ripv2 on current device] ********* ok: [dut] TASK [Find configuration template for ripv2] *********************************** ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for ripv2] ******************* ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "ripv2 configuration for dut\n=========================================\n!\n!\n" } TASK [Deploy ripv2 configuration] ********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut TASK [ios_config: deploying ripv2 from /work/netlab_cicd/cisco_c/node_files/dut/ripv2] *** ok: [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!\nip bgp-community new-format\n!\nrouter bgp 65000\n no bgp default ipv4-unicast\n bgp update-delay 5\n bgp nopeerup-delay cold-boot 1\n bgp nopeerup-delay user-initiated 1\n bgp router-id 10.0.0.1\n!\n address-family ipv6\n bgp scan-time 5\n!\n network 2001:db8:1:1::/64\n\n!\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut TASK [ios_config: deploying bgp from /work/netlab_cicd/cisco_c/node_files/dut/bgp] *** 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!\nrouter bgp 65000\n!\n address-family ipv6 vrf red\n bgp router-id 10.0.0.1\n redistribute connected\n redistribute rip default\n\n!\n!\n neighbor 2001:db8:3:1::2 remote-as 65100\n neighbor 2001:db8:3:1::2 description r2\n\n neighbor 2001:db8:3:1::2 activate\n neighbor 2001:db8:3:1::2 advertisement-interval 0\n neighbor 2001:db8:3:1::2 send-community standard\n\n exit-address-family\n!\n address-family ipv6 vrf blue\n bgp router-id 10.0.0.1\n redistribute connected\n redistribute rip default\n\n!\n!\n neighbor 2001:db8:3:3::2 remote-as 65101\n neighbor 2001:db8:3:3::2 description r4\n\n neighbor 2001:db8:3:3::2 activate\n neighbor 2001:db8:3:3::2 advertisement-interval 0\n neighbor 2001:db8:3:3::2 send-community standard\n\n exit-address-family\n!\nexit\n!\n!\n!\nipv6 rip vrf-mode enable\n!\nipv6 router rip default\n address-family ipv6 vrf red\n timers 5 180 120 1\n redistribute bgp 65000\n redistribute connected\n\n!\n!\ninterface Ethernet0/1\n ipv6 rip default enable\n\nipv6 rip vrf-mode enable\n!\nipv6 router rip default\n address-family ipv6 vrf blue\n timers 5 180 120 1\n redistribute bgp 65000\n redistribute connected\n\n!\n!\ninterface Ethernet0/3\n ipv6 rip default enable\n\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut TASK [ios_config: deploying vrf from /work/netlab_cicd/cisco_c/node_files/dut/vrf] *** changed: [dut] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=34 changed=3 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ r1 Script: initial,ripv2 r2 Script: initial,bgp r3 Script: initial,ripv2 r4 Script: initial,bgp The device under test has two IPv6-only VRFs with two interfaces in each VRF. Routers are attached to those interfaces and run RIPng and BGP with device under test. This scenario tests RIPng in VRF, redistribution of connected subnets into RIPng and two-way RIPng-to-BGP 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