Warning in ansible: You're using Ansible version 12.x or higher; netlab might not work correctly ... Ansible core version 2.19 introduced breaking changes in templates and playbooks ... We tested netlab core with Ansible version 12.x but not every device template ... You might want to downgrade Ansible to version 11.10 or lower. ... Use 'netlab install ansible' on Ubuntu to do that ... Finally, please open a GitHub issue if you experience errors/crashes ... Set defaults.ansible.warnings.ver12 to False to hide this warning [INFO] Checking for updates in configuration templates [INFO] Creating configuration snippets [CREATED] dut: initial,routing,vrf [CREATED] x1: initial,routing [CREATED] x2: initial,routing [CREATED] x3: initial,routing [INFO] Executing initial configuration for node x1 (namespace clab- ml_17-x1) [INFO] Executing routing configuration for node x1 (namespace clab- ml_17-x1) [INFO] Executing initial configuration for node x2 (namespace clab- ml_17-x2) [INFO] Executing routing configuration for node x2 (namespace clab- ml_17-x2) [INFO] Executing initial configuration for node x3 (namespace clab- ml_17-x3) [INFO] Executing routing configuration for node x3 (namespace clab- ml_17-x3) [INFO] Starting Ansible playbook to deploy the rest of the configurations [WARNING]: Could not match supplied host pattern, ignoring: unprovisioned [WARNING]: Found variable using reserved name 'hosts'. Origin: /work/netlab_cicd/group_vars/all/topology.yml:177:1 175 prefix: 32 176 ipv6: 2001:db8:4::/48 177 hosts: ^ column 1 PLAY [Deploy initial device configuration] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [x1] ok: [x2] ok: [x3] ok: [dut] TASK [Generic readiness tests] ************************************************* skipping: [dut] skipping: [x1] skipping: [x2] skipping: [x3] TASK [Find device readiness script] ******************************************** ok: [x1] ok: [x2] ok: [x3] ok: [dut] TASK [Wait for device to become ready] ***************************************** skipping: [dut] skipping: [x1] skipping: [x2] skipping: [x3] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x2 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x3 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 [Figure out whether to deploy the module normalize on current device] ***** ok: [x1] TASK [Find configuration template for normalize] ******************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x1] TASK [Deploy normalize configuration] ****************************************** skipping: [x1] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [x2] TASK [Find configuration template for normalize] ******************************* ok: [x2] TASK [fail] ******************************************************************** skipping: [x2] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [x2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x2] TASK [Deploy normalize configuration] ****************************************** skipping: [x2] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [x3] TASK [Find configuration template for normalize] ******************************* ok: [x3] TASK [fail] ******************************************************************** skipping: [x3] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [x3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x3] TASK [Deploy normalize configuration] ****************************************** skipping: [x3] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x2 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x3 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!\nlldp\n!\n\nvrf red\n rd 65000:1\n!\n\n address-family ipv4 unicast\n route-target import 65000:1\n route-target export 65000:1\n exit-address-family\n address-family ipv6 unicast\n route-target import 65000:1\n route-target export 65000:1\n exit-address-family\n\nvrf blue\n rd 65000:2\n!\n\n address-family ipv4 unicast\n route-target import 65000:2\n route-target export 65000:2\n exit-address-family\n address-family ipv6 unicast\n route-target import 65000:2\n route-target export 65000:2\n exit-address-family\n\n\n\ninterface mgmt\n no lldp transmit\n no lldp receive\n!\n\n\ninterface loopback 0\n ip address 10.0.0.1/32\n ipv6 address 2001:db8:1:1::1/64\n no ipv6 nd suppress-ra\n ipv6 nd ra min-interval 3\n ipv6 nd ra max-interval 4\n no shutdown\n!\n\ninterface 1/1/1\n shutdown\n mtu 9198\n vrf attach red\n description dut -> x1 [stub]\n ip address 172.16.0.1/24\n ipv6 address 2001:db8:2::1/64\n no ipv6 nd suppress-ra\n ipv6 nd ra min-interval 3\n ipv6 nd ra max-interval 4\n no shutdown\n!\n\ninterface 1/1/2\n shutdown\n mtu 9198\n vrf attach blue\n description dut -> x2 [stub]\n ip address 172.16.1.1/24\n ipv6 address 2001:db8:2:1::1/64\n no ipv6 nd suppress-ra\n ipv6 nd ra min-interval 3\n ipv6 nd ra max-interval 4\n no shutdown\n!\n\ninterface 1/1/3\n shutdown\n mtu 9198\n description dut -> x3 [stub]\n ip address 172.16.2.1/24\n ipv6 address 2001:db8:2:2::1/64\n no ipv6 nd suppress-ra\n ipv6 nd ra min-interval 3\n ipv6 nd ra max-interval 4\n no shutdown\n!\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/arubacx.yml for dut TASK [tempfile] **************************************************************** changed: [dut -> localhost] TASK [template] **************************************************************** changed: [dut -> localhost] TASK [aoscx_config: deploying initial from /work/netlab_cicd/node_files/dut/initial] *** changed: [dut] TASK [file] ******************************************************************** changed: [dut -> localhost] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [x1] TASK [Find configuration template for initial] ********************************* skipping: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [x1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x1] TASK [Deploy initial configuration] ******************************************** skipping: [x1] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [x2] TASK [Find configuration template for initial] ********************************* skipping: [x2] TASK [fail] ******************************************************************** skipping: [x2] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [x2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x2] TASK [Deploy initial configuration] ******************************************** skipping: [x2] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [x3] TASK [Find configuration template for initial] ********************************* skipping: [x3] TASK [fail] ******************************************************************** skipping: [x3] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [x3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x3] TASK [Deploy initial configuration] ******************************************** skipping: [x3] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [x1] ok: [x2] ok: [x3] 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) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x2 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x2 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x3 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x3 => (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!\n!\n!\n!\n! Static routes\n!\nip route 172.16.41.0 255.255.255.0 1/1/1 172.16.0.2 vrf blue \nipv6 route 3fff:cafe:0:1::/64 1/1/1 vrf blue \nip route 172.16.42.0 255.255.255.0 1/1/2 172.16.1.3 vrf red \nipv6 route 3fff:cafe:0:2::/64 1/1/2 vrf red \nip route 172.16.42.0 255.255.255.0 1/1/2 172.16.1.3 \nipv6 route 3fff:cafe:0:2::/64 1/1/2 \nip route 172.16.40.0 255.255.255.0 1/1/3 172.16.2.4 vrf blue \nipv6 route 3fff:cafe::/64 1/1/3 vrf blue \n" } TASK [Deploy routing configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/arubacx.yml for dut TASK [tempfile] **************************************************************** changed: [dut -> localhost] TASK [template] **************************************************************** changed: [dut -> localhost] TASK [aoscx_config: deploying routing from /work/netlab_cicd/node_files/dut/routing] *** changed: [dut] TASK [file] ******************************************************************** changed: [dut -> localhost] 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" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/arubacx.yml for dut TASK [tempfile] **************************************************************** changed: [dut -> localhost] TASK [template] **************************************************************** changed: [dut -> localhost] TASK [aoscx_config: deploying vrf from /work/netlab_cicd/node_files/dut/vrf] *** ok: [dut] TASK [file] ******************************************************************** changed: [dut -> localhost] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [x1] TASK [Find configuration template for routing] ********************************* skipping: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [x1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x1] TASK [Deploy routing configuration] ******************************************** skipping: [x1] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [x1] TASK [Find configuration template for vrf] ************************************* skipping: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [x1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x1] TASK [Deploy vrf configuration] ************************************************ skipping: [x1] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [x2] TASK [Find configuration template for routing] ********************************* skipping: [x2] TASK [fail] ******************************************************************** skipping: [x2] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [x2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x2] TASK [Deploy routing configuration] ******************************************** skipping: [x2] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [x2] TASK [Find configuration template for vrf] ************************************* skipping: [x2] TASK [fail] ******************************************************************** skipping: [x2] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [x2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x2] TASK [Deploy vrf configuration] ************************************************ skipping: [x2] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [x3] TASK [Find configuration template for routing] ********************************* skipping: [x3] TASK [fail] ******************************************************************** skipping: [x3] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [x3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x3] TASK [Deploy routing configuration] ******************************************** skipping: [x3] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [x3] TASK [Find configuration template for vrf] ************************************* skipping: [x3] TASK [fail] ******************************************************************** skipping: [x3] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [x3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [x3] TASK [Deploy vrf configuration] ************************************************ skipping: [x3] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=37 changed=11 unreachable=0 failed=0 skipped=8 rescued=0 ignored=0 x1 : ok=13 changed=0 unreachable=0 failed=0 skipped=20 rescued=0 ignored=0 x2 : ok=13 changed=0 unreachable=0 failed=0 skipped=20 rescued=0 ignored=0 x3 : ok=13 changed=0 unreachable=0 failed=0 skipped=20 rescued=0 ignored=0 Warning: The following warnings were generated during the 'netlab initial' processing Warning: ansible: You're using Ansible version 12.x or higher; netlab might not work correctly Results of configuration script deployments ================================================================================ x1 OK: 2 x2 OK: 2 x3 OK: 2 Use this topology to test inter- VRF IPv4 and IPv6 static routes. DUT has to have static routes for loopback addresses of X1 and X2.