Creating Device configuration snippets [CREATED] dut: initial,routing,vrf [CREATED] h1: initial,routing [CREATED] h2: initial,routing [CREATED] h3: initial,routing [CREATED] v1: initial,routing [CREATED] v2: initial,routing [CREATED] v3: initial,routing Checking Are lab devices ready to be configured? [INFO] Checking SSH server(s) on dut [SSH] SSH server on node dut (device iosxr) is ready after 25.6 seconds Config Deploying device configurations [INFO] Executing initial configuration for node h1 (namespace clab- ml-17-h1) [INFO] Executing initial configuration for node h2 (namespace clab- ml-17-h2) [INFO] Executing initial configuration for node h3 (namespace clab- ml-17-h3) [INFO] Executing initial configuration for node v1 (namespace clab- ml-17-v1) [INFO] Executing initial configuration for node v2 (namespace clab- ml-17-v2) [INFO] Executing initial configuration for node v3 (namespace clab- ml-17-v3) [INFO] Executing routing configuration for node h1 (namespace clab- ml-17-h1) [INFO] Executing routing configuration for node h3 (namespace clab- ml-17-h3) [INFO] Executing routing configuration for node h2 (namespace clab- ml-17-h2) [INFO] Executing routing configuration for node v1 (namespace clab- ml-17-v1) [INFO] Executing routing configuration for node v2 (namespace clab- ml-17-v2) [INFO] Executing routing configuration for node v3 (namespace clab- ml-17-v3) [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!\ndomain lookup disable\n!\nlldp\n no management enable\n!\ndomain ipv4 host h1 172.16.0.2\ndomain ipv4 host h2 172.16.42.3\ndomain ipv4 host h3 172.16.42.42\ndomain ipv4 host v1 172.16.1.4\ndomain ipv4 host v2 172.16.42.5\ndomain ipv4 host v3 172.16.42.64\ndomain ipv6 host h1 2001:db8:2::2\ndomain ipv6 host h2 2001:db8:cafe:42::3\ndomain ipv6 host h3 2001:db8:cafe:42::2a\ndomain ipv6 host v1 2001:db8:2:1::4\ndomain ipv6 host v2 2001:db8:cafe:42::5\ndomain ipv6 host v3 2001:db8:cafe:42::40\n!\ninterface Loopback0\n no shutdown\n ipv4 address 10.0.0.1 255.255.255.255\n ipv6 address 2001:db8:1:1::1/64\n!\ninterface GigabitEthernet0/0/0/0\n no shutdown\n description dut -> h1 [stub]\n ipv4 address 172.16.0.1 255.255.255.0\n ipv6 address 2001:db8:2::1/64\n ipv6 nd ra-interval 5\n!\ninterface GigabitEthernet0/0/0/1\n no shutdown\n description dut -> [h2,h3] [stub]\n ipv4 address 172.16.42.1 255.255.255.0\n ipv6 address 2001:db8:cafe:42::1/64\n ipv6 nd ra-interval 5\n!\ninterface GigabitEthernet0/0/0/2\n no shutdown\n description dut -> v1 [stub]\n ipv4 address 172.16.1.1 255.255.255.0\n ipv6 address 2001:db8:2:1::1/64\n ipv6 nd ra-interval 5\n!\ninterface GigabitEthernet0/0/0/3\n no shutdown\n description dut -> [v2,v3] [stub]\n ipv4 address 172.16.42.1 255.255.255.0\n ipv6 address 2001:db8:cafe:42::1/64\n ipv6 nd ra-interval 5\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/iosxr.yml for dut TASK [iosxr_config: deploying initial from /work/netlab_cicd/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=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=vrf) TASK [Figure out whether to deploy the module routing on current device] ******* ok: [dut] TASK [Find configuration template for routing] ********************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for routing] ***************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "routing configuration for dut\n=========================================\n!\n! Static routes\n!\nrouter static\n address-family ipv4 unicast 172.16.42.42/32 Null0\n address-family ipv6 unicast 2001:db8:cafe:42::2a/128 Null0\n vrf tenant address-family ipv4 unicast 172.16.42.64/32 Null0\n vrf tenant address-family ipv6 unicast 2001:db8:cafe:42::40/128 Null0\n" } TASK [Deploy routing configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/iosxr.yml for dut TASK [iosxr_config: deploying routing from /work/netlab_cicd/node_files/dut/routing] *** 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=========================================\nvrf tenant\n rd 65000:1\n!\n address-family ipv4 unicast\n import route-target 65000:1\n export route-target 65000:1\n!\n address-family ipv6 unicast\n import route-target 65000:1\n export route-target 65000:1\n!\ninterface GigabitEthernet0/0/0/2\n vrf tenant\n!\ninterface GigabitEthernet0/0/0/3\n vrf tenant\n!\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/iosxr.yml for dut TASK [iosxr_config: deploying vrf from /work/netlab_cicd/node_files/dut/vrf] *** changed: [dut] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=27 changed=3 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ h1 Script: initial,routing h2 Script: initial,routing h3 Script: initial,routing v1 Script: initial,routing v2 Script: initial,routing v3 Script: initial,routing Use this topology to test 'discard' IPv4 and IPv6 static routes. H1 should be able to reach H2 but not H3 (due to a discard static route)