Creating Device configuration snippets [CREATED] h1: initial,routing [CREATED] h1a: initial,routing [CREATED] h2: initial,routing [CREATED] h3: initial,routing [CREATED] h3a: initial,routing [CREATED] h4: initial,routing [CREATED] dut: initial,vlan,ospf,vrf,vxlan [CREATED] s2: initial,vlan,ospf,vrf,vxlan Config Deploying device configurations [INFO] Executing initial configuration for node h1 (namespace clab- ml-17-h1) [INFO] Executing initial configuration for node h1a (namespace clab- ml-17-h1a) [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 h3a (namespace clab- ml-17-h3a) [INFO] Executing initial configuration for node h4 (namespace clab- ml-17-h4) [INFO] Executing initial configuration for node s2 [INFO] Executing routing configuration for node h1 (namespace clab- ml-17-h1) [INFO] Executing routing configuration for node h1a (namespace clab- ml-17-h1a) [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 routing configuration for node h2 (namespace clab- ml-17-h2) [INFO] Executing routing configuration for node h3a (namespace clab- ml-17-h3a) [INFO] Executing vlan configuration for node s2 [INFO] Executing ospf configuration for node s2 [INFO] Executing vrf configuration for node s2 [INFO] Executing vxlan configuration for node s2 [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: [dut] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut 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 [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut 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=========================================\nset system host-name 'dut'\n\nset vrf name tenant table 100\n\nset interfaces bridge br0 description 'Global Switch Bridge'\nset interfaces bridge br0 enable-vlan\n\nset interfaces bridge br0 vif 1000\nset interfaces bridge br0 vif 1001\n\nset interfaces dummy dum0 address 10.0.0.7/32\n\n\n\nset interfaces ethernet eth1 description 'dut -> s2'\n\nset interfaces ethernet eth1 mtu 1600\n\nset interfaces ethernet eth1 address 10.1.0.1/30\n\n\n\n\n\nset interfaces ethernet eth2 description '[Access VLAN red] dut -> h1'\n\n\n\n\n\n\n\nset interfaces ethernet eth3 description '[Access VLAN red] dut -> h1a'\n\n\n\n\n\n\n\nset interfaces ethernet eth4 description '[Access VLAN blue] dut -> h3'\n\n\n\n\n\n\n\nset interfaces ethernet eth5 description '[Access VLAN blue] dut -> h3a'\n\n\n\n\n\n\n\nset interfaces bridge br0 vif 1000 description 'VLAN red (1000) -> [h1,h1a,h2,s2]'\n\n\nset interfaces bridge br0 vif 1000 address 172.16.0.7/24\n\n\nset interfaces bridge br0 vif 1000 vrf tenant\n\n\n\nset interfaces bridge br0 vif 1001 description 'VLAN blue (1001) -> [h3,h3a] [stub]'\n\n\nset interfaces bridge br0 vif 1001 address 172.16.1.7/24\n\n\nset interfaces bridge br0 vif 1001 vrf tenant\n\n\nset service lldp interface all\n>/dev/null 2>/dev/null set service lldp interface eth0 disable\n>/dev/null 2>/dev/null set service lldp interface eth0 mode disable\n\n\n\ncommit\n\n# Restart FRR to pick up the new hostname\nsudo service frr restart\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-initial.sh to deploy initial config from /work/netlab_cicd/node_files/dut/initial] *** changed: [dut] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut => (item=vlan) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut => (item=routing) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut => (item=ospf) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut => (item=vrf) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut => (item=vxlan) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [dut] TASK [Find configuration template for vlan] ************************************ ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vlan configuration for dut\n=========================================\nset interfaces bridge br0 member interface eth2 native-vlan 1000\nset interfaces bridge br0 member interface eth3 native-vlan 1000\nset interfaces bridge br0 member interface eth4 native-vlan 1001\nset interfaces bridge br0 member interface eth5 native-vlan 1001\n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-vlan.sh to deploy vlan config from /work/netlab_cicd/node_files/dut/vlan] *** 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 ospf on current device] ********** ok: [dut] TASK [Find configuration template for ospf] ************************************ ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for ospf] ******************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "ospf configuration for dut\n=========================================\n\nset protocols ospf parameters router-id 10.0.0.7\n\n\n\n\nset protocols ospf interface dum0 passive\nset protocols ospf interface dum0 area 0.0.0.0\n\n\nset protocols ospf interface eth1 area 0.0.0.0\n\nset protocols ospf interface eth1 network point-to-point\n\n\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-ospf.sh to deploy ospf config from /work/netlab_cicd/node_files/dut/ospf] *** changed: [dut] 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# Enter vrf sublevel\nedit vrf name tenant\n\n\n\nset protocols ospf parameters router-id 10.0.0.7\n\nset protocols ospf redistribute connected\n\n\n\n\n\nset protocols ospf interface br0.1000 area 0.0.0.0\n\nset protocols ospf interface br0.1000 cost 5\n\n\nset protocols ospf interface br0.1001 area 0.0.0.0\n\nset protocols ospf interface br0.1001 passive\nset protocols ospf interface br0.1001 cost 10\n\n\n# Back to root level\ntop\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-vrf.sh to deploy vrf config from /work/netlab_cicd/node_files/dut/vrf] *** changed: [dut] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [dut] TASK [Find configuration template for vxlan] *********************************** ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for vxlan] ******************* ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vxlan configuration for dut\n=========================================\n\n# Create VXLAN interface\nset interfaces vxlan vxlan5000 vni 5000\nset interfaces vxlan vxlan5000 source-address 10.0.0.7\n# And set UDP port to 4789\nset interfaces vxlan vxlan5000 port 4789\n\n# Add it to the global bridge\n## NOTE: in the future we may want to switch to one-bridge-per-vni\n## (still to understand if single bridge can work with EVPN controlled VXLAN)\nset interfaces bridge br0 member interface vxlan5000 native-vlan 1000\n\n# Add VTEP Flood list\nset interfaces vxlan vxlan5000 remote 10.0.0.8\n\n# If flooding is based on EVPN, set 'parameters nolearning'\n\n\n# Create VXLAN interface\nset interfaces vxlan vxlan5001 vni 5001\nset interfaces vxlan vxlan5001 source-address 10.0.0.7\n# And set UDP port to 4789\nset interfaces vxlan vxlan5001 port 4789\n\n# Add it to the global bridge\n## NOTE: in the future we may want to switch to one-bridge-per-vni\n## (still to understand if single bridge can work with EVPN controlled VXLAN)\nset interfaces bridge br0 member interface vxlan5001 native-vlan 1001\n\n# Add VTEP Flood list\n\n# If flooding is based on EVPN, set 'parameters nolearning'\n\n" } TASK [Deploy vxlan configuration] ********************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-vxlan.sh to deploy vxlan config from /work/netlab_cicd/node_files/dut/vxlan] *** changed: [dut] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=53 changed=10 unreachable=0 failed=0 skipped=13 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ h1 OK: 2 h1a OK: 2 h2 OK: 2 h3 OK: 2 h3a OK: 2 h4 OK: 2 s2 OK: 5 The devices under test are VLAN-to-VXLAN layer-3 switches connecting a VLAN stretched across VXLAN transport and two edge subnets. The test case verifies that you can use VXLAN-enabled VLANs in VRFs and that your device runs OSPF across VXLAN-enabled VLANs. * All hosts should be able to ping each other. * Switches should have OSPF adjacencies in the tenant VRF Notes: * It might take a while for the lab to work due to STP learning phase. * The validation tests don't check OSPF adjacencies