Warning in ansible: You're using Ansible version 12.x or higher; netlab might not work correctly ... Ansible core version 2.19 introduced breaking changes in templates and playbooks ... We tested netlab core with Ansible version 12.x but not every device template ... You might want to downgrade Ansible to version 11.10 or lower. ... Use 'netlab install ansible' on Ubuntu to do that ... Finally, please open a GitHub issue if you experience errors/crashes ... Set defaults.ansible.warnings.ver12 to False to hide this warning [INFO] Checking for updates in configuration templates [INFO] Creating 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 [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 [WARNING]: Could not match supplied host pattern, ignoring: unprovisioned [WARNING]: Found variable using reserved name 'hosts'. Origin: /work/netlab_cicd/group_vars/all/topology.yml:157:1 155 ipv4: 10.2.0.0/24 156 prefix: 32 157 hosts: ^ column 1 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: [s1] skipping: [s2] skipping: [h1] skipping: [h2] skipping: [h3] skipping: [h4] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [s1] TASK [Find configuration template for normalize] ******************************* ok: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [s1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s1] TASK [Deploy normalize configuration] ****************************************** skipping: [s1] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [s2] TASK [Find configuration template for normalize] ******************************* ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s2] TASK [Deploy normalize configuration] ****************************************** skipping: [s2] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [h1] TASK [Find configuration template for normalize] ******************************* ok: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy normalize configuration] ****************************************** skipping: [h1] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [h2] TASK [Find configuration template for normalize] ******************************* ok: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy normalize configuration] ****************************************** skipping: [h2] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [h3] TASK [Find configuration template for normalize] ******************************* ok: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy normalize configuration] ****************************************** skipping: [h3] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [h4] TASK [Find configuration template for normalize] ******************************* ok: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy normalize configuration] ****************************************** skipping: [h4] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 TASK [Figure out whether to deploy the module initial on current device] ******* ok: [s1] TASK [Find configuration template for initial] ********************************* ok: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [s1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "initial configuration for s1\n=========================================\n\nupdates:\n\n- path: /interface[name=system0]/subinterface[index=0]\n value:\n description: \"No description\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"10.0.0.1/32\"\n\n- path: /interface[name=ethernet-1/1]\n value:\n description: \"s1 ~ s2\"\n # min 1500; max 9412 for 7220, 9500 for 7250 platforms\n mtu: 1614\n subinterface:\n # min 1500; max 9412 for 7220, 9500 for 7250 platforms\n ip-mtu: 1600\n index: 0\n description: \"s1 ~ s2\"\n\n- path: /interface[name=ethernet-1/1]/subinterface[index=0]\n value:\n description: \"s1 ~ s2\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"10.1.0.1/30\"\n primary: [null]\n\n\n\n- path: /network-instance[name=default]\n value:\n type: default\n interface:\n - name: system0.0\n\n- path: /network-instance[name=default]\n value:\n type: default\n interface:\n - name: ethernet-1/1.0\n\n\n\n# TODO: vdata.rd, vdata.import/export, vdata.af\n\n\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s1 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s1] TASK [Update SRL initial node configuration (template=/work/netlab_cicd/node_files/s1/initial)] *** changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [s2] TASK [Find configuration template for initial] ********************************* ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "initial configuration for s2\n=========================================\n\nupdates:\n\n- path: /interface[name=system0]/subinterface[index=0]\n value:\n description: \"No description\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"10.0.0.2/32\"\n\n- path: /interface[name=ethernet-1/1]\n value:\n description: \"s2 ~ s1\"\n # min 1500; max 9412 for 7220, 9500 for 7250 platforms\n mtu: 1614\n subinterface:\n # min 1500; max 9412 for 7220, 9500 for 7250 platforms\n ip-mtu: 1600\n index: 0\n description: \"s2 ~ s1\"\n\n- path: /interface[name=ethernet-1/1]/subinterface[index=0]\n value:\n description: \"s2 ~ s1\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"10.1.0.2/30\"\n primary: [null]\n\n\n\n- path: /network-instance[name=default]\n value:\n type: default\n interface:\n - name: system0.0\n\n- path: /network-instance[name=default]\n value:\n type: default\n interface:\n - name: ethernet-1/1.0\n\n\n\n# TODO: vdata.rd, vdata.import/export, vdata.af\n\n\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s2 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s2] TASK [Update SRL initial node configuration (template=/work/netlab_cicd/node_files/s2/initial)] *** changed: [s2] TASK [debug] ******************************************************************* skipping: [s2] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [h1] TASK [Find configuration template for initial] ********************************* skipping: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy initial configuration] ******************************************** skipping: [h1] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [h2] TASK [Find configuration template for initial] ********************************* skipping: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy initial configuration] ******************************************** skipping: [h2] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [h3] TASK [Find configuration template for initial] ********************************* skipping: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy initial configuration] ******************************************** skipping: [h3] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [h4] TASK [Find configuration template for initial] ********************************* skipping: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy initial configuration] ******************************************** skipping: [h4] 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 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1 => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1 => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1 => (item=vxlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s1 => (item=evpn) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=vxlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for s2 => (item=evpn) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 => (item=vxlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h1 => (item=evpn) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 => (item=vxlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h2 => (item=evpn) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 => (item=vxlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h3 => (item=evpn) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 => (item=vxlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for h4 => (item=evpn) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [s1] TASK [Find configuration template for vlan] ************************************ ok: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [s1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "vlan configuration for s1\n=========================================\n\nupdates:\n- path: /interface[name=ethernet-1/2]\n value:\n subinterface:\n - index: 1000\n type: bridged\n description: \"[Access VLAN red] s1 -> h1\"\n\n \n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n description: \"[Access VLAN red] s1 -> h1\"\n interface:\n - name: ethernet-1/2.1000\n\n\n- path: /interface[name=ethernet-1/3]\n value:\n subinterface:\n - index: 1002\n type: bridged\n description: \"[Access VLAN green] s1 -> h3\"\n\n \n- path: /network-instance[name=vlan1002]\n value:\n type: mac-vrf\n description: \"[Access VLAN green] s1 -> h3\"\n interface:\n - name: ethernet-1/3.1002\n\n\n- path: /interface[name=irb0]\n value:\n subinterface:\n - index: 1000\n\n- path: /interface[name=irb0]/subinterface[index=1000]\n value:\n description: \"VLAN red (1000) ~ h1,s2\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"172.16.0.1/24\"\n primary: [null]\n\n \n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n description: \"VLAN red (1000) ~ h1,s2\"\n interface:\n - name: irb0.1000\n\n- path: /network-instance[name=tenant]\n value:\n type: ip-vrf\n interface:\n - name: irb0.1000\n\n- path: /interface[name=irb0]\n value:\n subinterface:\n - index: 1002\n\n- path: /interface[name=irb0]/subinterface[index=1002]\n value:\n description: \"VLAN green (1002) ~ h3\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"172.16.2.1/24\"\n primary: [null]\n\n \n- path: /network-instance[name=vlan1002]\n value:\n type: mac-vrf\n description: \"VLAN green (1002) ~ h3\"\n interface:\n - name: irb0.1002\n\n- path: /network-instance[name=tenant]\n value:\n type: ip-vrf\n interface:\n - name: irb0.1002\n\n- path: /interface[name=irb0]\n value:\n subinterface:\n - index: 1001\n\n- path: /interface[name=irb0]/subinterface[index=1001]\n value:\n description: \"VLAN blue (1001) ~ h2,s2\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"172.16.1.1/24\"\n primary: [null]\n\n \n- path: /network-instance[name=vlan1001]\n value:\n type: mac-vrf\n description: \"VLAN blue (1001) ~ h2,s2\"\n interface:\n - name: irb0.1001\n\n- path: /network-instance[name=tenant]\n value:\n type: ip-vrf\n interface:\n - name: irb0.1001\n\n \n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s1 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s1] TASK [Update SRL vlan node configuration (template=/work/netlab_cicd/node_files/s1/vlan)] *** changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [s1] TASK [Find configuration template for routing] ********************************* skipping: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [s1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s1] TASK [Deploy routing configuration] ******************************************** skipping: [s1] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [s1] TASK [Find configuration template for ospf] ************************************ ok: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for ospf] ******************** ok: [s1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "ospf configuration for s1\n=========================================\nupdates:\n\n\n- path: /network-instance[name=default]\n value:\n router-id: 10.0.0.1\n protocols:\n ospf:\n instance:\n - name: \"0\"\n version: ospf-v2\n admin-state: enable\n max-ecmp-paths: 64\n area:\n - area-id: 0.0.0.0\n interface:\n - interface-name: system0.0\n passive: True\n - area-id: 0.0.0.0\n interface:\n - interface-name: ethernet-1/1.0\n interface-type: \"point-to-point\"\n failure-detection:\n enable-bfd: False\n # OSPF not configured on external interface ethernet-1/2\n # OSPF not configured on external interface ethernet-1/3\n # OSPF not configured on external interface irb0.1000\n # OSPF not configured on external interface irb0.1002\n # OSPF not configured on external interface irb0.1001\n\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s1 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s1] TASK [Update SRL ospf node configuration (template=/work/netlab_cicd/node_files/s1/ospf)] *** changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [s1] TASK [Find configuration template for bgp] ************************************* ok: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for bgp] ********************* ok: [s1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "bgp configuration for s1\n=========================================\nupdates:\n\n- path: /routing-policy/policy[name=accept_all]\n value:\n default-action:\n policy-result: accept\n\n- path: /routing-policy/community-set[name=ibgp-mark]\n value:\n member: [ \"65536:0:65536\" ]\n\n- path: /routing-policy/policy[name=ibgp-mark]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: mark-ibgp-routes\n action:\n bgp:\n communities:\n add: ibgp-mark\n policy-result: accept\n\n- path: /routing-policy/prefix-set[name=default_bgp_advertise]\n value:\n prefix: [] # Make sure it exists\n\n- path: /routing-policy/policy[name=default_bgp_export]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: prefixes\n match:\n prefix:\n prefix-set: default_bgp_advertise\n action:\n policy-result: next-policy\n - name: bgp\n match:\n protocol: bgp\n action:\n policy-result: next-policy\n bgp:\n communities:\n remove:\n ibgp-mark\n\n\n- path: /network-instance[name=default]/protocols/bgp\n value:\n admin-state: enable\n autonomous-system: 65000\n router-id: 10.0.0.1\n ebgp-default-policy:\n export-reject-all: False\n import-reject-all: False\n\n afi-safi:\n - afi-safi-name: ipv4-unicast\n admin-state: enable\n\n- path: /routing-policy/prefix-set[name=default_bgp_advertise]\n value:\n prefix:\n - ip-prefix: 10.0.0.1/32\n mask-length-range: exact\n\n\n\n\n\n- path: /network-instance[name=default]/protocols/bgp/group[group-name=ibgp-ipv4]\n value:\n admin-state: enable\n# neighbor: {'name': 's2', 'as': 65000, 'type': 'ibgp', 'ipv4': '10.0.0.2', '_source_intf': {'type': 'loopback', 'neighbors': [], 'virtual_interface': True, 'ifindex': 0, 'ifname': 'lo0.0', 'ipv4': '10.0.0.1/32'}, 'next_hop_self': 'ebgp', 'activate': {'ipv4': True}, 'evpn': True}\n# ipv4: True\n# ipv6: True\n afi-safi:\n - afi-safi-name: ipv4-unicast\n admin-state: enable\n send-community-type: ['standard', 'large', 'extended']\n\n import-policy: ['accept_all']\n export-policy: ['default_bgp_export', 'accept_all']\n - afi-safi-name: ipv6-unicast\n admin-state: disable\n send-community-type: ['standard', 'large', 'extended']\n\n import-policy: ['accept_all']\n export-policy: ['default_bgp_export', 'accept_all']\n - afi-safi-name: evpn\n admin-state: enable\n send-community-type: ['standard', 'large', 'extended']\n\n\n timers:\n connect-retry: 10\n _annotate_connect-retry: \"Reduce default 120s to 10s\"\n minimum-advertisement-interval: 1\n peer-as: 65000\n transport:\n local-address: 10.0.0.1\n next-hop-self: True\n\n\n- path: /network-instance[name=default]/protocols/bgp\n value:\n neighbor:\n - peer-address: \"10.0.0.2\"\n description: s2\n peer-group: ibgp-ipv4\n # neighbor: {'name': 's2', 'as': 65000, 'type': 'ibgp', 'ipv4': '10.0.0.2', '_source_intf': {'type': 'loopback', 'neighbors': [], 'virtual_interface': True, 'ifindex': 0, 'ifname': 'lo0.0', 'ipv4': '10.0.0.1/32'}, 'next_hop_self': 'ebgp', 'activate': {'ipv4': True}, 'evpn': True}\n # ipv4: True\n # ipv6: False\n afi-safi:\n - afi-safi-name: ipv4-unicast\n admin-state: enable\n send-community-type: ['standard', 'large', 'extended']\n\n - afi-safi-name: ipv6-unicast\n admin-state: disable\n - afi-safi-name: evpn\n admin-state: enable\n send-community-type: ['standard', 'large', 'extended']\n\n\n\n\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s1 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s1] TASK [Update SRL bgp node configuration (template=/work/netlab_cicd/node_files/s1/bgp)] *** changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [s1] TASK [Find configuration template for vrf] ************************************* ok: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for vrf] ********************* ok: [s1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "vrf configuration for s1\n=========================================\n\nupdates:\n\n- path: /network-instance[name=tenant]\n value:\n type: ip-vrf\n\n- path: /routing-policy/policy[name=tenant_export_ospf]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: export_bgp\n match:\n protocol: bgp\n action:\n policy-result: accept\n - name: export_bgp-evpn\n match:\n protocol: bgp-evpn\n action:\n policy-result: accept\n - name: export_local\n match:\n protocol: local\n action:\n policy-result: accept\n\n\n- path: /network-instance[name=tenant]\n value:\n router-id: 10.0.0.1\n protocols:\n ospf:\n instance:\n - name: \"0\"\n version: ospf-v2\n admin-state: enable\n max-ecmp-paths: 64\n asbr: {}\n export-policy: \"tenant_export_ospf\"\n area:\n - area-id: 0.0.0.0\n interface:\n - interface-name: irb0.1000\n failure-detection:\n enable-bfd: False\n - area-id: 0.0.0.0\n interface:\n - interface-name: irb0.1002\n passive: True\n interface-type: \"point-to-point\"\n failure-detection:\n enable-bfd: False\n - area-id: 0.0.0.0\n interface:\n - interface-name: irb0.1001\n failure-detection:\n enable-bfd: False\n\n\n- path: /routing-policy/community-set[name=C65000_1]\n value:\n member:\n - \"target:65000:1\" # Single member, else matching is AND\n\n- path: /routing-policy/community-set[name=tenant_export]\n value:\n member:\n - \"target:65000:1\"\n\n\n- path: /routing-policy/policy[name=tenant_bgp_export]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: bgp\n match:\n protocol: bgp\n action:\n policy-result: next-policy\n bgp:\n communities:\n remove:\n ibgp-mark\n - name: bgp_evpn\n match:\n protocol: bgp-evpn\n action:\n policy-result: next-policy\n - name: export_local\n match:\n protocol: local\n action:\n policy-result: next-policy\n - name: export_ospfv2\n match:\n protocol: ospfv2\n action:\n policy-result: next-policy\n - name: export_ospfv3\n match:\n protocol: ospfv3\n action:\n policy-result: next-policy\n\n\n- path: /network-instance[name=tenant]/protocols/bgp\n value:\n admin-state: enable\n autonomous-system: 65000\n router-id: 10.0.0.1\n ebgp-default-policy:\n export-reject-all: False\n import-reject-all: False\n\n afi-safi:\n - afi-safi-name: ipv4-unicast\n admin-state: enable\n\n\n- path: /routing-policy/prefix-set[name=tenant_bgp_advertise]\n value:\n prefix:\n - ip-prefix: 172.16.2.0/24\n mask-length-range: exact\n\n\n\n\n\n\n\n- path: /network-instance[name=tenant]/protocols/bgp-vpn\n value:\n bgp-instance:\n - id: 1\n route-distinguisher:\n rd: \"65000:1\"\n\n- path: /network-instance[name=tenant]/inter-instance-policies\n value:\n apply-policy:\n export-policy: \"tenant_vpn_export\"\n import-policy: \"tenant_vpn_import\"\n\n- path: /routing-policy/policy[name=tenant_vpn_export]\n value:\n default-action:\n policy-result: \"accept\"\n bgp:\n communities:\n add: \"tenant_export\"\n\n- path: /routing-policy/policy[name=tenant_vpn_import]\n value:\n default-action:\n policy-result: \"reject\"\n statement:\n - name: 11\n match:\n bgp:\n community-set: \"C65000_1\"\n action:\n policy-result: \"accept\"\n\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s1 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s1] TASK [Update SRL vrf node configuration (template=/work/netlab_cicd/node_files/s1/vrf)] *** changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [s1] TASK [Find configuration template for vxlan] *********************************** ok: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for vxlan] ******************* ok: [s1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "vxlan configuration for s1\n=========================================\n\nupdates:\n- path: /tunnel-interface[name=vxlan0]/vxlan-interface[index=1000]\n value:\n type: bridged\n ingress:\n vni: 21000\n egress:\n source-ip: use-system-ipv4-address\n\n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n vxlan-interface:\n - name: vxlan0.1000\n protocols:\n bgp-vpn:\n bgp-instance:\n - id: 1\n # route-distinguisher:\n # rd: \"10.0.0.1:1000\"\n _annotate: \"RD left as for EVPN services and ECMP to work as expected, not '10.0.0.1:1000'\"\n route-target:\n _annotate: \"For compatibility with frr, override auto-derived RT based on EVI 1000 with VNI 21000\"\n import-rt: \"target:65000:1000\"\n export-rt: \"target:65000:1000\"\n bgp-evpn:\n bgp-instance:\n - id: 1\n evi: 1000\n ecmp: 8\n vxlan-interface: vxlan0.1000\n\n- path: /tunnel-interface[name=vxlan0]/vxlan-interface[index=1001]\n value:\n type: bridged\n ingress:\n vni: 21001\n egress:\n source-ip: use-system-ipv4-address\n\n- path: /network-instance[name=vlan1001]\n value:\n type: mac-vrf\n vxlan-interface:\n - name: vxlan0.1001\n protocols:\n bgp-vpn:\n bgp-instance:\n - id: 1\n # route-distinguisher:\n # rd: \"10.0.0.1:1001\"\n _annotate: \"RD left as for EVPN services and ECMP to work as expected, not '10.0.0.1:1001'\"\n route-target:\n _annotate: \"For compatibility with frr, override auto-derived RT based on EVI 1001 with VNI 21001\"\n import-rt: \"target:65000:1001\"\n export-rt: \"target:65000:1001\"\n bgp-evpn:\n bgp-instance:\n - id: 1\n evi: 1001\n ecmp: 8\n vxlan-interface: vxlan0.1001\n\n\n" } TASK [Deploy vxlan configuration] ********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s1 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s1] TASK [Update SRL vxlan node configuration (template=/work/netlab_cicd/node_files/s1/vxlan)] *** changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [s1] TASK [Find configuration template for evpn] ************************************ ok: [s1] TASK [fail] ******************************************************************** skipping: [s1] TASK [Find configuration deployment deploy_script for evpn] ******************** ok: [s1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s1] => { "msg": "evpn configuration for s1\n=========================================\n\n\nupdates:\n- path: /network-instance[name=default]/protocols/bgp\n value:\n group:\n - group-name: ibgp-ipv4 # Could create a dedicated group for EVPN only?\n afi-safi:\n - afi-safi-name: evpn\n admin-state: enable\n route-advertisement:\n rapid-withdrawal: True\n afi-safi:\n - afi-safi-name: evpn\n evpn:\n rapid-update: True\n\n- path: /interface[name=irb0]/subinterface[index=1000]\n value:\n ipv4:\n arp:\n learn-unsolicited: True\n evpn:\n advertise: # Type of ARP/ND entries to be advertised\n - route-type: dynamic\n _annotate: \"Advertise dynamically learned IPs\"\n - route-type: static\n _annotate: \"Advertise local irb interface IPs\"\n\n\n- path: /interface[name=irb0]/subinterface[index=1002]\n value:\n ipv4:\n arp:\n learn-unsolicited: True\n evpn:\n advertise: # Type of ARP/ND entries to be advertised\n - route-type: dynamic\n _annotate: \"Advertise dynamically learned IPs\"\n - route-type: static\n _annotate: \"Advertise local irb interface IPs\"\n\n\n- path: /interface[name=irb0]/subinterface[index=1001]\n value:\n ipv4:\n arp:\n learn-unsolicited: True\n evpn:\n advertise: # Type of ARP/ND entries to be advertised\n - route-type: dynamic\n _annotate: \"Advertise dynamically learned IPs\"\n - route-type: static\n _annotate: \"Advertise local irb interface IPs\"\n\n\n" } TASK [Deploy evpn configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s1 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s1] TASK [Update SRL evpn node configuration (template=/work/netlab_cicd/node_files/s1/evpn)] *** changed: [s1] TASK [debug] ******************************************************************* skipping: [s1] TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [s2] TASK [Find configuration template for vlan] ************************************ ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "vlan configuration for s2\n=========================================\n\nupdates:\n- path: /interface[name=ethernet-1/2]\n value:\n subinterface:\n - index: 1001\n type: bridged\n description: \"[Access VLAN blue] s2 -> h2\"\n\n \n- path: /network-instance[name=vlan1001]\n value:\n type: mac-vrf\n description: \"[Access VLAN blue] s2 -> h2\"\n interface:\n - name: ethernet-1/2.1001\n\n\n- path: /interface[name=ethernet-1/3]\n value:\n subinterface:\n - index: 1003\n type: bridged\n description: \"[Access VLAN purple] s2 -> h4\"\n\n \n- path: /network-instance[name=vlan1003]\n value:\n type: mac-vrf\n description: \"[Access VLAN purple] s2 -> h4\"\n interface:\n - name: ethernet-1/3.1003\n\n\n- path: /interface[name=irb0]\n value:\n subinterface:\n - index: 1001\n\n- path: /interface[name=irb0]/subinterface[index=1001]\n value:\n description: \"VLAN blue (1001) ~ s1,h2\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"172.16.1.2/24\"\n primary: [null]\n\n \n- path: /network-instance[name=vlan1001]\n value:\n type: mac-vrf\n description: \"VLAN blue (1001) ~ s1,h2\"\n interface:\n - name: irb0.1001\n\n- path: /network-instance[name=tenant]\n value:\n type: ip-vrf\n interface:\n - name: irb0.1001\n\n- path: /interface[name=irb0]\n value:\n subinterface:\n - index: 1003\n\n- path: /interface[name=irb0]/subinterface[index=1003]\n value:\n description: \"VLAN purple (1003) ~ h4\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"172.16.3.2/24\"\n primary: [null]\n\n \n- path: /network-instance[name=vlan1003]\n value:\n type: mac-vrf\n description: \"VLAN purple (1003) ~ h4\"\n interface:\n - name: irb0.1003\n\n- path: /network-instance[name=tenant]\n value:\n type: ip-vrf\n interface:\n - name: irb0.1003\n\n- path: /interface[name=irb0]\n value:\n subinterface:\n - index: 1000\n\n- path: /interface[name=irb0]/subinterface[index=1000]\n value:\n description: \"VLAN red (1000) ~ h1,s1\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"172.16.0.2/24\"\n primary: [null]\n\n \n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n description: \"VLAN red (1000) ~ h1,s1\"\n interface:\n - name: irb0.1000\n\n- path: /network-instance[name=tenant]\n value:\n type: ip-vrf\n interface:\n - name: irb0.1000\n\n \n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s2 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s2] TASK [Update SRL vlan node configuration (template=/work/netlab_cicd/node_files/s2/vlan)] *** changed: [s2] TASK [debug] ******************************************************************* skipping: [s2] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [s2] TASK [Find configuration template for routing] ********************************* skipping: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [s2] TASK [Deploy routing configuration] ******************************************** skipping: [s2] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [s2] TASK [Find configuration template for ospf] ************************************ ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for ospf] ******************** ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "ospf configuration for s2\n=========================================\nupdates:\n\n\n- path: /network-instance[name=default]\n value:\n router-id: 10.0.0.2\n protocols:\n ospf:\n instance:\n - name: \"0\"\n version: ospf-v2\n admin-state: enable\n max-ecmp-paths: 64\n area:\n - area-id: 0.0.0.0\n interface:\n - interface-name: system0.0\n passive: True\n - area-id: 0.0.0.0\n interface:\n - interface-name: ethernet-1/1.0\n interface-type: \"point-to-point\"\n failure-detection:\n enable-bfd: False\n # OSPF not configured on external interface ethernet-1/2\n # OSPF not configured on external interface ethernet-1/3\n # OSPF not configured on external interface irb0.1001\n # OSPF not configured on external interface irb0.1003\n # OSPF not configured on external interface irb0.1000\n\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s2 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s2] TASK [Update SRL ospf node configuration (template=/work/netlab_cicd/node_files/s2/ospf)] *** changed: [s2] TASK [debug] ******************************************************************* skipping: [s2] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [s2] TASK [Find configuration template for bgp] ************************************* ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for bgp] ********************* ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "bgp configuration for s2\n=========================================\nupdates:\n\n- path: /routing-policy/policy[name=accept_all]\n value:\n default-action:\n policy-result: accept\n\n- path: /routing-policy/community-set[name=ibgp-mark]\n value:\n member: [ \"65536:0:65536\" ]\n\n- path: /routing-policy/policy[name=ibgp-mark]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: mark-ibgp-routes\n action:\n bgp:\n communities:\n add: ibgp-mark\n policy-result: accept\n\n- path: /routing-policy/prefix-set[name=default_bgp_advertise]\n value:\n prefix: [] # Make sure it exists\n\n- path: /routing-policy/policy[name=default_bgp_export]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: prefixes\n match:\n prefix:\n prefix-set: default_bgp_advertise\n action:\n policy-result: next-policy\n - name: bgp\n match:\n protocol: bgp\n action:\n policy-result: next-policy\n bgp:\n communities:\n remove:\n ibgp-mark\n\n\n- path: /network-instance[name=default]/protocols/bgp\n value:\n admin-state: enable\n autonomous-system: 65000\n router-id: 10.0.0.2\n ebgp-default-policy:\n export-reject-all: False\n import-reject-all: False\n\n afi-safi:\n - afi-safi-name: ipv4-unicast\n admin-state: enable\n\n- path: /routing-policy/prefix-set[name=default_bgp_advertise]\n value:\n prefix:\n - ip-prefix: 10.0.0.2/32\n mask-length-range: exact\n\n\n\n\n\n- path: /network-instance[name=default]/protocols/bgp/group[group-name=ibgp-ipv4]\n value:\n admin-state: enable\n# neighbor: {'name': 's1', 'as': 65000, 'type': 'ibgp', 'ipv4': '10.0.0.1', '_source_intf': {'type': 'loopback', 'neighbors': [], 'virtual_interface': True, 'ifindex': 0, 'ifname': 'lo0.0', 'ipv4': '10.0.0.2/32'}, 'next_hop_self': 'ebgp', 'activate': {'ipv4': True}, 'evpn': True}\n# ipv4: True\n# ipv6: True\n afi-safi:\n - afi-safi-name: ipv4-unicast\n admin-state: enable\n send-community-type: ['standard', 'large', 'extended']\n\n import-policy: ['accept_all']\n export-policy: ['default_bgp_export', 'accept_all']\n - afi-safi-name: ipv6-unicast\n admin-state: disable\n send-community-type: ['standard', 'large', 'extended']\n\n import-policy: ['accept_all']\n export-policy: ['default_bgp_export', 'accept_all']\n - afi-safi-name: evpn\n admin-state: enable\n send-community-type: ['standard', 'large', 'extended']\n\n\n timers:\n connect-retry: 10\n _annotate_connect-retry: \"Reduce default 120s to 10s\"\n minimum-advertisement-interval: 1\n peer-as: 65000\n transport:\n local-address: 10.0.0.2\n next-hop-self: True\n\n\n- path: /network-instance[name=default]/protocols/bgp\n value:\n neighbor:\n - peer-address: \"10.0.0.1\"\n description: s1\n peer-group: ibgp-ipv4\n # neighbor: {'name': 's1', 'as': 65000, 'type': 'ibgp', 'ipv4': '10.0.0.1', '_source_intf': {'type': 'loopback', 'neighbors': [], 'virtual_interface': True, 'ifindex': 0, 'ifname': 'lo0.0', 'ipv4': '10.0.0.2/32'}, 'next_hop_self': 'ebgp', 'activate': {'ipv4': True}, 'evpn': True}\n # ipv4: True\n # ipv6: False\n afi-safi:\n - afi-safi-name: ipv4-unicast\n admin-state: enable\n send-community-type: ['standard', 'large', 'extended']\n\n - afi-safi-name: ipv6-unicast\n admin-state: disable\n - afi-safi-name: evpn\n admin-state: enable\n send-community-type: ['standard', 'large', 'extended']\n\n\n\n\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s2 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s2] TASK [Update SRL bgp node configuration (template=/work/netlab_cicd/node_files/s2/bgp)] *** changed: [s2] TASK [debug] ******************************************************************* skipping: [s2] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [s2] TASK [Find configuration template for vrf] ************************************* ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for vrf] ********************* ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "vrf configuration for s2\n=========================================\n\nupdates:\n\n- path: /network-instance[name=tenant]\n value:\n type: ip-vrf\n\n- path: /routing-policy/policy[name=tenant_export_ospf]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: export_bgp\n match:\n protocol: bgp\n action:\n policy-result: accept\n - name: export_bgp-evpn\n match:\n protocol: bgp-evpn\n action:\n policy-result: accept\n - name: export_local\n match:\n protocol: local\n action:\n policy-result: accept\n\n\n- path: /network-instance[name=tenant]\n value:\n router-id: 10.0.0.2\n protocols:\n ospf:\n instance:\n - name: \"0\"\n version: ospf-v2\n admin-state: enable\n max-ecmp-paths: 64\n asbr: {}\n export-policy: \"tenant_export_ospf\"\n area:\n - area-id: 0.0.0.0\n interface:\n - interface-name: irb0.1001\n failure-detection:\n enable-bfd: False\n - area-id: 0.0.0.0\n interface:\n - interface-name: irb0.1003\n passive: True\n interface-type: \"point-to-point\"\n failure-detection:\n enable-bfd: False\n - area-id: 0.0.0.0\n interface:\n - interface-name: irb0.1000\n failure-detection:\n enable-bfd: False\n\n\n- path: /routing-policy/community-set[name=C65000_1]\n value:\n member:\n - \"target:65000:1\" # Single member, else matching is AND\n\n- path: /routing-policy/community-set[name=tenant_export]\n value:\n member:\n - \"target:65000:1\"\n\n\n- path: /routing-policy/policy[name=tenant_bgp_export]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: bgp\n match:\n protocol: bgp\n action:\n policy-result: next-policy\n bgp:\n communities:\n remove:\n ibgp-mark\n - name: bgp_evpn\n match:\n protocol: bgp-evpn\n action:\n policy-result: next-policy\n - name: export_local\n match:\n protocol: local\n action:\n policy-result: next-policy\n - name: export_ospfv2\n match:\n protocol: ospfv2\n action:\n policy-result: next-policy\n - name: export_ospfv3\n match:\n protocol: ospfv3\n action:\n policy-result: next-policy\n\n\n- path: /network-instance[name=tenant]/protocols/bgp\n value:\n admin-state: enable\n autonomous-system: 65000\n router-id: 10.0.0.2\n ebgp-default-policy:\n export-reject-all: False\n import-reject-all: False\n\n afi-safi:\n - afi-safi-name: ipv4-unicast\n admin-state: enable\n\n\n- path: /routing-policy/prefix-set[name=tenant_bgp_advertise]\n value:\n prefix:\n - ip-prefix: 172.16.3.0/24\n mask-length-range: exact\n\n\n\n\n\n\n\n- path: /network-instance[name=tenant]/protocols/bgp-vpn\n value:\n bgp-instance:\n - id: 1\n route-distinguisher:\n rd: \"65000:1\"\n\n- path: /network-instance[name=tenant]/inter-instance-policies\n value:\n apply-policy:\n export-policy: \"tenant_vpn_export\"\n import-policy: \"tenant_vpn_import\"\n\n- path: /routing-policy/policy[name=tenant_vpn_export]\n value:\n default-action:\n policy-result: \"accept\"\n bgp:\n communities:\n add: \"tenant_export\"\n\n- path: /routing-policy/policy[name=tenant_vpn_import]\n value:\n default-action:\n policy-result: \"reject\"\n statement:\n - name: 11\n match:\n bgp:\n community-set: \"C65000_1\"\n action:\n policy-result: \"accept\"\n\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s2 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s2] TASK [Update SRL vrf node configuration (template=/work/netlab_cicd/node_files/s2/vrf)] *** changed: [s2] TASK [debug] ******************************************************************* skipping: [s2] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [s2] TASK [Find configuration template for vxlan] *********************************** ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for vxlan] ******************* ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "vxlan configuration for s2\n=========================================\n\nupdates:\n- path: /tunnel-interface[name=vxlan0]/vxlan-interface[index=1000]\n value:\n type: bridged\n ingress:\n vni: 21000\n egress:\n source-ip: use-system-ipv4-address\n\n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n vxlan-interface:\n - name: vxlan0.1000\n protocols:\n bgp-vpn:\n bgp-instance:\n - id: 1\n # route-distinguisher:\n # rd: \"10.0.0.2:1000\"\n _annotate: \"RD left as for EVPN services and ECMP to work as expected, not '10.0.0.2:1000'\"\n route-target:\n _annotate: \"For compatibility with frr, override auto-derived RT based on EVI 1000 with VNI 21000\"\n import-rt: \"target:65000:1000\"\n export-rt: \"target:65000:1000\"\n bgp-evpn:\n bgp-instance:\n - id: 1\n evi: 1000\n ecmp: 8\n vxlan-interface: vxlan0.1000\n\n- path: /tunnel-interface[name=vxlan0]/vxlan-interface[index=1001]\n value:\n type: bridged\n ingress:\n vni: 21001\n egress:\n source-ip: use-system-ipv4-address\n\n- path: /network-instance[name=vlan1001]\n value:\n type: mac-vrf\n vxlan-interface:\n - name: vxlan0.1001\n protocols:\n bgp-vpn:\n bgp-instance:\n - id: 1\n # route-distinguisher:\n # rd: \"10.0.0.2:1001\"\n _annotate: \"RD left as for EVPN services and ECMP to work as expected, not '10.0.0.2:1001'\"\n route-target:\n _annotate: \"For compatibility with frr, override auto-derived RT based on EVI 1001 with VNI 21001\"\n import-rt: \"target:65000:1001\"\n export-rt: \"target:65000:1001\"\n bgp-evpn:\n bgp-instance:\n - id: 1\n evi: 1001\n ecmp: 8\n vxlan-interface: vxlan0.1001\n\n\n" } TASK [Deploy vxlan configuration] ********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s2 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s2] TASK [Update SRL vxlan node configuration (template=/work/netlab_cicd/node_files/s2/vxlan)] *** changed: [s2] TASK [debug] ******************************************************************* skipping: [s2] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [s2] TASK [Find configuration template for evpn] ************************************ ok: [s2] TASK [fail] ******************************************************************** skipping: [s2] TASK [Find configuration deployment deploy_script for evpn] ******************** ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [s2] => { "msg": "evpn configuration for s2\n=========================================\n\n\nupdates:\n- path: /network-instance[name=default]/protocols/bgp\n value:\n group:\n - group-name: ibgp-ipv4 # Could create a dedicated group for EVPN only?\n afi-safi:\n - afi-safi-name: evpn\n admin-state: enable\n route-advertisement:\n rapid-withdrawal: True\n afi-safi:\n - afi-safi-name: evpn\n evpn:\n rapid-update: True\n\n- path: /interface[name=irb0]/subinterface[index=1001]\n value:\n ipv4:\n arp:\n learn-unsolicited: True\n evpn:\n advertise: # Type of ARP/ND entries to be advertised\n - route-type: dynamic\n _annotate: \"Advertise dynamically learned IPs\"\n - route-type: static\n _annotate: \"Advertise local irb interface IPs\"\n\n\n- path: /interface[name=irb0]/subinterface[index=1003]\n value:\n ipv4:\n arp:\n learn-unsolicited: True\n evpn:\n advertise: # Type of ARP/ND entries to be advertised\n - route-type: dynamic\n _annotate: \"Advertise dynamically learned IPs\"\n - route-type: static\n _annotate: \"Advertise local irb interface IPs\"\n\n\n- path: /interface[name=irb0]/subinterface[index=1000]\n value:\n ipv4:\n arp:\n learn-unsolicited: True\n evpn:\n advertise: # Type of ARP/ND entries to be advertised\n - route-type: dynamic\n _annotate: \"Advertise dynamically learned IPs\"\n - route-type: static\n _annotate: \"Advertise local irb interface IPs\"\n\n\n" } TASK [Deploy evpn configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for s2 TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [s2] TASK [Update SRL evpn node configuration (template=/work/netlab_cicd/node_files/s2/evpn)] *** changed: [s2] TASK [debug] ******************************************************************* skipping: [s2] TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [h1] TASK [Find configuration template for vlan] ************************************ skipping: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for vlan] ******************** skipping: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy vlan configuration] *********************************************** skipping: [h1] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [h1] TASK [Find configuration template for routing] ********************************* skipping: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy routing configuration] ******************************************** skipping: [h1] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [h1] TASK [Find configuration template for ospf] ************************************ skipping: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for ospf] ******************** skipping: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy ospf configuration] *********************************************** skipping: [h1] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [h1] TASK [Find configuration template for bgp] ************************************* skipping: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for bgp] ********************* skipping: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy bgp configuration] ************************************************ skipping: [h1] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [h1] TASK [Find configuration template for vrf] ************************************* skipping: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy vrf configuration] ************************************************ skipping: [h1] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [h1] TASK [Find configuration template for vxlan] *********************************** skipping: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for vxlan] ******************* skipping: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy vxlan configuration] ********************************************** skipping: [h1] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [h1] TASK [Find configuration template for evpn] ************************************ skipping: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Find configuration deployment deploy_script for evpn] ******************** skipping: [h1] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h1] TASK [Deploy evpn configuration] *********************************************** skipping: [h1] TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [h2] TASK [Find configuration template for vlan] ************************************ skipping: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for vlan] ******************** skipping: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy vlan configuration] *********************************************** skipping: [h2] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [h2] TASK [Find configuration template for routing] ********************************* skipping: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy routing configuration] ******************************************** skipping: [h2] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [h2] TASK [Find configuration template for ospf] ************************************ skipping: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for ospf] ******************** skipping: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy ospf configuration] *********************************************** skipping: [h2] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [h2] TASK [Find configuration template for bgp] ************************************* skipping: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for bgp] ********************* skipping: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy bgp configuration] ************************************************ skipping: [h2] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [h2] TASK [Find configuration template for vrf] ************************************* skipping: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy vrf configuration] ************************************************ skipping: [h2] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [h2] TASK [Find configuration template for vxlan] *********************************** skipping: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for vxlan] ******************* skipping: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy vxlan configuration] ********************************************** skipping: [h2] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [h2] TASK [Find configuration template for evpn] ************************************ skipping: [h2] TASK [fail] ******************************************************************** skipping: [h2] TASK [Find configuration deployment deploy_script for evpn] ******************** skipping: [h2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h2] TASK [Deploy evpn configuration] *********************************************** skipping: [h2] TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [h3] TASK [Find configuration template for vlan] ************************************ skipping: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for vlan] ******************** skipping: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy vlan configuration] *********************************************** skipping: [h3] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [h3] TASK [Find configuration template for routing] ********************************* skipping: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy routing configuration] ******************************************** skipping: [h3] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [h3] TASK [Find configuration template for ospf] ************************************ skipping: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for ospf] ******************** skipping: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy ospf configuration] *********************************************** skipping: [h3] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [h3] TASK [Find configuration template for bgp] ************************************* skipping: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for bgp] ********************* skipping: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy bgp configuration] ************************************************ skipping: [h3] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [h3] TASK [Find configuration template for vrf] ************************************* skipping: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy vrf configuration] ************************************************ skipping: [h3] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [h3] TASK [Find configuration template for vxlan] *********************************** skipping: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for vxlan] ******************* skipping: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy vxlan configuration] ********************************************** skipping: [h3] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [h3] TASK [Find configuration template for evpn] ************************************ skipping: [h3] TASK [fail] ******************************************************************** skipping: [h3] TASK [Find configuration deployment deploy_script for evpn] ******************** skipping: [h3] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h3] TASK [Deploy evpn configuration] *********************************************** skipping: [h3] TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [h4] TASK [Find configuration template for vlan] ************************************ skipping: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for vlan] ******************** skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy vlan configuration] *********************************************** skipping: [h4] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [h4] TASK [Find configuration template for routing] ********************************* skipping: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy routing configuration] ******************************************** skipping: [h4] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [h4] TASK [Find configuration template for ospf] ************************************ skipping: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for ospf] ******************** skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy ospf configuration] *********************************************** skipping: [h4] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [h4] TASK [Find configuration template for bgp] ************************************* skipping: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for bgp] ********************* skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy bgp configuration] ************************************************ skipping: [h4] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [h4] TASK [Find configuration template for vrf] ************************************* skipping: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for vrf] ********************* skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy vrf configuration] ************************************************ skipping: [h4] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [h4] TASK [Find configuration template for vxlan] *********************************** skipping: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for vxlan] ******************* skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy vxlan configuration] ********************************************** skipping: [h4] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [h4] TASK [Find configuration template for evpn] ************************************ skipping: [h4] TASK [fail] ******************************************************************** skipping: [h4] TASK [Find configuration deployment deploy_script for evpn] ******************** skipping: [h4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [h4] TASK [Deploy evpn configuration] *********************************************** skipping: [h4] 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=65 changed=7 unreachable=0 failed=0 skipped=24 rescued=0 ignored=0 s2 : ok=65 changed=7 unreachable=0 failed=0 skipped=24 rescued=0 ignored=0 Warning: The following warnings were generated during the 'netlab initial' processing Warning: ansible: You're using Ansible version 12.x or higher; netlab might not work correctly 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