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:161:1 159 ipv4: 10.2.0.0/24 160 prefix: 32 161 hosts: ^ column 1 PLAY [Deploy initial device configuration] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] ok: [x1] ok: [x2] TASK [Generic readiness tests] ************************************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/readiness-check/ssh.yml for dut, x1, x2 => (item=ssh) TASK [Check if 'sshpass' is installed] ***************************************** ok: [dut -> localhost] TASK [Check for 'timeout' command] ********************************************* ok: [dut -> localhost] ok: [x1 -> localhost] ok: [x2 -> 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). FAILED - RETRYING: [x2 -> localhost]: Execute local ssh command to check ssh readiness (20 retries left). ok: [dut -> localhost] ok: [x1 -> localhost] ok: [x2 -> localhost] TASK [Confirm dut SSH server works] ******************************************** ok: [dut] => { "msg": "Node dut is ready." } ok: [x1] => { "msg": "Node x1 is ready." } ok: [x2] => { "msg": "Node x2 is ready." } TASK [Find device readiness script] ******************************************** ok: [dut] ok: [x1] ok: [x2] TASK [Wait for device to become ready] ***************************************** skipping: [dut] skipping: [x1] skipping: [x2] 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 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] *************** ok: [dut] => { "msg": "normalize configuration for dut\n=========================================\n!\ninterface Port-channel1\n shutdown\n!\ninterface Port-channel2\n shutdown\n!\ninterface Ethernet0/1\n shutdown\n!\ninterface Ethernet0/2\n shutdown\n!\ninterface Ethernet0/3\n shutdown\n!\ninterface Ethernet1/0\n shutdown\n" } TASK [Deploy normalize configuration] ****************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut TASK [ios_config: deploying normalize from /work/netlab_cicd/node_files/dut/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] 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 [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] *************** ok: [x2] => { "msg": "normalize configuration for x2\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 x2 TASK [eos_config: deploying normalize from /work/netlab_cicd/node_files/x2/normalize] *** changed: [x2] 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 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 x1 172.16.0.2\nip host x2 172.16.1.3\n!\nip routing\n!\nno ipv6 unicast-routing\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 Port-channel1\n no switchport\n description dut -> x1 [stub]\n ip mtu 1500\n ip address 172.16.0.1 255.255.255.0\n no shutdown\n!\ninterface Port-channel2\n no switchport\n description dut -> x2 [stub]\n ip mtu 1400\n ip address 172.16.1.1 255.255.255.0\n no shutdown\n!\ninterface Ethernet0/1\n no switchport\n description dut -> x1 [stub]\n mac-address caf0.0001.0001\n no shutdown\n!\ninterface Ethernet0/2\n no switchport\n description dut -> x1 [stub]\n mac-address caf0.0001.0002\n no shutdown\n!\ninterface Ethernet0/3\n no switchport\n description dut -> x2 [stub]\n mac-address caf0.0001.0003\n no shutdown\n!\ninterface Ethernet1/0\n no switchport\n description dut -> x2 [stub]\n mac-address caf0.0001.0004\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/node_files/dut/initial] *** changed: [dut] 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\nno ip routing\nno ipv6 unicast-routing\n!\n!\nip host dut 10.0.0.1 172.16.0.1 172.16.1.1\nip host x2 172.16.1.3\n!\ninterface Management0\n no lldp transmit\n no lldp receive\n!\ninterface port-channel1\n no switchport\n mtu 1500\n description x1 -> dut [stub]\n ip address 172.16.0.2/24\n!\ninterface Ethernet1\n no switchport\n mtu 1500\n description x1 -> dut [stub]\n mac-address caf0.0002.0001\n!\n no shutdown\n!\ninterface Ethernet2\n no switchport\n mtu 1500\n description x1 -> dut [stub]\n mac-address caf0.0002.0002\n!\n no shutdown\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] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [x2] TASK [Find configuration template for initial] ********************************* ok: [x2] TASK [fail] ******************************************************************** skipping: [x2] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [x2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x2] => { "msg": "initial configuration for x2\n=========================================\nhostname x2\n!\nlogging monitor debugging\naaa authorization exec default local\n!\nlldp run\nno ip routing\nno ipv6 unicast-routing\n!\n!\nip host dut 10.0.0.1 172.16.0.1 172.16.1.1\nip host x1 172.16.0.2\n!\ninterface Management0\n no lldp transmit\n no lldp receive\n!\ninterface port-channel1\n no switchport\n mtu 1400\n description x2 -> dut [stub]\n ip address 172.16.1.3/24\n!\ninterface Ethernet1\n no switchport\n mtu 1400\n description x2 -> dut [stub]\n mac-address caf0.0003.0001\n!\n no shutdown\n!\ninterface Ethernet2\n no switchport\n mtu 1400\n description x2 -> dut [stub]\n mac-address caf0.0003.0002\n!\n no shutdown\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x2 TASK [eos_config: deploying initial from /work/netlab_cicd/node_files/x2/initial] *** changed: [x2] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] ok: [x1] ok: [x2] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=lag) 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 x1 => (item=lag) 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 x2 => (item=lag) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x2 => (item=routing) TASK [Figure out whether to deploy the module lag on current device] *********** ok: [dut] TASK [Find configuration template for lag] ************************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for lag] ********************* ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "lag configuration for dut\n=========================================\ninterface Port-channel1\n description dut -> x1\ninterface Ethernet0/1\n description dut -> x1 in channel-group 1\n channel-group 1 mode active\ninterface Ethernet0/2\n description dut -> x1 in channel-group 1\n channel-group 1 mode active\ninterface Port-channel2\n description dut -> x2\ninterface Ethernet0/3\n description dut -> x2 in channel-group 2\n channel-group 2 mode active\ninterface Ethernet1/0\n description dut -> x2 in channel-group 2\n channel-group 2 mode active\n" } TASK [Deploy lag configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/ios.yml for dut TASK [ios_config: deploying lag from /work/netlab_cicd/node_files/dut/lag] ***** changed: [dut] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [dut] TASK [Find configuration template for routing] ********************************* skipping: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [dut] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] TASK [Deploy routing configuration] ******************************************** skipping: [dut] TASK [Figure out whether to deploy the module lag on current device] *********** ok: [x1] TASK [Find configuration template for lag] ************************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for lag] ********************* ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "lag configuration for x1\n=========================================\n\ninterface port-channel1\n description x1 -> dut\n!\n!\n!\ninterface Ethernet1\n description x1 -> dut in channel-group 1\n channel-group 1 mode active\n lacp timer fast\n!\ninterface Ethernet2\n description x1 -> dut in channel-group 1\n channel-group 1 mode active\n lacp timer fast\n" } TASK [Deploy lag configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying lag from /work/netlab_cicd/node_files/x1/lag] ****** changed: [x1] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [x1] TASK [Find configuration template for routing] ********************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for routing] ***************** ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "routing configuration for x1\n=========================================\n!\n!\n! Static routes\n!\nip route 0.0.0.0/0 port-channel1 172.16.0.1\n" } TASK [Deploy routing configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying routing from /work/netlab_cicd/node_files/x1/routing] *** changed: [x1] TASK [Figure out whether to deploy the module lag on current device] *********** ok: [x2] TASK [Find configuration template for lag] ************************************* ok: [x2] TASK [fail] ******************************************************************** skipping: [x2] TASK [Find configuration deployment deploy_script for lag] ********************* ok: [x2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x2] => { "msg": "lag configuration for x2\n=========================================\n\ninterface port-channel1\n description x2 -> dut\n!\n!\n!\ninterface Ethernet1\n description x2 -> dut in channel-group 1\n channel-group 1 mode active\n lacp timer fast\n!\ninterface Ethernet2\n description x2 -> dut in channel-group 1\n channel-group 1 mode active\n lacp timer fast\n" } TASK [Deploy lag configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x2 TASK [eos_config: deploying lag from /work/netlab_cicd/node_files/x2/lag] ****** changed: [x2] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [x2] TASK [Find configuration template for routing] ********************************* ok: [x2] TASK [fail] ******************************************************************** skipping: [x2] TASK [Find configuration deployment deploy_script for routing] ***************** ok: [x2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x2] => { "msg": "routing configuration for x2\n=========================================\n!\n!\n! Static routes\n!\nip route 0.0.0.0/0 port-channel1 172.16.1.1\n" } TASK [Deploy routing configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x2 TASK [eos_config: deploying routing from /work/netlab_cicd/node_files/x2/routing] *** changed: [x2] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=31 changed=3 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 x1 : ok=35 changed=4 unreachable=0 failed=0 skipped=5 rescued=0 ignored=0 x2 : 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: normalize,initial,lag [CREATED] x1: normalize,initial,lag,routing [CREATED] x2: normalize,initial,lag,routing The device under is a router with a L3 LAG link connected to a FRR device. The FRR device should be able to ping the loopback interface of DUT.