[INFO] Creating configuration snippets [CREATED] h1: initial,routing [CREATED] h2: initial,routing [CREATED] h3: initial,routing [CREATED] h4: initial,routing [CREATED] s1: initial,vlan [CREATED] s2: normalize,initial,vlan [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 h4 (namespace clab- ml-17-h4) [INFO] Executing initial configuration for node s1 [INFO] Executing routing configuration for node h1 (namespace clab- ml-17-h1) [INFO] Executing routing configuration for node h2 (namespace clab- ml-17-h2) [INFO] Executing routing configuration for node h3 (namespace clab- ml-17-h3) [INFO] Executing routing configuration for node h4 (namespace clab- ml-17-h4) [INFO] Executing vlan configuration for node s1 [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: [s2] TASK [Generic readiness tests] ************************************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/readiness-check/ssh.yml for s2 => (item=ssh) TASK [Check if 'sshpass' is installed] ***************************************** ok: [s2 -> localhost] TASK [Check for 'timeout' command] ********************************************* ok: [s2 -> localhost] TASK [Execute local ssh command to check ssh readiness] ************************ FAILED - RETRYING: [s2 -> localhost]: Execute local ssh command to check ssh readiness (20 retries left). ok: [s2 -> localhost] TASK [Confirm s2 SSH server works] ********************************************* ok: [s2] => { "msg": "Node s2 is ready." } TASK [Find device readiness script] ******************************************** ok: [s2] TASK [Wait for device to become ready] ***************************************** skipping: [s2] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [s2] TASK [Find configuration template for normalize] ******************************* ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "normalize configuration for s2\n=========================================\n!\ninterface Ethernet1\n shutdown\n!\ninterface Ethernet2\n shutdown\n!\ninterface Ethernet3\n shutdown\n" } TASK [Deploy normalize configuration] ****************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [eos_config: deploying normalize from /work/netlab_cicd/node_files/s2/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: [s2] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 TASK [Figure out whether to deploy the module initial on current device] ******* ok: [s2] TASK [Find configuration template for initial] ********************************* ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "initial configuration for s2\n=========================================\nhostname s2\n!\nlogging monitor debugging\naaa authorization exec default local\n!\nlldp run\nip routing\nno ipv6 unicast-routing\n!\n!\nip host h1 172.16.0.1\nip host h2 172.16.0.2\nip host h3 172.16.1.3\nip host h4 172.16.1.4\nip host s1 10.0.0.5 172.16.0.5 172.16.1.5\n!\ninterface Management0\n no lldp transmit\n no lldp receive\n!\ninterface Loopback0\n ip address 10.0.0.6/32\n!\ninterface Ethernet1\n no switchport\n description s2 -> s1\n mac-address caf0.0006.0001\n!\n no shutdown\n!\ninterface Ethernet2\n no switchport\n description [Access VLAN red] s2 -> h2\n!\n no shutdown\n!\ninterface Ethernet3\n no switchport\n description [Access VLAN blue] s2 -> h4\n!\n no shutdown\n!\ninterface Vlan700\n description VLAN red (700) -> [h1,s1,h2]\n!\ninterface Vlan701\n description VLAN blue (701) -> [h3,s1,h4]\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [eos_config: deploying initial from /work/netlab_cicd/node_files/s2/initial] *** changed: [s2] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [s2] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=routing) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [s2] TASK [Find configuration template for vlan] ************************************ ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "vlan configuration for s2\n=========================================\nvlan 700\n name red\n!\nvlan 701\n name blue\n!\n\n!\ninterface Ethernet1\n switchport\n switchport mode trunk\n switchport trunk allowed vlan 700,701\n switchport trunk native vlan tag\n!\ninterface Ethernet2\n switchport\n switchport access vlan 700\n!\ninterface Ethernet3\n switchport\n switchport access vlan 701\n!\ninterface Vlan700\n!\ninterface Vlan701\n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [eos_config: deploying vlan from /work/netlab_cicd/node_files/s2/vlan] **** changed: [s2] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [s2] TASK [Find configuration template for routing] ********************************* skipping: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s2] TASK [Deploy routing configuration] ******************************************** skipping: [s2] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* s2 : ok=31 changed=3 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ h1 OK: 2 h2 OK: 2 h3 OK: 2 h4 OK: 2 s1 OK: 2 The devices under test are layer-3 switches bridging between ports in the same VLAN and routing across VLANs * All hosts should be able to ping each other and switch interfaces in the same VLAN * Hosts should be able to ping loopback address of the adjacent switch (static routes point to nearest router) Please note it might take a while for the lab to work due to STP learning phase