[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 [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/net101/tools/netsim/ansible/tasks/readiness-check/sros.yml for s1, s2 TASK [Check that required plugin exists, use 'netlab install grpc' to install it] *** ok: [s1] ok: [s2] TASK [Wait up to 180s for gNMI(TCP 57400) to be ready on clab-ml_17-s1] ******** ok: [s2 -> localhost] ok: [s1 -> localhost] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/net101/tools/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/net101/tools/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] 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 initial] ***************** ok: [s1] ok: [s2] ok: [h1] ok: [h3] ok: [h2] ok: [h4] TASK [Print deployed configuration when running in verbose mode] *************** ok: [h1] => msg: |- initial configuration for h1 ========================================= #!/bin/bash # # This script contains the 'ip' commands needed to set up container # interfaces and route table. It's executed within the container # network namespace on the container host. # # /etc/hosts file is generated as a clab bind. # set -e ### One-Shot configuration (non-Ubuntu VM or container) # # Send ARP requests from a sane source IP address sysctl -w net.ipv4.conf.all.arp_announce=2 # # Disable IPv4 and IPv6 forwarding # sysctl -w net.ipv4.ip_forward=0 sysctl -w net.ipv6.conf.all.forwarding=0 # # Interface addressing, create any bond devices # ip link set dev eth1 up set +e ip addr del 172.16.0.3/24 dev eth1 2>/dev/null set -e ip addr add 172.16.0.3/24 dev eth1 sysctl -w net.ipv6.conf.eth1.disable_ipv6=1 ip link set dev eth1 mtu 1500 ok: [h4] => msg: |- initial configuration for h4 ========================================= #!/bin/bash # # This script contains the 'ip' commands needed to set up container # interfaces and route table. It's executed within the container # network namespace on the container host. # # /etc/hosts file is generated as a clab bind. # set -e ### One-Shot configuration (non-Ubuntu VM or container) # # Send ARP requests from a sane source IP address sysctl -w net.ipv4.conf.all.arp_announce=2 # # Disable IPv4 and IPv6 forwarding # sysctl -w net.ipv4.ip_forward=0 sysctl -w net.ipv6.conf.all.forwarding=0 # # Interface addressing, create any bond devices # ip link set dev eth1 up set +e ip addr del 172.16.3.6/24 dev eth1 2>/dev/null set -e ip addr add 172.16.3.6/24 dev eth1 sysctl -w net.ipv6.conf.eth1.disable_ipv6=1 ip link set dev eth1 mtu 1500 ok: [h2] => msg: |- initial configuration for h2 ========================================= #!/bin/bash # # This script contains the 'ip' commands needed to set up container # interfaces and route table. It's executed within the container # network namespace on the container host. # # /etc/hosts file is generated as a clab bind. # set -e ### One-Shot configuration (non-Ubuntu VM or container) # # Send ARP requests from a sane source IP address sysctl -w net.ipv4.conf.all.arp_announce=2 # # Disable IPv4 and IPv6 forwarding # sysctl -w net.ipv4.ip_forward=0 sysctl -w net.ipv6.conf.all.forwarding=0 # # Interface addressing, create any bond devices # ip link set dev eth1 up set +e ip addr del 172.16.1.4/24 dev eth1 2>/dev/null set -e ip addr add 172.16.1.4/24 dev eth1 sysctl -w net.ipv6.conf.eth1.disable_ipv6=1 ip link set dev eth1 mtu 1500 ok: [h3] => msg: |- initial configuration for h3 ========================================= #!/bin/bash # # This script contains the 'ip' commands needed to set up container # interfaces and route table. It's executed within the container # network namespace on the container host. # # /etc/hosts file is generated as a clab bind. # set -e ### One-Shot configuration (non-Ubuntu VM or container) # # Send ARP requests from a sane source IP address sysctl -w net.ipv4.conf.all.arp_announce=2 # # Disable IPv4 and IPv6 forwarding # sysctl -w net.ipv4.ip_forward=0 sysctl -w net.ipv6.conf.all.forwarding=0 # # Interface addressing, create any bond devices # ip link set dev eth1 up set +e ip addr del 172.16.2.5/24 dev eth1 2>/dev/null set -e ip addr add 172.16.2.5/24 dev eth1 sysctl -w net.ipv6.conf.eth1.disable_ipv6=1 ip link set dev eth1 mtu 1500 ok: [s1] => msg: |- initial configuration for s1 ========================================= updates: - path: configure/router[router-name=Base] val: ecmp: 64 - path: configure/router[router-name=Base]/interface[interface-name=system] val: admin-state: enable description: "System interface" ipv4: primary: address: "10.0.0.1" prefix-length: 32 - path: configure/port[port-id=1/1/c1] val: admin-state: enable connector: breakout: "c1-100g" - path: configure/port[port-id=1/1/c1/1] val: admin-state: enable ethernet: mtu: 1614 # max 9800 mode: network - path: configure/router[router-name=Base]/interface[interface-name=eth-1/1/c1] val: admin-state: enable description: "s1 ~ s2 ()" ip-mtu: 1600 port: "1/1/c1/1" ipv4: primary: address: "10.1.0.1" prefix-length: 30 ok: [s2] => msg: |- initial configuration for s2 ========================================= updates: - path: configure/router[router-name=Base] val: ecmp: 64 - path: configure/router[router-name=Base]/interface[interface-name=system] val: admin-state: enable description: "System interface" ipv4: primary: address: "10.0.0.2" prefix-length: 32 - path: configure/port[port-id=1/1/c1] val: admin-state: enable connector: breakout: "c1-100g" - path: configure/port[port-id=1/1/c1/1] val: admin-state: enable ethernet: mtu: 1614 # max 9800 mode: network - path: configure/router[router-name=Base]/interface[interface-name=eth-1/1/c1] val: admin-state: enable description: "s2 ~ s1 ()" ip-mtu: 1600 port: "1/1/c1/1" ipv4: primary: address: "10.1.0.2" prefix-length: 30 TASK [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/sros.yml for s1, s2 included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/linux-clab.yml for h1, h2, h3, h4 TASK [Generate gNMI YAML configuration] **************************************** ok: [s1] ok: [s2] TASK [Update initial node configuration from gNMI template /home/pipi/net101/tools/netsim/ansible/templates/initial/sros.j2] *** changed: [s2] changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] skipping: [s2] TASK [Define script filename and determine whether to execute in netns] ******** ok: [h1] ok: [h2] ok: [h4] ok: [h3] TASK [Create a temporary file for the rendered script] ************************* changed: [h1 -> localhost] changed: [h3 -> localhost] changed: [h4 -> localhost] changed: [h2 -> localhost] TASK [Create container setup script from /home/pipi/net101/tools/netsim/ansible/templates/initial/linux-clab.j2] *** changed: [h2 -> localhost] changed: [h3 -> localhost] changed: [h1 -> localhost] changed: [h4 -> localhost] TASK [Copy script into running container at /tmp/config-h1_initial.sh] ********* skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Execute /tmp/config-h1_initial.sh to deploy initial config based on /home/pipi/net101/tools/netsim/ansible/templates/initial/linux-clab.j2] *** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Container configuration for initial based on /home/pipi/net101/tools/netsim/ansible/templates/initial/linux-clab.j2 executed in netns] *** changed: [h2 -> localhost] changed: [h3 -> localhost] changed: [h1 -> localhost] changed: [h4 -> localhost] TASK [Remove temporary file /tmp/h1_initial-z8be4hab.sh] *********************** changed: [h4 -> localhost] changed: [h1 -> localhost] changed: [h3 -> localhost] changed: [h2 -> localhost] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [h1] ok: [h2] ok: [h3] ok: [s1] ok: [h4] ok: [s2] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for h1, h2, h3, h4, s1, s2 => (item=vlan) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for h1, h2, h3, h4, s1, s2 => (item=routing) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for h1, h2, h3, h4, s1, s2 => (item=bgp) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for h1, h2, h3, h4, s1, s2 => (item=ospf) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for h1, h2, h3, h4, s1, s2 => (item=vrf) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for h1, h2, h3, h4, s1, s2 => (item=vxlan) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for h1, h2, h3, h4, s1, s2 => (item=evpn) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [h1] ok: [h2] ok: [h3] ok: [s1] ok: [h4] ok: [s2] TASK [Find configuration template for vlan] ************************************ skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for vlan] ******************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => msg: |- vlan configuration for s1 ========================================= updates: - path: configure/port[port-id=1/1/c2] val: admin-state: enable connector: breakout: "c1-100g" - path: configure/port[port-id=1/1/c2/1] val: admin-state: enable ethernet: mtu: 1514 # max 9800 mode: access - path: configure/service/vpls[service-name=vlan1000] val: service-id: 11000 customer: "1" description: "[Access VLAN red] s1 -> h1" sap: - sap-id: 1/1/c2/1 admin-state: enable - path: configure/port[port-id=1/1/c3] val: admin-state: enable connector: breakout: "c1-100g" - path: configure/port[port-id=1/1/c3/1] val: admin-state: enable ethernet: mtu: 1514 # max 9800 mode: access - path: configure/service/vpls[service-name=vlan1002] val: service-id: 11002 customer: "1" description: "[Access VLAN green] s1 -> h3" sap: - sap-id: 1/1/c3/1 admin-state: enable - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/interface[interface-name=svi.1000] val: admin-state: enable description: "VLAN red (1000) ~ [h1,s2] ()" ip-mtu: 1500 ipv4: primary: address: "172.16.0.1" prefix-length: 24 - path: configure/service/vpls[service-name=vlan1000] val: service-id: 11000 customer: "1" description: "VLAN red (1000) -> [h1,s2]" admin-state: enable - path: configure/service/vpls[service-name=vlan1000] val: routed-vpls: { } - path: configure/service/vprn[service-name=tenant] val: interface: - interface-name: svi.1000 vpls: - vpls-name: vlan1000 - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/interface[interface-name=svi.1002] val: admin-state: enable description: "VLAN green (1002) ~ [h3] (stub)" ip-mtu: 1500 ipv4: primary: address: "172.16.2.1" prefix-length: 24 - path: configure/service/vpls[service-name=vlan1002] val: service-id: 11002 customer: "1" description: "VLAN green (1002) -> [h3]" admin-state: enable - path: configure/service/vpls[service-name=vlan1002] val: routed-vpls: { } - path: configure/service/vprn[service-name=tenant] val: interface: - interface-name: svi.1002 vpls: - vpls-name: vlan1002 - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/interface[interface-name=svi.1001] val: admin-state: enable description: "VLAN blue (1001) ~ [h2,s2] ()" ip-mtu: 1500 ipv4: primary: address: "172.16.1.1" prefix-length: 24 - path: configure/service/vpls[service-name=vlan1001] val: service-id: 11001 customer: "1" description: "VLAN blue (1001) -> [h2,s2]" admin-state: enable - path: configure/service/vpls[service-name=vlan1001] val: routed-vpls: { } - path: configure/service/vprn[service-name=tenant] val: interface: - interface-name: svi.1001 vpls: - vpls-name: vlan1001 ok: [s2] => msg: |- vlan configuration for s2 ========================================= updates: - path: configure/port[port-id=1/1/c2] val: admin-state: enable connector: breakout: "c1-100g" - path: configure/port[port-id=1/1/c2/1] val: admin-state: enable ethernet: mtu: 1514 # max 9800 mode: access - path: configure/service/vpls[service-name=vlan1001] val: service-id: 11001 customer: "1" description: "[Access VLAN blue] s2 -> h2" sap: - sap-id: 1/1/c2/1 admin-state: enable - path: configure/port[port-id=1/1/c3] val: admin-state: enable connector: breakout: "c1-100g" - path: configure/port[port-id=1/1/c3/1] val: admin-state: enable ethernet: mtu: 1514 # max 9800 mode: access - path: configure/service/vpls[service-name=vlan1003] val: service-id: 11003 customer: "1" description: "[Access VLAN purple] s2 -> h4" sap: - sap-id: 1/1/c3/1 admin-state: enable - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/interface[interface-name=svi.1001] val: admin-state: enable description: "VLAN blue (1001) ~ [s1,h2] ()" ip-mtu: 1500 ipv4: primary: address: "172.16.1.2" prefix-length: 24 - path: configure/service/vpls[service-name=vlan1001] val: service-id: 11001 customer: "1" description: "VLAN blue (1001) -> [s1,h2]" admin-state: enable - path: configure/service/vpls[service-name=vlan1001] val: routed-vpls: { } - path: configure/service/vprn[service-name=tenant] val: interface: - interface-name: svi.1001 vpls: - vpls-name: vlan1001 - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/interface[interface-name=svi.1003] val: admin-state: enable description: "VLAN purple (1003) ~ [h4] (stub)" ip-mtu: 1500 ipv4: primary: address: "172.16.3.2" prefix-length: 24 - path: configure/service/vpls[service-name=vlan1003] val: service-id: 11003 customer: "1" description: "VLAN purple (1003) -> [h4]" admin-state: enable - path: configure/service/vpls[service-name=vlan1003] val: routed-vpls: { } - path: configure/service/vprn[service-name=tenant] val: interface: - interface-name: svi.1003 vpls: - vpls-name: vlan1003 - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/interface[interface-name=svi.1000] val: admin-state: enable description: "VLAN red (1000) ~ [h1,s1] ()" ip-mtu: 1500 ipv4: primary: address: "172.16.0.2" prefix-length: 24 - path: configure/service/vpls[service-name=vlan1000] val: service-id: 11000 customer: "1" description: "VLAN red (1000) -> [h1,s1]" admin-state: enable - path: configure/service/vpls[service-name=vlan1000] val: routed-vpls: { } - path: configure/service/vprn[service-name=tenant] val: interface: - interface-name: svi.1000 vpls: - vpls-name: vlan1000 TASK [Deploy vlan configuration] *********************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/sros.yml for s1, s2 TASK [Generate gNMI YAML configuration] **************************************** ok: [s1] ok: [s2] TASK [Update vlan node configuration from gNMI template /home/pipi/net101/tools/netsim/ansible/templates/vlan/sros.j2] *** changed: [s2] changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] skipping: [s2] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [h1] ok: [h2] ok: [h3] ok: [s1] ok: [h4] ok: [s2] TASK [Find configuration template for routing] ********************************* ok: [h1] ok: [h2] skipping: [s1] skipping: [s2] ok: [h3] ok: [h4] TASK [fail] ******************************************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [s1] ok: [h1] skipping: [s2] ok: [h2] ok: [h3] ok: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s1] ok: [h1] => msg: |- routing configuration for h1 ========================================= #!/bin/bash # # Add static routes (usually IPv4 routes pointing to the first usable gateway) # # echo Removing existing IPv4 routes while ip route del 172.16.0.0/16 2>/dev/null; do : ; done while ip route del 10.0.0.0/24 2>/dev/null; do : ; done while ip route del 10.1.0.0/16 2>/dev/null; do : ; done while ip route del 10.2.0.0/24 2>/dev/null; do : ; done # # # echo Adding direct static routes ip route add 172.16.0.0/16 via 172.16.0.1 dev eth1 protocol static ip route add 10.0.0.0/24 via 172.16.0.1 dev eth1 protocol static ip route add 10.1.0.0/16 via 172.16.0.1 dev eth1 protocol static ip route add 10.2.0.0/24 via 172.16.0.1 dev eth1 protocol static # # Print the final routing table ip route skipping: [s2] ok: [h2] => msg: |- routing configuration for h2 ========================================= #!/bin/bash # # Add static routes (usually IPv4 routes pointing to the first usable gateway) # # echo Removing existing IPv4 routes while ip route del 172.16.0.0/16 2>/dev/null; do : ; done while ip route del 10.0.0.0/24 2>/dev/null; do : ; done while ip route del 10.1.0.0/16 2>/dev/null; do : ; done while ip route del 10.2.0.0/24 2>/dev/null; do : ; done # # # echo Adding direct static routes ip route add 172.16.0.0/16 via 172.16.1.1 dev eth1 protocol static ip route add 10.0.0.0/24 via 172.16.1.1 dev eth1 protocol static ip route add 10.1.0.0/16 via 172.16.1.1 dev eth1 protocol static ip route add 10.2.0.0/24 via 172.16.1.1 dev eth1 protocol static # # Print the final routing table ip route ok: [h3] => msg: |- routing configuration for h3 ========================================= #!/bin/bash # # Add static routes (usually IPv4 routes pointing to the first usable gateway) # # echo Removing existing IPv4 routes while ip route del 172.16.0.0/16 2>/dev/null; do : ; done while ip route del 10.0.0.0/24 2>/dev/null; do : ; done while ip route del 10.1.0.0/16 2>/dev/null; do : ; done while ip route del 10.2.0.0/24 2>/dev/null; do : ; done # # # echo Adding direct static routes ip route add 172.16.0.0/16 via 172.16.2.1 dev eth1 protocol static ip route add 10.0.0.0/24 via 172.16.2.1 dev eth1 protocol static ip route add 10.1.0.0/16 via 172.16.2.1 dev eth1 protocol static ip route add 10.2.0.0/24 via 172.16.2.1 dev eth1 protocol static # # Print the final routing table ip route ok: [h4] => msg: |- routing configuration for h4 ========================================= #!/bin/bash # # Add static routes (usually IPv4 routes pointing to the first usable gateway) # # echo Removing existing IPv4 routes while ip route del 172.16.0.0/16 2>/dev/null; do : ; done while ip route del 10.0.0.0/24 2>/dev/null; do : ; done while ip route del 10.1.0.0/16 2>/dev/null; do : ; done while ip route del 10.2.0.0/24 2>/dev/null; do : ; done # # # echo Adding direct static routes ip route add 172.16.0.0/16 via 172.16.3.2 dev eth1 protocol static ip route add 10.0.0.0/24 via 172.16.3.2 dev eth1 protocol static ip route add 10.1.0.0/16 via 172.16.3.2 dev eth1 protocol static ip route add 10.2.0.0/24 via 172.16.3.2 dev eth1 protocol static # # Print the final routing table ip route TASK [Deploy routing configuration] ******************************************** skipping: [s1] skipping: [s2] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/linux-clab.yml for h1, h2, h3, h4 TASK [Define script filename and determine whether to execute in netns] ******** ok: [h1] ok: [h2] ok: [h3] ok: [h4] TASK [Create a temporary file for the rendered script] ************************* changed: [h1 -> localhost] changed: [h2 -> localhost] changed: [h3 -> localhost] changed: [h4 -> localhost] TASK [Create container setup script from /home/pipi/net101/tools/netsim/ansible/templates/routing/linux-clab.j2] *** changed: [h1 -> localhost] changed: [h2 -> localhost] changed: [h3 -> localhost] changed: [h4 -> localhost] TASK [Copy script into running container at /tmp/config-h1_routing.sh] ********* skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Execute /tmp/config-h1_routing.sh to deploy routing config based on /home/pipi/net101/tools/netsim/ansible/templates/routing/linux-clab.j2] *** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Container configuration for routing based on /home/pipi/net101/tools/netsim/ansible/templates/routing/linux-clab.j2 executed in netns] *** changed: [h1 -> localhost] changed: [h2 -> localhost] changed: [h3 -> localhost] changed: [h4 -> localhost] TASK [Remove temporary file /tmp/h1_routing-rksyppxa.sh] *********************** changed: [h1 -> localhost] changed: [h2 -> localhost] changed: [h3 -> localhost] changed: [h4 -> localhost] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [h1] ok: [h2] ok: [h3] ok: [s1] ok: [h4] ok: [s2] TASK [Find configuration template for bgp] ************************************* skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for bgp] ********************* skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => msg: |- bgp configuration for s1 ========================================= updates: - path: configure/policy-options/policy-statement[name=accept_all] val: default-action: action-type: accept - path: configure/policy-options/policy-statement[name=next-hop-self-ebgp-routes-only] val: entry: - entry-id: 10 from: path-type: ebgp action: action-type: accept next-hop: self default-action: action-type: next-policy - path: configure/policy-options/prefix-list[name=default_export] val: prefix: [] # Make sure it exists - path: configure/policy-options/policy-statement[name=default_export] val: default-action: action-type: reject entry: - entry-id: 10 from: prefix-list: [ "default_export" ] action: action-type: accept - entry-id: 20 from: protocol: name: [ bgp ] action: action-type: accept - path: configure/policy-options/prefix-list[name=default_export] val: prefix: - ip-prefix: 10.0.0.1/32 type: exact - path: configure/router[router-name=Base] val: router-id: "10.0.0.1" autonomous-system: 65000 bgp: ebgp-default-reject-policy: import: False export: False multipath: ibgp: 64 ebgp: 64 min-route-advertisement: 1 # Be aggressive about sending updates connect-retry: 5 # Retry frequently, suitable in DC context # family: cannot disable this # ipv4: False # Enabled by default, disable globally and set per group - path: configure/router[router-name=Base]/bgp/group[group-name=ibgp-ipv4] val: admin-state: enable family: ipv4: True ipv6: False evpn: True # Must have at least 1 address family enabled import: policy: ["accept_all"] export: policy: - next-hop-self-ebgp-routes-only - default_export local-address: "10.0.0.1" - path: configure/router[router-name=Base]/bgp val: neighbor: - ip-address: "10.0.0.2" description: "s2" peer-as: 65000 group: "ibgp-ipv4" family: ipv4: True ipv6: False evpn: True # Must have at least 1 address family enabled ok: [s2] => msg: |- bgp configuration for s2 ========================================= updates: - path: configure/policy-options/policy-statement[name=accept_all] val: default-action: action-type: accept - path: configure/policy-options/policy-statement[name=next-hop-self-ebgp-routes-only] val: entry: - entry-id: 10 from: path-type: ebgp action: action-type: accept next-hop: self default-action: action-type: next-policy - path: configure/policy-options/prefix-list[name=default_export] val: prefix: [] # Make sure it exists - path: configure/policy-options/policy-statement[name=default_export] val: default-action: action-type: reject entry: - entry-id: 10 from: prefix-list: [ "default_export" ] action: action-type: accept - entry-id: 20 from: protocol: name: [ bgp ] action: action-type: accept - path: configure/policy-options/prefix-list[name=default_export] val: prefix: - ip-prefix: 10.0.0.2/32 type: exact - path: configure/router[router-name=Base] val: router-id: "10.0.0.2" autonomous-system: 65000 bgp: ebgp-default-reject-policy: import: False export: False multipath: ibgp: 64 ebgp: 64 min-route-advertisement: 1 # Be aggressive about sending updates connect-retry: 5 # Retry frequently, suitable in DC context # family: cannot disable this # ipv4: False # Enabled by default, disable globally and set per group - path: configure/router[router-name=Base]/bgp/group[group-name=ibgp-ipv4] val: admin-state: enable family: ipv4: True ipv6: False evpn: True # Must have at least 1 address family enabled import: policy: ["accept_all"] export: policy: - next-hop-self-ebgp-routes-only - default_export local-address: "10.0.0.2" - path: configure/router[router-name=Base]/bgp val: neighbor: - ip-address: "10.0.0.1" description: "s1" peer-as: 65000 group: "ibgp-ipv4" family: ipv4: True ipv6: False evpn: True # Must have at least 1 address family enabled TASK [Deploy bgp configuration] ************************************************ skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/sros.yml for s1, s2 TASK [Generate gNMI YAML configuration] **************************************** ok: [s1] ok: [s2] TASK [Update bgp node configuration from gNMI template /home/pipi/net101/tools/netsim/ansible/templates/bgp/sros.j2] *** changed: [s1] changed: [s2] TASK [debug] ******************************************************************* skipping: [s1] skipping: [s2] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [h1] ok: [h2] ok: [h3] ok: [h4] ok: [s1] ok: [s2] TASK [Find configuration template for ospf] ************************************ skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for ospf] ******************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => msg: |- ospf configuration for s1 ========================================= updates: - path: configure/router[router-name=Base]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.1 area: - area-id: "0.0.0.0" interface: - interface-name: "eth-1/1/c1" # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings interface-type: "point-to-point" - path: configure/router[router-name=Base]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.1 area: - area-id: "0.0.0.0" interface: - interface-name: "system" passive: True # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings ok: [s2] => msg: |- ospf configuration for s2 ========================================= updates: - path: configure/router[router-name=Base]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.2 area: - area-id: "0.0.0.0" interface: - interface-name: "eth-1/1/c1" # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings interface-type: "point-to-point" - path: configure/router[router-name=Base]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.2 area: - area-id: "0.0.0.0" interface: - interface-name: "system" passive: True # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings TASK [Deploy ospf configuration] *********************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/sros.yml for s1, s2 TASK [Generate gNMI YAML configuration] **************************************** ok: [s1] ok: [s2] TASK [Update ospf node configuration from gNMI template /home/pipi/net101/tools/netsim/ansible/templates/ospf/sros.j2] *** changed: [s2] changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] skipping: [s2] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [h1] ok: [h2] ok: [h3] ok: [s1] ok: [h4] ok: [s2] TASK [Find configuration template for vrf] ************************************* skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => msg: |- vrf configuration for s1 ========================================= updates: - path: configure/service/vprn[service-name=tenant] val: service-id: 100 customer: "1" autonomous-system: 65000 router-id: 10.0.0.1 ecmp: 64 admin-state: enable - path: configure/policy-options/prefix-list[name=tenant_export] val: prefix: [] # Make sure it exists - path: configure/policy-options/policy-statement[name=tenant_export] val: default-action: action-type: reject entry: - entry-id: 10 from: prefix-list: [ "tenant_export" ] action: action-type: accept - entry-id: 20 from: protocol: name: [ bgp ] action: action-type: accept - entry-id: 30 from: protocol: name: [ direct ] action: action-type: accept - entry-id: 40 from: protocol: name: [ ospf ] action: action-type: accept - path: configure/policy-options/prefix-list[name=tenant_export] val: prefix: - ip-prefix: 172.16.2.0/24 type: exact - path: configure/service/vprn[service-name=tenant] val: router-id: "10.0.0.1" autonomous-system: 65000 bgp: ebgp-default-reject-policy: import: False export: False multipath: ibgp: 64 ebgp: 64 min-route-advertisement: 1 # Be aggressive about sending updates connect-retry: 5 # Retry frequently, suitable in DC context # family: cannot disable this # ipv4: False # Enabled by default, disable globally and set per group - path: configure/policy-options/policy-statement[name=ospf_tenant_export] val: default-action: action-type: reject entry: - entry-id: 20 from: protocol: name: [ bgp ] action: action-type: accept - entry-id: 30 from: protocol: name: [ direct ] action: action-type: accept - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.1 export-policy: [ ospf_tenant_export ] area: - area-id: "0.0.0.0" interface: - interface-name: "svi.1000" # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.1 export-policy: [ ospf_tenant_export ] area: - area-id: "0.0.0.0" interface: - interface-name: "svi.1002" passive: True # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings interface-type: "point-to-point" - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.1 export-policy: [ ospf_tenant_export ] area: - area-id: "0.0.0.0" interface: - interface-name: "svi.1001" # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings ok: [s2] => msg: |- vrf configuration for s2 ========================================= updates: - path: configure/service/vprn[service-name=tenant] val: service-id: 100 customer: "1" autonomous-system: 65000 router-id: 10.0.0.2 ecmp: 64 admin-state: enable - path: configure/policy-options/prefix-list[name=tenant_export] val: prefix: [] # Make sure it exists - path: configure/policy-options/policy-statement[name=tenant_export] val: default-action: action-type: reject entry: - entry-id: 10 from: prefix-list: [ "tenant_export" ] action: action-type: accept - entry-id: 20 from: protocol: name: [ bgp ] action: action-type: accept - entry-id: 30 from: protocol: name: [ direct ] action: action-type: accept - entry-id: 40 from: protocol: name: [ ospf ] action: action-type: accept - path: configure/policy-options/prefix-list[name=tenant_export] val: prefix: - ip-prefix: 172.16.3.0/24 type: exact - path: configure/service/vprn[service-name=tenant] val: router-id: "10.0.0.2" autonomous-system: 65000 bgp: ebgp-default-reject-policy: import: False export: False multipath: ibgp: 64 ebgp: 64 min-route-advertisement: 1 # Be aggressive about sending updates connect-retry: 5 # Retry frequently, suitable in DC context # family: cannot disable this # ipv4: False # Enabled by default, disable globally and set per group - path: configure/policy-options/policy-statement[name=ospf_tenant_export] val: default-action: action-type: reject entry: - entry-id: 20 from: protocol: name: [ bgp ] action: action-type: accept - entry-id: 30 from: protocol: name: [ direct ] action: action-type: accept - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.2 export-policy: [ ospf_tenant_export ] area: - area-id: "0.0.0.0" interface: - interface-name: "svi.1001" # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.2 export-policy: [ ospf_tenant_export ] area: - area-id: "0.0.0.0" interface: - interface-name: "svi.1003" passive: True # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings interface-type: "point-to-point" - path: configure/service/vprn[service-name=tenant] val: customer: "1" admin-state: enable service-id: 100 # ecmp: 64 - path: configure/service/vprn[service-name=tenant]/ospf[ospf-instance=0] val: admin-state: enable router-id: 10.0.0.2 export-policy: [ ospf_tenant_export ] area: - area-id: "0.0.0.0" interface: - interface-name: "svi.1000" # mtu: 1500 # SRL defaults to 1500, now supporting global mtu settings TASK [Deploy vrf configuration] ************************************************ skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/sros.yml for s1, s2 TASK [Generate gNMI YAML configuration] **************************************** ok: [s1] ok: [s2] TASK [Update vrf node configuration from gNMI template /home/pipi/net101/tools/netsim/ansible/templates/vrf/sros.j2] *** changed: [s2] changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] skipping: [s2] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [h1] ok: [h2] ok: [h3] ok: [h4] ok: [s1] ok: [s2] TASK [Find configuration template for vxlan] *********************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for vxlan] ******************* skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => msg: |- vxlan configuration for s1 ========================================= updates: - path: configure/service/vpls[service-name=vlan1000] val: customer: '1' admin-state: enable service-id: 11000 # transit VNI for l3, should not overlap vxlan: instance: - vxlan-instance: 1 vni: 21000 bgp: - bgp-instance: 1 # route-distinguisher: 10.0.0.1:1000 # Don't configure this, use auto RD route-target: export: "target:65000:1000" import: "target:65000:1000" bgp-evpn: evi: 1000 vxlan: - vxlan-instance: 1 bgp-instance: 1 admin-state: enable ecmp: 8 routed-vpls: vxlan-ipv4-tep-ecmp: True # Enable ECMP for routed VXLAN - path: configure/service/vpls[service-name=vlan1001] val: customer: '1' admin-state: enable service-id: 11001 # transit VNI for l3, should not overlap vxlan: instance: - vxlan-instance: 1 vni: 21001 bgp: - bgp-instance: 1 # route-distinguisher: 10.0.0.1:1001 # Don't configure this, use auto RD route-target: export: "target:65000:1001" import: "target:65000:1001" bgp-evpn: evi: 1001 vxlan: - vxlan-instance: 1 bgp-instance: 1 admin-state: enable ecmp: 8 routed-vpls: vxlan-ipv4-tep-ecmp: True # Enable ECMP for routed VXLAN ok: [s2] => msg: |- vxlan configuration for s2 ========================================= updates: - path: configure/service/vpls[service-name=vlan1000] val: customer: '1' admin-state: enable service-id: 11000 # transit VNI for l3, should not overlap vxlan: instance: - vxlan-instance: 1 vni: 21000 bgp: - bgp-instance: 1 # route-distinguisher: 10.0.0.2:1000 # Don't configure this, use auto RD route-target: export: "target:65000:1000" import: "target:65000:1000" bgp-evpn: evi: 1000 vxlan: - vxlan-instance: 1 bgp-instance: 1 admin-state: enable ecmp: 8 routed-vpls: vxlan-ipv4-tep-ecmp: True # Enable ECMP for routed VXLAN - path: configure/service/vpls[service-name=vlan1001] val: customer: '1' admin-state: enable service-id: 11001 # transit VNI for l3, should not overlap vxlan: instance: - vxlan-instance: 1 vni: 21001 bgp: - bgp-instance: 1 # route-distinguisher: 10.0.0.2:1001 # Don't configure this, use auto RD route-target: export: "target:65000:1001" import: "target:65000:1001" bgp-evpn: evi: 1001 vxlan: - vxlan-instance: 1 bgp-instance: 1 admin-state: enable ecmp: 8 routed-vpls: vxlan-ipv4-tep-ecmp: True # Enable ECMP for routed VXLAN TASK [Deploy vxlan configuration] ********************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/sros.yml for s1, s2 TASK [Generate gNMI YAML configuration] **************************************** ok: [s1] ok: [s2] TASK [Update vxlan node configuration from gNMI template /home/pipi/net101/tools/netsim/ansible/templates/vxlan/sros.j2] *** changed: [s1] changed: [s2] TASK [debug] ******************************************************************* skipping: [s1] skipping: [s2] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [h1] ok: [h2] ok: [h3] ok: [h4] ok: [s1] ok: [s2] TASK [Find configuration template for evpn] ************************************ skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [fail] ******************************************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] skipping: [s1] skipping: [s2] TASK [Find configuration deployment deploy_script for evpn] ******************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] ok: [s1] => msg: |- evpn configuration for s1 ========================================= # Generated by evpn sros.j2 template updates: - path: configure/router[router-name=Base] val: bgp: group: - group-name: ibgp-ipv4 family: evpn: True rapid-withdrawal: True rapid-update: evpn: True - path: configure/service/vpls[service-name=vlan1001] val: bgp: - bgp-instance: 1 # route-distinguisher: "10.0.0.1:1001" # use auto-rd route-target: export: "target:65000:1001" import: "target:65000:1001" - path: configure/service/vpls[service-name=vlan1000] val: bgp: - bgp-instance: 1 # route-distinguisher: "10.0.0.1:1000" # use auto-rd route-target: export: "target:65000:1000" import: "target:65000:1000" ok: [s2] => msg: |- evpn configuration for s2 ========================================= # Generated by evpn sros.j2 template updates: - path: configure/router[router-name=Base] val: bgp: group: - group-name: ibgp-ipv4 family: evpn: True rapid-withdrawal: True rapid-update: evpn: True - path: configure/service/vpls[service-name=vlan1001] val: bgp: - bgp-instance: 1 # route-distinguisher: "10.0.0.2:1001" # use auto-rd route-target: export: "target:65000:1001" import: "target:65000:1001" - path: configure/service/vpls[service-name=vlan1000] val: bgp: - bgp-instance: 1 # route-distinguisher: "10.0.0.2:1000" # use auto-rd route-target: export: "target:65000:1000" import: "target:65000:1000" TASK [Deploy evpn configuration] *********************************************** skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/sros.yml for s1, s2 TASK [Generate gNMI YAML configuration] **************************************** ok: [s1] ok: [s2] TASK [Update evpn node configuration from gNMI template /home/pipi/net101/tools/netsim/ansible/templates/evpn/sros.j2] *** changed: [s1] changed: [s2] TASK [debug] ******************************************************************* skipping: [s1] skipping: [s2] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* h1 : ok=41 changed=8 unreachable=0 failed=0 skipped=40 rescued=0 ignored=0 h2 : ok=41 changed=8 unreachable=0 failed=0 skipped=40 rescued=0 ignored=0 h3 : ok=41 changed=8 unreachable=0 failed=0 skipped=40 rescued=0 ignored=0 h4 : ok=41 changed=8 unreachable=0 failed=0 skipped=40 rescued=0 ignored=0 s1 : ok=68 changed=7 unreachable=0 failed=0 skipped=22 rescued=0 ignored=0 s2 : ok=68 changed=7 unreachable=0 failed=0 skipped=22 rescued=0 ignored=0 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