Creating Device configuration snippets [CREATED] dut: initial,vlan,stp [CREATED] x2: normalize,initial,vlan,stp [CREATED] x1: normalize,initial,vlan,stp Config Deploying device configurations [WARNING]: Found variable using reserved name: hosts PLAY [Deploy initial device configuration] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] ok: [x2] ok: [x1] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut, x2, x1 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [dut] ok: [x2] ok: [x1] TASK [Find configuration template for normalize] ******************************* ok: [dut] ok: [x2] ok: [x1] TASK [fail] ******************************************************************** skipping: [dut] skipping: [x2] skipping: [x1] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [dut] ok: [x2] ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] ok: [x2] => { "msg": "normalize configuration for x2\n=========================================\n!\ninterface Ethernet1\n shutdown\n mac-address caf0.0002.0001\n!\ninterface Ethernet2\n shutdown\n mac-address caf0.0002.0002\n" } ok: [x1] => { "msg": "normalize configuration for x1\n=========================================\n!\ninterface Ethernet1\n shutdown\n mac-address caf0.0003.0001\n!\ninterface Ethernet2\n shutdown\n mac-address caf0.0003.0002\n" } TASK [Deploy normalize configuration] ****************************************** skipping: [dut] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for x2, x1 TASK [eos_config: deploying normalize from /work/netlab_cicd/other_vm/node_files/x2/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: [x2] changed: [x1] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut, x2, x1 TASK [Figure out whether to deploy the module initial on current device] ******* ok: [dut] ok: [x2] ok: [x1] TASK [Find configuration template for initial] ********************************* ok: [dut] ok: [x2] ok: [x1] TASK [fail] ******************************************************************** skipping: [dut] skipping: [x2] skipping: [x1] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [dut] ok: [x2] ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "initial configuration for dut\n=========================================\nhostname dut\n!\nlldp enable\n!\n!\nip host x2 10.0.0.2\nip host x1 10.0.0.3\n!\n!\ndefault mtu 1532\n!\ninterface mgmt1/1/1\n no lldp transmit\n no lldp receive\n!\ninterface loopback0\n no shutdown\n ip address 10.0.0.1/32\n no ipv6 enable\n!\ninterface ethernet1/1/1\n no shutdown\n no switchport\n description \"dut -> x1\"\n no ipv6 enable\n!\ninterface ethernet1/1/2\n no shutdown\n no switchport\n description \"dut -> x2\"\n no ipv6 enable\n!\ninterface vlan76\n no shutdown\n description \"VLAN blue (76) -> [x2\\\\,x1]\"\n no ipv6 enable\n!\ninterface vlan42\n no shutdown\n description \"VLAN red (42) -> [x2\\\\,x1]\"\n no ipv6 enable\n!\n" } ok: [x2] => { "msg": "initial configuration for x2\n=========================================\nhostname x2\n!\nlogging monitor debugging\naaa authorization exec default local\n!\nlldp run\nip routing\nno ipv6 unicast-routing\n!\n!\nip host dut 10.0.0.1\nip host x1 10.0.0.3\n!\ninterface Management1\n no lldp transmit\n no lldp receive\n!\ninterface Loopback0\n ip address 10.0.0.2/32\n!\ninterface Ethernet1\n no switchport\n description x2 -> dut\n mac-address caf0.0002.0001\n!\n no shutdown\n!\ninterface Ethernet2\n no switchport\n description x2 -> x1\n mac-address caf0.0002.0002\n!\n no shutdown\n!\ninterface Vlan76\n description VLAN blue (76) -> [dut,x1]\n!\ninterface Vlan42\n description VLAN red (42) -> [dut,x1]\n!\n" } 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 dut 10.0.0.1\nip host x2 10.0.0.2\n!\ninterface Management1\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\n mac-address caf0.0003.0001\n!\n no shutdown\n!\ninterface Ethernet2\n no switchport\n description x1 -> x2\n mac-address caf0.0003.0002\n!\n no shutdown\n!\ninterface Vlan76\n description VLAN blue (76) -> [dut,x2]\n!\ninterface Vlan42\n description VLAN red (42) -> [dut,x2]\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/dellos10.yml for dut included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for x2, x1 TASK [wait_for_connection] ***************************************************** skipping: [dut] TASK [dellos10_config: deploying initial from /work/netlab_cicd/other_vm/node_files/dut/initial, save to startup=yes] *** changed: [dut] TASK [eos_config: deploying initial from /work/netlab_cicd/other_vm/node_files/x2/initial] *** changed: [x1] 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/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut, x2, x1 => (item=vlan) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut, x2, x1 => (item=stp) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [dut] ok: [x1] ok: [x2] TASK [Find configuration template for vlan] ************************************ ok: [dut] ok: [x2] ok: [x1] TASK [fail] ******************************************************************** skipping: [dut] skipping: [x2] skipping: [x1] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [dut] ok: [x2] ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vlan configuration for dut\n=========================================\ninterface vlan 76\n description \"VLAN blue\"\n exit\n!\ninterface vlan 42\n description \"VLAN red\"\n exit\n!\n\n!\ninterface ethernet1/1/1\n switchport mode trunk\n no switchport access vlan\n switchport trunk allowed vlan 42,76\n!\ninterface ethernet1/1/2\n switchport mode trunk\n no switchport access vlan\n switchport trunk allowed vlan 42,76\n!\ninterface vlan76\n!\ninterface vlan42\n" } ok: [x2] => { "msg": "vlan configuration for x2\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" } 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/net101/tools/netsim/ansible/tasks/deploy-config/dellos10.yml for dut included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for x2, x1 TASK [wait_for_connection] ***************************************************** skipping: [dut] TASK [dellos10_config: deploying vlan from /work/netlab_cicd/other_vm/node_files/dut/vlan, save to startup=yes] *** changed: [dut] TASK [eos_config: deploying vlan from /work/netlab_cicd/other_vm/node_files/x2/vlan] *** changed: [x1] changed: [x2] TASK [Figure out whether to deploy the module stp on current device] *********** ok: [dut] ok: [x2] ok: [x1] TASK [Find configuration template for stp] ************************************* ok: [dut] ok: [x2] ok: [x1] TASK [fail] ******************************************************************** skipping: [dut] skipping: [x2] skipping: [x1] TASK [Find configuration deployment deploy_script for stp] ********************* ok: [dut] ok: [x1] ok: [x2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "stp configuration for dut\n=========================================\nspanning-tree mode rstp\n\nspanning-tree rstp force-version stp\n\nspanning-tree rstp priority 4096\n\n\n\n" } ok: [x2] => { "msg": "stp configuration for x2\n=========================================\nspanning-tree mode rstp \nspanning-tree priority 16384\n!\n\n!\n" } ok: [x1] => { "msg": "stp configuration for x1\n=========================================\nspanning-tree mode rstp \n!\n\n!\n" } TASK [Deploy stp configuration] ************************************************ included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/dellos10.yml for dut included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for x2, x1 TASK [wait_for_connection] ***************************************************** skipping: [dut] TASK [dellos10_config: deploying stp from /work/netlab_cicd/other_vm/node_files/dut/stp, save to startup=yes] *** changed: [dut] TASK [eos_config: deploying stp from /work/netlab_cicd/other_vm/node_files/x2/stp] *** changed: [x1] changed: [x2] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=27 changed=3 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 x1 : ok=30 changed=4 unreachable=0 failed=0 skipped=4 rescued=0 ignored=0 x2 : ok=30 changed=4 unreachable=0 failed=0 skipped=4 rescued=0 ignored=0 The devices under test form a layer-2 triangle of VLAN trunks The bridge with the highest priority (s1) should become the root on all VLANs, the link x1-x2 should get blocked. Please note that we're running traditional STP where BPDUs are sent untagged.