[INFO] Executing initial configuration for node h1 (namespace clab- ml_17-h1) [INFO] Executing routing configuration for node h1 (namespace clab- ml_17-h1) [INFO] Executing initial configuration for node h2 (namespace clab- ml_17-h2) [INFO] Executing routing configuration for node h2 (namespace clab- ml_17-h2) [INFO] Executing initial configuration for node h3 (namespace clab- ml_17-h3) [INFO] Executing routing 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 h4 (namespace clab- ml_17-h4) [INFO] Starting Ansible playbook to deploy the rest of the configurations /home/pipi/.local/lib/python3.10/site-packages/paramiko/pkey.py:100: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0. "cipher": algorithms.TripleDES, /home/pipi/.local/lib/python3.10/site-packages/paramiko/transport.py:259: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0. "class": algorithms.TripleDES, [WARNING]: Could not match supplied host pattern, ignoring: unprovisioned [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] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Generic readiness tests] ************************************************* skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find device readiness script] ******************************************** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Wait for device to become ready] ***************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/netlab_gh/netsim/ansible/tasks/readiness-check/cumulus_nvue.yml for s1, s2 TASK [Wait for nvued to start] ************************************************* ok: [s1] ok: [s2] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for normalize] ******************************* ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Deploy normalize configuration] ****************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 TASK [Figure out whether to deploy the module initial on current device] ******* ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for initial] ********************************* ok: [s1] skipping: [h1] skipping: [h2] ok: [s2] skipping: [h3] skipping: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [h1] skipping: [s2] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [h1] skipping: [h2] ok: [s1] skipping: [h3] ok: [s2] skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => { "msg": "initial configuration for s1\n=========================================\n\n- set:\n system:\n hostname: s1\n global:\n system-mac: ca:fe:00:01:00:00\n config:\n snippet:\n system-mtu:\n file: /etc/network/ifupdown2/policy.d/mtu.json\n content: |\n { \"address\": { \"defaults\": { \"mtu\": \"1500\" } } }\n\n interface:\n eth0:\n ip:\n vrf: mgmt\n address:\n dhcp: {}\n type: eth\n swp1:\n type: swp\n link:\n mtu: 1600\n state:\n up : {}\n description: \"s1 -> s2\"\n ip:\n address:\n 10.1.0.1/30: {}\n ipv6:\n enable: off\n\n swp2:\n type: swp\n link:\n state:\n up : {}\n description: \"[Access VLAN red] s1 -> h1\"\n ip:\n ipv6:\n enable: off\n\n swp3:\n type: swp\n link:\n state:\n up : {}\n description: \"[Access VLAN green] s1 -> h3\"\n ip:\n ipv6:\n enable: off\n\n vlan1000:\n type: svi\n link:\n state:\n up : {}\n description: \"VLAN red (1000) -> [h1,s2]\"\n ip:\n address:\n 172.16.0.1/24: {}\n ipv6:\n enable: off\n\n vlan1002:\n type: svi\n link:\n state:\n up : {}\n description: \"VLAN green (1002) -> [h3] [stub]\"\n ip:\n address:\n 172.16.2.1/24: {}\n ipv6:\n enable: off\n\n vlan1001:\n type: svi\n link:\n state:\n up : {}\n description: \"VLAN blue (1001) -> [h2,s2]\"\n ip:\n address:\n 172.16.1.1/24: {}\n ipv6:\n enable: off\n\n\n- set:\n interface:\n lo:\n type: loopback\n ip:\n address:\n 10.0.0.1/32: {}\n ipv6:\n enable: off\n" } ok: [s2] => { "msg": "initial configuration for s2\n=========================================\n\n- set:\n system:\n hostname: s2\n global:\n system-mac: ca:fe:00:02:00:00\n config:\n snippet:\n system-mtu:\n file: /etc/network/ifupdown2/policy.d/mtu.json\n content: |\n { \"address\": { \"defaults\": { \"mtu\": \"1500\" } } }\n\n interface:\n eth0:\n ip:\n vrf: mgmt\n address:\n dhcp: {}\n type: eth\n swp1:\n type: swp\n link:\n mtu: 1600\n state:\n up : {}\n description: \"s2 -> s1\"\n ip:\n address:\n 10.1.0.2/30: {}\n ipv6:\n enable: off\n\n swp2:\n type: swp\n link:\n state:\n up : {}\n description: \"[Access VLAN blue] s2 -> h2\"\n ip:\n ipv6:\n enable: off\n\n swp3:\n type: swp\n link:\n state:\n up : {}\n description: \"[Access VLAN purple] s2 -> h4\"\n ip:\n ipv6:\n enable: off\n\n vlan1001:\n type: svi\n link:\n state:\n up : {}\n description: \"VLAN blue (1001) -> [s1,h2]\"\n ip:\n address:\n 172.16.1.2/24: {}\n ipv6:\n enable: off\n\n vlan1003:\n type: svi\n link:\n state:\n up : {}\n description: \"VLAN purple (1003) -> [h4] [stub]\"\n ip:\n address:\n 172.16.3.2/24: {}\n ipv6:\n enable: off\n\n vlan1000:\n type: svi\n link:\n state:\n up : {}\n description: \"VLAN red (1000) -> [h1,s1]\"\n ip:\n address:\n 172.16.0.2/24: {}\n ipv6:\n enable: off\n\n\n- set:\n interface:\n lo:\n type: loopback\n ip:\n address:\n 10.0.0.2/32: {}\n ipv6:\n enable: off\n" } TASK [Deploy initial configuration] ******************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/cumulus_nvue.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [copy the cumulus nvue YAML initial config file to switch (generated from /home/pipi/netlab_gh/netsim/ansible/templates/initial/cumulus_nvue.j2)] *** changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config patch' for initial config] **************** changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config apply -y' for initial config] ************* changed: [s2] changed: [s1] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 => (item=vxlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1, s2, h1, h2, h3, h4 => (item=evpn) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for vlan] ************************************ ok: [s1] skipping: [h1] ok: [s2] skipping: [h2] skipping: [h3] skipping: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for vlan] ******************** skipping: [h1] ok: [s1] skipping: [h2] skipping: [h3] ok: [s2] skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => { "msg": "vlan configuration for s1\n=========================================\n- set:\n bridge:\n domain:\n br_default:\n type: vlan-aware\n vlan:\n '1000': {}\n '1001': {}\n '1002': {}\n\n\n- set:\n interface:\n swp2:\n bridge:\n domain:\n br_default:\n access: 1000\n- set:\n interface:\n swp3:\n bridge:\n domain:\n br_default:\n access: 1002\n" } ok: [s2] => { "msg": "vlan configuration for s2\n=========================================\n- set:\n bridge:\n domain:\n br_default:\n type: vlan-aware\n vlan:\n '1000': {}\n '1001': {}\n '1003': {}\n\n\n- set:\n interface:\n swp2:\n bridge:\n domain:\n br_default:\n access: 1001\n- set:\n interface:\n swp3:\n bridge:\n domain:\n br_default:\n access: 1003\n" } TASK [Deploy vlan configuration] *********************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/cumulus_nvue.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [copy the cumulus nvue YAML vlan config file to switch (generated from /home/pipi/netlab_gh/netsim/ansible/templates/vlan/cumulus_nvue.j2)] *** changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config patch' for vlan config] ******************* changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config apply -y' for vlan config] **************** changed: [s2] changed: [s1] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for routing] ********************************* skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Deploy routing configuration] ******************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for ospf] ************************************ ok: [s1] skipping: [h1] skipping: [h2] ok: [s2] skipping: [h3] skipping: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for ospf] ******************** skipping: [h1] skipping: [h2] ok: [s1] skipping: [h3] ok: [s2] skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => { "msg": "ospf configuration for s1\n=========================================\n- set:\n router:\n ospf:\n enable: on\n\n\n- set:\n vrf:\n default:\n router:\n ospf:\n enable: on\n area: \n 0.0.0.0: {}\n router-id: 10.0.0.1\n\n interface:\n lo:\n router:\n ospf:\n area: 0.0.0.0\n network-type: broadcast\n swp1:\n router:\n ospf:\n area: 0.0.0.0\n network-type: point-to-point\n\n \n\n" } ok: [s2] => { "msg": "ospf configuration for s2\n=========================================\n- set:\n router:\n ospf:\n enable: on\n\n\n- set:\n vrf:\n default:\n router:\n ospf:\n enable: on\n area: \n 0.0.0.0: {}\n router-id: 10.0.0.2\n\n interface:\n lo:\n router:\n ospf:\n area: 0.0.0.0\n network-type: broadcast\n swp1:\n router:\n ospf:\n area: 0.0.0.0\n network-type: point-to-point\n\n \n\n" } TASK [Deploy ospf configuration] *********************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/cumulus_nvue.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [copy the cumulus nvue YAML ospf config file to switch (generated from /home/pipi/netlab_gh/netsim/ansible/templates/ospf/cumulus_nvue.j2)] *** changed: [s2] changed: [s1] TASK [execute on cumulus: 'nv config patch' for ospf config] ******************* changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config apply -y' for ospf config] **************** changed: [s2] changed: [s1] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for bgp] ************************************* ok: [s1] skipping: [h1] skipping: [h2] ok: [s2] skipping: [h3] skipping: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for bgp] ********************* skipping: [h1] ok: [s1] skipping: [h2] skipping: [h3] ok: [s2] skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => { "msg": "bgp configuration for s1\n=========================================\n- set:\n router:\n bgp:\n enable: on\n autonomous-system: 65000\n router-id: 10.0.0.1\n- set:\n vrf:\n default:\n router:\n bgp:\n enable: on\n autonomous-system: 65000\n router-id: 10.0.0.1\n address-family:\n ipv4-unicast:\n enable: on\n network:\n 10.0.0.1/32: {}\n neighbor:\n 10.0.0.2:\n description: \"s2\"\n update-source: lo\n remote-as: internal\n address-family:\n ipv4-unicast:\n enable: on\n nexthop-setting: self\n community-advertise:\n regular: on\n extended: on\n large: off\n\n" } ok: [s2] => { "msg": "bgp configuration for s2\n=========================================\n- set:\n router:\n bgp:\n enable: on\n autonomous-system: 65000\n router-id: 10.0.0.2\n- set:\n vrf:\n default:\n router:\n bgp:\n enable: on\n autonomous-system: 65000\n router-id: 10.0.0.2\n address-family:\n ipv4-unicast:\n enable: on\n network:\n 10.0.0.2/32: {}\n neighbor:\n 10.0.0.1:\n description: \"s1\"\n update-source: lo\n remote-as: internal\n address-family:\n ipv4-unicast:\n enable: on\n nexthop-setting: self\n community-advertise:\n regular: on\n extended: on\n large: off\n\n" } TASK [Deploy bgp configuration] ************************************************ skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/cumulus_nvue.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [copy the cumulus nvue YAML bgp config file to switch (generated from /home/pipi/netlab_gh/netsim/ansible/templates/bgp/cumulus_nvue.j2)] *** changed: [s2] changed: [s1] TASK [execute on cumulus: 'nv config patch' for bgp config] ******************** changed: [s2] changed: [s1] TASK [execute on cumulus: 'nv config apply -y' for bgp config] ***************** changed: [s2] changed: [s1] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for vrf] ************************************* ok: [s1] skipping: [h1] skipping: [h2] ok: [s2] skipping: [h3] skipping: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [h1] ok: [s1] skipping: [h2] skipping: [h3] ok: [s2] skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => { "msg": "vrf configuration for s1\n=========================================\n---\n- set:\n vrf:\n tenant:\n table: auto\n\n- set:\n vrf:\n tenant:\n router:\n ospf:\n enable: on\n area: \n 0.0.0.0: {}\n redistribute:\n bgp:\n enable: on\n connected:\n enable: on\n\n router-id: 10.0.0.1\n\n interface:\n vlan1000:\n router:\n ospf:\n area: 0.0.0.0\n network-type: broadcast\n vlan1002:\n router:\n ospf:\n area: 0.0.0.0\n network-type: point-to-point\n vlan1001:\n router:\n ospf:\n area: 0.0.0.0\n network-type: broadcast\n\n \n\n\n- set:\n vrf:\n tenant:\n router:\n bgp:\n enable: on\n autonomous-system: 65000\n router-id: 10.0.0.1\n rd: 65000:1\n address-family:\n ipv4-unicast:\n enable: on\n redistribute:\n connected:\n enable: on\n ospf:\n enable: on\n\n network:\n 172.16.2.0/24: {}\n\n\n\n- set:\n interface:\n vlan1000:\n ip:\n vrf: tenant\n- set:\n interface:\n vlan1002:\n ip:\n vrf: tenant\n- set:\n interface:\n vlan1001:\n ip:\n vrf: tenant\n" } ok: [s2] => { "msg": "vrf configuration for s2\n=========================================\n---\n- set:\n vrf:\n tenant:\n table: auto\n\n- set:\n vrf:\n tenant:\n router:\n ospf:\n enable: on\n area: \n 0.0.0.0: {}\n redistribute:\n bgp:\n enable: on\n connected:\n enable: on\n\n router-id: 10.0.0.2\n\n interface:\n vlan1001:\n router:\n ospf:\n area: 0.0.0.0\n network-type: broadcast\n vlan1003:\n router:\n ospf:\n area: 0.0.0.0\n network-type: point-to-point\n vlan1000:\n router:\n ospf:\n area: 0.0.0.0\n network-type: broadcast\n\n \n\n\n- set:\n vrf:\n tenant:\n router:\n bgp:\n enable: on\n autonomous-system: 65000\n router-id: 10.0.0.2\n rd: 65000:1\n address-family:\n ipv4-unicast:\n enable: on\n redistribute:\n connected:\n enable: on\n ospf:\n enable: on\n\n network:\n 172.16.3.0/24: {}\n\n\n\n- set:\n interface:\n vlan1001:\n ip:\n vrf: tenant\n- set:\n interface:\n vlan1003:\n ip:\n vrf: tenant\n- set:\n interface:\n vlan1000:\n ip:\n vrf: tenant\n" } TASK [Deploy vrf configuration] ************************************************ skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/cumulus_nvue.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [copy the cumulus nvue YAML vrf config file to switch (generated from /home/pipi/netlab_gh/netsim/ansible/templates/vrf/cumulus_nvue.j2)] *** changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config patch' for vrf config] ******************** changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config apply -y' for vrf config] ***************** changed: [s1] changed: [s2] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for vxlan] *********************************** ok: [s1] skipping: [h1] skipping: [h2] ok: [s2] skipping: [h3] skipping: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for vxlan] ******************* skipping: [h1] skipping: [h2] ok: [s1] skipping: [h3] ok: [s2] skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => { "msg": "vxlan configuration for s1\n=========================================\n- set:\n nve:\n vxlan:\n enable: on\n mac-learning: off\n source:\n address: 10.0.0.1\n\n- set:\n bridge:\n domain:\n br_default:\n vlan:\n '1000':\n vni:\n '21000': {}\n '1001':\n vni:\n '21001': {}\n" } ok: [s2] => { "msg": "vxlan configuration for s2\n=========================================\n- set:\n nve:\n vxlan:\n enable: on\n mac-learning: off\n source:\n address: 10.0.0.2\n\n- set:\n bridge:\n domain:\n br_default:\n vlan:\n '1000':\n vni:\n '21000': {}\n '1001':\n vni:\n '21001': {}\n" } TASK [Deploy vxlan configuration] ********************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/cumulus_nvue.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [copy the cumulus nvue YAML vxlan config file to switch (generated from /home/pipi/netlab_gh/netsim/ansible/templates/vxlan/cumulus_nvue.j2)] *** changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config patch' for vxlan config] ****************** changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config apply -y' for vxlan config] *************** changed: [s2] changed: [s1] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [s1] ok: [s2] ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Find configuration template for evpn] ************************************ ok: [s1] skipping: [h1] skipping: [h2] ok: [s2] skipping: [h3] skipping: [h4] TASK [fail] ******************************************************************** skipping: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Find configuration deployment deploy_script for evpn] ******************** skipping: [h1] skipping: [h2] ok: [s1] skipping: [h3] ok: [s2] skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => { "msg": "evpn configuration for s1\n=========================================\n---\n- set:\n vrf:\n default:\n router:\n bgp:\n address-family:\n l2vpn-evpn:\n enable: on\n ipv4-unicast:\n route-export:\n to-evpn:\n enable: on\n neighbor:\n 10.0.0.2:\n address-family:\n l2vpn-evpn:\n enable: on\n soft-reconfiguration: on\n\n- set:\n system:\n config:\n snippet:\n frr.conf: |\n router bgp 65000\n address-family l2vpn evpn\n advertise ipv4 unicast\n\n- set:\n evpn:\n enable: on\n # dad Duplicate Address Detection (DAD) configuration parameters\n # mac-vrf-soo EVPN MAC VRF Site-of-Origin VPN extended community in ASN:NN or IP-ADDRESS:NN format.\n # multihoming Multihoming global configuration parameters\n # route-advertise Route advertising\n route-advertise:\n nexthop-setting: system-ip-mac\n svi-ip: on\n # vni VNI\n\n vni:\n '21000':\n rd: 10.0.0.1:1000 # not 'auto'\n route-target:\n export:\n '65000:1000': {}\n import:\n '65000:1000': {}\n '21001':\n rd: 10.0.0.1:1001 # not 'auto'\n route-target:\n export:\n '65000:1001': {}\n import:\n '65000:1001': {}\n\n- set:\n nve:\n vxlan:\n mac-learning: off\n flooding:\n enable: on\n head-end-replication: \n evpn: {}\n\n- set:\n vrf: \n tenant:\n evpn:\n enable: on\n vlan: auto\n router:\n bgp:\n rd: 65000:1\n route-export:\n to-evpn:\n route-target:\n 65000:1: {}\n route-import:\n from-evpn:\n route-target:\n 65000:1: {}\n address-family:\n ipv4-unicast:\n route-export:\n to-evpn:\n enable: on\n" } ok: [s2] => { "msg": "evpn configuration for s2\n=========================================\n---\n- set:\n vrf:\n default:\n router:\n bgp:\n address-family:\n l2vpn-evpn:\n enable: on\n ipv4-unicast:\n route-export:\n to-evpn:\n enable: on\n neighbor:\n 10.0.0.1:\n address-family:\n l2vpn-evpn:\n enable: on\n soft-reconfiguration: on\n\n- set:\n system:\n config:\n snippet:\n frr.conf: |\n router bgp 65000\n address-family l2vpn evpn\n advertise ipv4 unicast\n\n- set:\n evpn:\n enable: on\n # dad Duplicate Address Detection (DAD) configuration parameters\n # mac-vrf-soo EVPN MAC VRF Site-of-Origin VPN extended community in ASN:NN or IP-ADDRESS:NN format.\n # multihoming Multihoming global configuration parameters\n # route-advertise Route advertising\n route-advertise:\n nexthop-setting: system-ip-mac\n svi-ip: on\n # vni VNI\n\n vni:\n '21000':\n rd: 10.0.0.2:1000 # not 'auto'\n route-target:\n export:\n '65000:1000': {}\n import:\n '65000:1000': {}\n '21001':\n rd: 10.0.0.2:1001 # not 'auto'\n route-target:\n export:\n '65000:1001': {}\n import:\n '65000:1001': {}\n\n- set:\n nve:\n vxlan:\n mac-learning: off\n flooding:\n enable: on\n head-end-replication: \n evpn: {}\n\n- set:\n vrf: \n tenant:\n evpn:\n enable: on\n vlan: auto\n router:\n bgp:\n rd: 65000:1\n route-export:\n to-evpn:\n route-target:\n 65000:1: {}\n route-import:\n from-evpn:\n route-target:\n 65000:1: {}\n address-family:\n ipv4-unicast:\n route-export:\n to-evpn:\n enable: on\n" } TASK [Deploy evpn configuration] *********************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/cumulus_nvue.yml for s1, s2 TASK [set_fact] **************************************************************** ok: [s1] ok: [s2] TASK [copy the cumulus nvue YAML evpn config file to switch (generated from /home/pipi/netlab_gh/netsim/ansible/templates/evpn/cumulus_nvue.j2)] *** changed: [s1] changed: [s2] TASK [execute on cumulus: 'nv config patch' for evpn config] ******************* changed: [s2] changed: [s1] TASK [execute on cumulus: 'nv config apply -y' for evpn config] **************** changed: [s1] changed: [s2] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* h1 : ok=23 changed=0 unreachable=0 failed=0 skipped=45 rescued=0 ignored=0 h2 : ok=23 changed=0 unreachable=0 failed=0 skipped=45 rescued=0 ignored=0 h3 : ok=23 changed=0 unreachable=0 failed=0 skipped=45 rescued=0 ignored=0 h4 : ok=23 changed=0 unreachable=0 failed=0 skipped=45 rescued=0 ignored=0 s1 : ok=81 changed=21 unreachable=0 failed=0 skipped=16 rescued=0 ignored=0 s2 : ok=81 changed=21 unreachable=0 failed=0 skipped=16 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