Creating Device configuration snippets [CREATED] s1: initial,vlan,ospf,bgp,vrf,vxlan,evpn [CREATED] s2: initial,vlan,ospf,bgp,vrf,vxlan,evpn [CREATED] h1: initial,routing [CREATED] h2: initial,routing [CREATED] h3: initial,routing [CREATED] h4: initial,routing Checking Are lab devices ready to be configured? [INFO] Checking lab devices with an Ansible playbook [WARNING]: Could not match supplied host pattern, ignoring: netlab_ready_ssh [WARNING]: Found variable using reserved name: hosts PLAY [Wait for SSH servers] **************************************************** skipping: no hosts matched PLAY [Wait for device-specific conditions] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [s1] ok: [s2] TASK [Find device readiness script] ******************************************** ok: [s1] ok: [s2] TASK [Wait for device to become ready] ***************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/readiness-check/vyos-clab.yml for s1, s2 TASK [wait_for_connection] ***************************************************** ok: [s1] ok: [s2] TASK [wait_for] **************************************************************** ok: [s1] ok: [s2] PLAY RECAP ********************************************************************* s1 : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 s2 : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Config Deploying device configurations [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 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 h4 (namespace clab- ml-17-h4) [INFO] Executing routing configuration for node h3 (namespace clab- ml-17-h3) [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: [s1] ok: [s2] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [s1] ok: [s2] TASK [Find configuration template for normalize] ******************************* ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s1] skipping: [s2] TASK [Deploy normalize configuration] ****************************************** skipping: [s1] skipping: [s2] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 TASK [Figure out whether to deploy the module initial on current device] ******* ok: [s1] ok: [s2] TASK [Find configuration template for initial] ********************************* ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "initial configuration for s1\n=========================================\n#!/bin/vbash\nsource /opt/vyatta/etc/functions/script-template\n\nif [ \"$(id -g -n)\" != 'vyattacfg' ] ; then\n exec sg vyattacfg -c \"/bin/vbash $(readlink -f $0) $@\"\nfi\n\n# Configuration items start here\n\nconfigure\nset system host-name 's1'\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\nset interfaces bridge br0 vif 1002\n\nset interfaces dummy dum0 address 10.0.0.1/32\n\n\n\nset interfaces ethernet eth1 description 's1 -> 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] s1 -> h1'\n\nset interfaces ethernet eth2 mtu 1500\n\n\n\n\n\n\nset interfaces ethernet eth3 description '[Access VLAN green] s1 -> h3'\n\nset interfaces ethernet eth3 mtu 1500\n\n\n\n\n\n\nset interfaces dummy dum1 description '[Access VLAN blue] s1 -> stub'\n\n\n\n\n\n\n\nset interfaces bridge br0 vif 1000 description 'VLAN red (1000) -> [h1,s2]'\n\nset interfaces bridge br0 vif 1000 mtu 1500\n\nset interfaces bridge br0 vif 1000 address 172.16.0.1/24\n\n\nset interfaces bridge br0 vif 1000 vrf tenant\n\n\n\nset interfaces bridge br0 vif 1002 description 'VLAN green (1002) -> [h3] [stub]'\n\nset interfaces bridge br0 vif 1002 mtu 1500\n\nset interfaces bridge br0 vif 1002 address 172.16.2.1/24\n\n\nset interfaces bridge br0 vif 1002 vrf tenant\n\n\n\nset interfaces bridge br0 vif 1001 description 'VLAN blue (1001) -> [h2,s2]'\n\nset interfaces bridge br0 vif 1001 mtu 1500\n\nset interfaces bridge br0 vif 1001 address 172.16.1.1/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\nset service ssh\n\n# Commit, save and exit from subshell\n\ncommit\nsave\nexit\n\n# Restart FRR to pick up the new hostname\nsudo service frr restart\n" } ok: [s2] => { "msg": "initial configuration for s2\n=========================================\n#!/bin/vbash\nsource /opt/vyatta/etc/functions/script-template\n\nif [ \"$(id -g -n)\" != 'vyattacfg' ] ; then\n exec sg vyattacfg -c \"/bin/vbash $(readlink -f $0) $@\"\nfi\n\n# Configuration items start here\n\nconfigure\nset system host-name 's2'\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\nset interfaces bridge br0 vif 1003\n\nset interfaces dummy dum0 address 10.0.0.2/32\n\n\n\nset interfaces ethernet eth1 description 's2 -> s1'\n\nset interfaces ethernet eth1 mtu 1600\n\nset interfaces ethernet eth1 address 10.1.0.2/30\n\n\n\n\n\nset interfaces ethernet eth2 description '[Access VLAN blue] s2 -> h2'\n\nset interfaces ethernet eth2 mtu 1500\n\n\n\n\n\n\nset interfaces ethernet eth3 description '[Access VLAN purple] s2 -> h4'\n\nset interfaces ethernet eth3 mtu 1500\n\n\n\n\n\n\nset interfaces dummy dum1 description '[Access VLAN red] s2 -> stub'\n\n\n\n\n\n\n\nset interfaces bridge br0 vif 1001 description 'VLAN blue (1001) -> [s1,h2]'\n\nset interfaces bridge br0 vif 1001 mtu 1500\n\nset interfaces bridge br0 vif 1001 address 172.16.1.2/24\n\n\nset interfaces bridge br0 vif 1001 vrf tenant\n\n\n\nset interfaces bridge br0 vif 1003 description 'VLAN purple (1003) -> [h4] [stub]'\n\nset interfaces bridge br0 vif 1003 mtu 1500\n\nset interfaces bridge br0 vif 1003 address 172.16.3.2/24\n\n\nset interfaces bridge br0 vif 1003 vrf tenant\n\n\n\nset interfaces bridge br0 vif 1000 description 'VLAN red (1000) -> [h1,s1]'\n\nset interfaces bridge br0 vif 1000 mtu 1500\n\nset interfaces bridge br0 vif 1000 address 172.16.0.2/24\n\n\nset interfaces bridge br0 vif 1000 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\nset service ssh\n\n# Commit, save and exit from subshell\n\ncommit\nsave\nexit\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 s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [template] **************************************************************** changed: [s1] changed: [s2] TASK [execute config-initial.sh to deploy initial config from /work/netlab_cicd/node_files/s1/initial] *** changed: [s2] changed: [s1] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [s1] ok: [s2] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 => (item=vlan) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 => (item=routing) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 => (item=ospf) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 => (item=bgp) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 => (item=vrf) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 => (item=vxlan) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for s1, s2 => (item=evpn) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [s1] ok: [s2] TASK [Find configuration template for vlan] ************************************ ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "vlan configuration for s1\n=========================================\nset interfaces bridge br0 member interface eth2 native-vlan 1000\nset interfaces bridge br0 member interface eth3 native-vlan 1002\nset interfaces bridge br0 member interface dum1 native-vlan 1001\n" } ok: [s2] => { "msg": "vlan configuration for s2\n=========================================\nset interfaces bridge br0 member interface eth2 native-vlan 1001\nset interfaces bridge br0 member interface eth3 native-vlan 1003\nset interfaces bridge br0 member interface dum1 native-vlan 1000\n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [template] **************************************************************** changed: [s1] changed: [s2] TASK [execute config-vlan.sh to deploy vlan config from /work/netlab_cicd/node_files/s1/vlan] *** changed: [s2] changed: [s1] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [s1] ok: [s2] TASK [Find configuration template for routing] ********************************* skipping: [s1] skipping: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [s1] skipping: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s1] skipping: [s2] TASK [Deploy routing configuration] ******************************************** skipping: [s1] skipping: [s2] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [s1] ok: [s2] TASK [Find configuration template for ospf] ************************************ ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for ospf] ******************** ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "ospf configuration for s1\n=========================================\n\nset protocols ospf parameters router-id 10.0.0.1\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" } ok: [s2] => { "msg": "ospf configuration for s2\n=========================================\n\nset protocols ospf parameters router-id 10.0.0.2\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 s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [template] **************************************************************** changed: [s1] changed: [s2] TASK [execute config-ospf.sh to deploy ospf config from /work/netlab_cicd/node_files/s1/ospf] *** changed: [s1] changed: [s2] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [s1] ok: [s2] TASK [Find configuration template for bgp] ************************************* ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for bgp] ********************* ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "bgp configuration for s1\n=========================================\n\nset protocols bgp system-as 65000\n\nset protocols bgp parameters router-id 10.0.0.1\n\n\n\nset protocols bgp neighbor 10.0.0.2 remote-as 65000\nset protocols bgp neighbor 10.0.0.2 description 's2'\n \nset protocols bgp neighbor 10.0.0.2 update-source dum0\n\n\n\n\n# Work on Family ipv4\n\n\nset protocols bgp address-family ipv4-unicast network 10.0.0.1/32\n\n\n\n\n\nset protocols bgp neighbor 10.0.0.2 address-family ipv4-unicast soft-reconfiguration inbound\n\nset protocols bgp neighbor 10.0.0.2 address-family ipv4-unicast nexthop-self\n\n\n\n\n" } ok: [s2] => { "msg": "bgp configuration for s2\n=========================================\n\nset protocols bgp system-as 65000\n\nset protocols bgp parameters router-id 10.0.0.2\n\n\n\nset protocols bgp neighbor 10.0.0.1 remote-as 65000\nset protocols bgp neighbor 10.0.0.1 description 's1'\n \nset protocols bgp neighbor 10.0.0.1 update-source dum0\n\n\n\n\n# Work on Family ipv4\n\n\nset protocols bgp address-family ipv4-unicast network 10.0.0.2/32\n\n\n\n\n\nset protocols bgp neighbor 10.0.0.1 address-family ipv4-unicast soft-reconfiguration inbound\n\nset protocols bgp neighbor 10.0.0.1 address-family ipv4-unicast nexthop-self\n\n\n\n\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [template] **************************************************************** changed: [s1] changed: [s2] TASK [execute config-bgp.sh to deploy bgp config from /work/netlab_cicd/node_files/s1/bgp] *** changed: [s1] changed: [s2] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [s1] ok: [s2] TASK [Find configuration template for vrf] ************************************* ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for vrf] ********************* ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "vrf configuration for s1\n=========================================\nset protocols bgp system-as 65000\n\n# Enter vrf sublevel\nedit vrf name tenant\n\n\nset protocols bgp system-as 65000\n\nset protocols bgp parameters router-id 10.0.0.1\n\nset protocols bgp address-family ipv4-unicast rd vpn export 65000:1\nset protocols bgp address-family ipv4-unicast route-target vpn import \"65000:1\"\nset protocols bgp address-family ipv4-unicast route-target vpn export \"65000:1\"\nset protocols bgp address-family ipv4-unicast import vpn\nset protocols bgp address-family ipv4-unicast export vpn\nset protocols bgp address-family ipv4-unicast label vpn export auto\n\n\n\nset protocols bgp address-family ipv4-unicast redistribute connected\nset protocols bgp address-family ipv4-unicast redistribute ospf\n\n# Define networks for VRF Loopback\n\n\n\nset protocols ospf parameters router-id 10.0.0.1\n\nset protocols ospf redistribute bgp\nset protocols ospf redistribute connected\n\n\n\n\n\nset protocols ospf interface br0.1000 area 0.0.0.0\n\n\n\nset protocols ospf interface br0.1002 area 0.0.0.0\n\nset protocols ospf interface br0.1002 passive\nset protocols ospf interface br0.1002 network point-to-point\n\n\nset protocols ospf interface br0.1001 area 0.0.0.0\n\n\n\n# Back to root level\ntop\n" } ok: [s2] => { "msg": "vrf configuration for s2\n=========================================\nset protocols bgp system-as 65000\n\n# Enter vrf sublevel\nedit vrf name tenant\n\n\nset protocols bgp system-as 65000\n\nset protocols bgp parameters router-id 10.0.0.2\n\nset protocols bgp address-family ipv4-unicast rd vpn export 65000:1\nset protocols bgp address-family ipv4-unicast route-target vpn import \"65000:1\"\nset protocols bgp address-family ipv4-unicast route-target vpn export \"65000:1\"\nset protocols bgp address-family ipv4-unicast import vpn\nset protocols bgp address-family ipv4-unicast export vpn\nset protocols bgp address-family ipv4-unicast label vpn export auto\n\n\n\nset protocols bgp address-family ipv4-unicast redistribute connected\nset protocols bgp address-family ipv4-unicast redistribute ospf\n\n# Define networks for VRF Loopback\n\n\n\nset protocols ospf parameters router-id 10.0.0.2\n\nset protocols ospf redistribute bgp\nset protocols ospf redistribute connected\n\n\n\n\n\nset protocols ospf interface br0.1001 area 0.0.0.0\n\n\n\nset protocols ospf interface br0.1003 area 0.0.0.0\n\nset protocols ospf interface br0.1003 passive\nset protocols ospf interface br0.1003 network point-to-point\n\n\nset protocols ospf interface br0.1000 area 0.0.0.0\n\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 s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [template] **************************************************************** changed: [s2] changed: [s1] TASK [execute config-vrf.sh to deploy vrf config from /work/netlab_cicd/node_files/s1/vrf] *** changed: [s2] changed: [s1] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [s1] ok: [s2] TASK [Find configuration template for vxlan] *********************************** ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for vxlan] ******************* ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "vxlan configuration for s1\n=========================================\n#!/bin/vbash\nsource /opt/vyatta/etc/functions/script-template\n\nif [ \"$(id -g -n)\" != 'vyattacfg' ] ; then\n exec sg vyattacfg -c \"/bin/vbash $(readlink -f $0) $@\"\nfi\n\n# Configuration items start here\nconfigure\n\n\n# Create VXLAN interface\nset interfaces vxlan vxlan21000 vni 21000\nset interfaces vxlan vxlan21000 source-address 10.0.0.1\n# And set UDP port to 4789\nset interfaces vxlan vxlan21000 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 vxlan21000 native-vlan 1000\n\n# Add VTEP Flood list\n\n# If flooding is based on EVPN, set 'parameters nolearning'\nset interfaces vxlan vxlan21000 parameters nolearning\n\n\n# Create VXLAN interface\nset interfaces vxlan vxlan21001 vni 21001\nset interfaces vxlan vxlan21001 source-address 10.0.0.1\n# And set UDP port to 4789\nset interfaces vxlan vxlan21001 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 vxlan21001 native-vlan 1001\n\n# Add VTEP Flood list\n\n# If flooding is based on EVPN, set 'parameters nolearning'\nset interfaces vxlan vxlan21001 parameters nolearning\n\n\n# Commit, save and exit from subshell\n\ncommit\nsave\nexit\n" } ok: [s2] => { "msg": "vxlan configuration for s2\n=========================================\n#!/bin/vbash\nsource /opt/vyatta/etc/functions/script-template\n\nif [ \"$(id -g -n)\" != 'vyattacfg' ] ; then\n exec sg vyattacfg -c \"/bin/vbash $(readlink -f $0) $@\"\nfi\n\n# Configuration items start here\nconfigure\n\n\n# Create VXLAN interface\nset interfaces vxlan vxlan21000 vni 21000\nset interfaces vxlan vxlan21000 source-address 10.0.0.2\n# And set UDP port to 4789\nset interfaces vxlan vxlan21000 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 vxlan21000 native-vlan 1000\n\n# Add VTEP Flood list\n\n# If flooding is based on EVPN, set 'parameters nolearning'\nset interfaces vxlan vxlan21000 parameters nolearning\n\n\n# Create VXLAN interface\nset interfaces vxlan vxlan21001 vni 21001\nset interfaces vxlan vxlan21001 source-address 10.0.0.2\n# And set UDP port to 4789\nset interfaces vxlan vxlan21001 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 vxlan21001 native-vlan 1001\n\n# Add VTEP Flood list\n\n# If flooding is based on EVPN, set 'parameters nolearning'\nset interfaces vxlan vxlan21001 parameters nolearning\n\n\n# Commit, save and exit from subshell\n\ncommit\nsave\nexit\n" } TASK [Deploy vxlan configuration] ********************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [template] **************************************************************** changed: [s1] changed: [s2] TASK [execute config-vxlan.sh to deploy vxlan config from /work/netlab_cicd/node_files/s1/vxlan] *** changed: [s1] changed: [s2] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [s1] ok: [s2] TASK [Find configuration template for evpn] ************************************ ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for evpn] ******************** ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "evpn configuration for s1\n=========================================\n#!/bin/vbash\nsource /opt/vyatta/etc/functions/script-template\n\nif [ \"$(id -g -n)\" != 'vyattacfg' ] ; then\n exec sg vyattacfg -c \"/bin/vbash $(readlink -f $0) $@\"\nfi\n\n# Configuration items start here\nconfigure\n\n# Configure Generic EVPN Stuff\nset protocols bgp address-family l2vpn-evpn advertise-svi-ip\nset protocols bgp address-family l2vpn-evpn advertise-all-vni\n\nset protocols bgp neighbor 10.0.0.2 address-family l2vpn-evpn nexthop-self\nset protocols bgp neighbor 10.0.0.2 address-family l2vpn-evpn soft-reconfiguration inbound\n\n\n# Configure VNI params\nset protocols bgp address-family l2vpn-evpn vni 21000 rd 10.0.0.1:1000\nset protocols bgp address-family l2vpn-evpn vni 21000 route-target import \"65000:1000\"\nset protocols bgp address-family l2vpn-evpn vni 21000 route-target export \"65000:1000\"\nset protocols bgp address-family l2vpn-evpn vni 21001 rd 10.0.0.1:1001\nset protocols bgp address-family l2vpn-evpn vni 21001 route-target import \"65000:1001\"\nset protocols bgp address-family l2vpn-evpn vni 21001 route-target export \"65000:1001\"\n\n# Work on L3VNI\n\n# If at least one VRF has evpn.transit_vni\n\n\n\n# Commit, save and exit from subshell\n\ncommit\nsave\nexit\n" } ok: [s2] => { "msg": "evpn configuration for s2\n=========================================\n#!/bin/vbash\nsource /opt/vyatta/etc/functions/script-template\n\nif [ \"$(id -g -n)\" != 'vyattacfg' ] ; then\n exec sg vyattacfg -c \"/bin/vbash $(readlink -f $0) $@\"\nfi\n\n# Configuration items start here\nconfigure\n\n# Configure Generic EVPN Stuff\nset protocols bgp address-family l2vpn-evpn advertise-svi-ip\nset protocols bgp address-family l2vpn-evpn advertise-all-vni\n\nset protocols bgp neighbor 10.0.0.1 address-family l2vpn-evpn nexthop-self\nset protocols bgp neighbor 10.0.0.1 address-family l2vpn-evpn soft-reconfiguration inbound\n\n\n# Configure VNI params\nset protocols bgp address-family l2vpn-evpn vni 21000 rd 10.0.0.2:1000\nset protocols bgp address-family l2vpn-evpn vni 21000 route-target import \"65000:1000\"\nset protocols bgp address-family l2vpn-evpn vni 21000 route-target export \"65000:1000\"\nset protocols bgp address-family l2vpn-evpn vni 21001 rd 10.0.0.2:1001\nset protocols bgp address-family l2vpn-evpn vni 21001 route-target import \"65000:1001\"\nset protocols bgp address-family l2vpn-evpn vni 21001 route-target export \"65000:1001\"\n\n# Work on L3VNI\n\n# If at least one VRF has evpn.transit_vni\n\n\n\n# Commit, save and exit from subshell\n\ncommit\nsave\nexit\n" } TASK [Deploy evpn configuration] *********************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/vyos.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [template] **************************************************************** changed: [s1] changed: [s2] TASK [execute config-evpn.sh to deploy evpn config from /work/netlab_cicd/node_files/s1/evpn] *** changed: [s2] changed: [s1] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* s1 : ok=71 changed=14 unreachable=0 failed=0 skipped=15 rescued=0 ignored=0 s2 : ok=71 changed=14 unreachable=0 failed=0 skipped=15 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ h1 OK: 2 h2 OK: 2 h3 OK: 2 h4 OK: 2 The devices under test are VLAN-to-VXLAN routers using asymmetric IRB with EVPN control plane and running OSPF within the VRF (across VXLAN segments) to exchange information about non-EVPN subnets. All hosts should be able to ping each other