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 [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:157:1 155 ipv4: 10.2.0.0/24 156 prefix: 32 157 hosts: ^ column 1 PLAY [Deploy initial device configuration] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut_a] ok: [dut_b] ok: [x1] TASK [Generic readiness tests] ************************************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/readiness-check/ssh.yml for dut_a, dut_b, x1 => (item=ssh) TASK [Check if 'sshpass' is installed] ***************************************** ok: [dut_a -> localhost] TASK [Check for 'timeout' command] ********************************************* ok: [dut_a -> localhost] ok: [x1 -> localhost] ok: [dut_b -> localhost] TASK [Execute local ssh command to check ssh readiness] ************************ FAILED - RETRYING: [x1 -> localhost]: Execute local ssh command to check ssh readiness (20 retries left). ok: [dut_b -> localhost] ok: [dut_a -> localhost] ok: [x1 -> localhost] TASK [Confirm dut_a SSH server works] ****************************************** ok: [dut_a] => { "msg": "Node dut_a is ready." } ok: [dut_b] => { "msg": "Node dut_b is ready." } ok: [x1] => { "msg": "Node x1 is ready." } TASK [Find device readiness script] ******************************************** ok: [dut_a] ok: [dut_b] ok: [x1] TASK [Wait for device to become ready] ***************************************** skipping: [dut_a] skipping: [dut_b] skipping: [x1] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut_a included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut_b included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [dut_a] TASK [Find configuration template for normalize] ******************************* ok: [dut_a] TASK [fail] ******************************************************************** skipping: [dut_a] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [dut_a] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut_a] => { "msg": "normalize configuration for dut_a\n=========================================\n!\ninterface Ethernet0/1\n shutdown\n!\ninterface Ethernet0/2\n shutdown\n" } TASK [Deploy normalize configuration] ****************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut_a TASK [ios_config: deploying normalize from /work/netlab_cicd/node_files/dut_a/normalize] *** [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_a] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [dut_b] TASK [Find configuration template for normalize] ******************************* ok: [dut_b] TASK [fail] ******************************************************************** skipping: [dut_b] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [dut_b] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut_b] => { "msg": "normalize configuration for dut_b\n=========================================\n!\ninterface Ethernet0/1\n shutdown\n!\ninterface Ethernet0/2\n shutdown\n" } TASK [Deploy normalize configuration] ****************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut_b TASK [ios_config: deploying normalize from /work/netlab_cicd/node_files/dut_b/normalize] *** changed: [dut_b] 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] *************** ok: [x1] => { "msg": "normalize configuration for x1\n=========================================\n!\ninterface Ethernet1\n shutdown\n!\ninterface Ethernet2\n shutdown\n" } TASK [Deploy normalize configuration] ****************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying normalize from /work/netlab_cicd/node_files/x1/normalize] *** [WARNING]: Task result `warnings` was instead of . changed: [x1] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut_a included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut_b included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 TASK [Figure out whether to deploy the module initial on current device] ******* ok: [dut_a] TASK [Find configuration template for initial] ********************************* ok: [dut_a] TASK [fail] ******************************************************************** skipping: [dut_a] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [dut_a] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut_a] => { "msg": "initial configuration for dut_a\n=========================================\nhostname dut_a\n!\nno ip domain lookup\nlogging buffered 256000\n\n!\nlldp run\n!\nip host dut_b 10.0.0.2\nip host x1 10.0.0.3\n!\nip routing\n!\nno ipv6 unicast-routing\n!\nvlan 42\n name red\n!\nvlan 76\n name blue\n!\n\n!\n!\ninterface Loopback0\n ip address 10.0.0.1 255.255.255.255\n!\ninterface Ethernet0/0\n no lldp transmit\n no lldp receive\n!\ninterface Ethernet0/1\n no switchport\n description dut_a -> x1\n mac-address caf0.0001.0001\n no shutdown\n!\ninterface Ethernet0/2\n no switchport\n description dut_a -> dut_b\n mac-address caf0.0001.0002\n no shutdown\n!\ninterface Vlan76\n description VLAN blue (76) -> [dut_b,x1]\n mac-address caf4.0001.0000\n no shutdown\n!\ninterface Vlan42\n description VLAN red (42) -> [dut_b,x1]\n mac-address caf4.0001.0001\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_a TASK [ios_config: deploying initial from /work/netlab_cicd/node_files/dut_a/initial] *** changed: [dut_a] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [dut_b] TASK [Find configuration template for initial] ********************************* ok: [dut_b] TASK [fail] ******************************************************************** skipping: [dut_b] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [dut_b] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut_b] => { "msg": "initial configuration for dut_b\n=========================================\nhostname dut_b\n!\nno ip domain lookup\nlogging buffered 256000\n\n!\nlldp run\n!\nip host dut_a 10.0.0.1\nip host x1 10.0.0.3\n!\nip routing\n!\nno ipv6 unicast-routing\n!\nvlan 76\n name blue\n!\nvlan 42\n name red\n!\n\n!\n!\ninterface Loopback0\n ip address 10.0.0.2 255.255.255.255\n!\ninterface Ethernet0/0\n no lldp transmit\n no lldp receive\n!\ninterface Ethernet0/1\n no switchport\n description dut_b -> x1\n mac-address caf0.0002.0001\n no shutdown\n!\ninterface Ethernet0/2\n no switchport\n description dut_b -> dut_a\n mac-address caf0.0002.0002\n no shutdown\n!\ninterface Vlan76\n description VLAN blue (76) -> [dut_a,x1]\n mac-address caf4.0002.0000\n no shutdown\n!\ninterface Vlan42\n description VLAN red (42) -> [dut_a,x1]\n mac-address caf4.0002.0001\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_b TASK [ios_config: deploying initial from /work/netlab_cicd/node_files/dut_b/initial] *** changed: [dut_b] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [x1] TASK [Find configuration template for initial] ********************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "initial configuration for x1\n=========================================\nhostname x1\n!\nlogging monitor debugging\naaa authorization exec default local\n!\nlldp run\nip routing\nno ipv6 unicast-routing\n!\n!\nip host duta 10.0.0.1\nip host dutb 10.0.0.2\n!\ninterface Management0\n no lldp transmit\n no lldp receive\n!\ninterface Loopback0\n ip address 10.0.0.3/32\n!\ninterface Ethernet1\n no switchport\n description x1 -> dut_a\n mac-address caf0.0003.0001\n!\n no shutdown\n!\ninterface Ethernet2\n no switchport\n description x1 -> dut_b\n mac-address caf0.0003.0002\n!\n no shutdown\n!\ninterface Vlan76\n description VLAN blue (76) -> [dut_a,dut_b]\n!\ninterface Vlan42\n description VLAN red (42) -> [dut_a,dut_b]\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying initial from /work/netlab_cicd/node_files/x1/initial] *** changed: [x1] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut_a] ok: [dut_b] ok: [x1] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut_a => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut_a => (item=stp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut_b => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut_b => (item=stp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 => (item=stp) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [dut_a] TASK [Find configuration template for vlan] ************************************ ok: [dut_a] TASK [fail] ******************************************************************** skipping: [dut_a] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [dut_a] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut_a] => { "msg": "vlan configuration for dut_a\n=========================================\nvlan 42\n name red\n!\nvlan 76\n name blue\n!\n\n!\ninterface Ethernet0/1\n\n switchport\n switchport trunk encapsulation dot1q\n switchport mode trunk\n switchport trunk allowed vlan 42,76\n\n!\ninterface Ethernet0/2\n\n switchport\n switchport trunk encapsulation dot1q\n switchport mode trunk\n switchport trunk allowed vlan 42,76\n\n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut_a TASK [ios_config: deploying vlan from /work/netlab_cicd/node_files/dut_a/vlan] *** changed: [dut_a] TASK [Figure out whether to deploy the module stp on current device] *********** ok: [dut_a] TASK [Find configuration template for stp] ************************************* ok: [dut_a] TASK [fail] ******************************************************************** skipping: [dut_a] TASK [Find configuration deployment deploy_script for stp] ********************* ok: [dut_a] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut_a] => { "msg": "stp configuration for dut_a\n=========================================\n\n\n\nspanning-tree mode rapid-pvst \nspanning-tree pathcost method long\n\n\n\nspanning-tree vlan 42 priority 4096\nspanning-tree vlan 76 priority 32768\n\n\n \n" } TASK [Deploy stp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut_a TASK [ios_config: deploying stp from /work/netlab_cicd/node_files/dut_a/stp] *** changed: [dut_a] TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [dut_b] TASK [Find configuration template for vlan] ************************************ ok: [dut_b] TASK [fail] ******************************************************************** skipping: [dut_b] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [dut_b] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut_b] => { "msg": "vlan configuration for dut_b\n=========================================\nvlan 76\n name blue\n!\nvlan 42\n name red\n!\n\n!\ninterface Ethernet0/1\n\n switchport\n switchport trunk encapsulation dot1q\n switchport mode trunk\n switchport trunk allowed vlan 42,76\n\n!\ninterface Ethernet0/2\n\n switchport\n switchport trunk encapsulation dot1q\n switchport mode trunk\n switchport trunk allowed vlan 42,76\n\n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut_b TASK [ios_config: deploying vlan from /work/netlab_cicd/node_files/dut_b/vlan] *** changed: [dut_b] TASK [Figure out whether to deploy the module stp on current device] *********** ok: [dut_b] TASK [Find configuration template for stp] ************************************* ok: [dut_b] TASK [fail] ******************************************************************** skipping: [dut_b] TASK [Find configuration deployment deploy_script for stp] ********************* ok: [dut_b] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut_b] => { "msg": "stp configuration for dut_b\n=========================================\n\n\n\nspanning-tree mode rapid-pvst \nspanning-tree pathcost method long\n\n\n\nspanning-tree vlan 76 priority 12288\nspanning-tree vlan 42 priority 12288\n\n\n \n" } TASK [Deploy stp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut_b TASK [ios_config: deploying stp from /work/netlab_cicd/node_files/dut_b/stp] *** changed: [dut_b] TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [x1] TASK [Find configuration template for vlan] ************************************ ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "vlan configuration for x1\n=========================================\nvlan 76\n name blue\n!\nvlan 42\n name red\n!\n\n!\ninterface Ethernet1\n switchport\n switchport mode trunk\n switchport trunk allowed vlan 42,76\n switchport trunk native vlan tag\n!\ninterface Ethernet2\n switchport\n switchport mode trunk\n switchport trunk allowed vlan 42,76\n switchport trunk native vlan tag\n!\ninterface Vlan76\n!\ninterface Vlan42\n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying vlan from /work/netlab_cicd/node_files/x1/vlan] **** changed: [x1] TASK [Figure out whether to deploy the module stp on current device] *********** ok: [x1] TASK [Find configuration template for stp] ************************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for stp] ********************* ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "stp configuration for x1\n=========================================\nspanning-tree mode rapid-pvst \n\nspanning-tree priority 16384\n\nspanning-tree vlan-id 76 priority 16384\nspanning-tree vlan-id 42 priority 16384\n\n\n" } TASK [Deploy stp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying stp from /work/netlab_cicd/node_files/x1/stp] ****** changed: [x1] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut_a : ok=36 changed=4 unreachable=0 failed=0 skipped=5 rescued=0 ignored=0 dut_b : ok=35 changed=4 unreachable=0 failed=0 skipped=5 rescued=0 ignored=0 x1 : ok=35 changed=4 unreachable=0 failed=0 skipped=5 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 [CREATED] dut_a: normalize,initial,vlan,stp [CREATED] dut_b: normalize,initial,vlan,stp [CREATED] x1: normalize,initial,vlan,stp The devices under test form a layer-2 triangle of VLAN trunks. The devices are running PVRST and have different per-VLAN root priorities. If DUT_A and DUT_B run PVRST and has correct per-VLAN root priorities, DUT_A becomes the root bridge for red VLAN and DUT_B becomes the root bridge for the blue VLAN.