Creating Device configuration snippets [CREATED] dut: initial,ospf,bgp,vrf [CREATED] p1: initial,ospf [CREATED] p2: initial,ospf [CREATED] xf: initial,bgp Config Deploying device configurations [INFO] Executing initial configuration for node p1 [INFO] Executing initial configuration for node p2 [INFO] Executing initial configuration for node xf [INFO] Executing bgp configuration for node xf [INFO] Executing ospf configuration for node p1 [INFO] Executing ospf configuration for node p2 [INFO] Starting Ansible playbook to deploy the rest of the configurations [WARNING]: Found variable using reserved name: hosts PLAY [Deploy initial device configuration] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut TASK [Figure out whether to deploy the module initial on current device] ******* ok: [dut] TASK [Find configuration template for initial] ********************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "initial configuration for dut\n=========================================\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: \"dut ~ p1\"\n subinterface:\n index: 0\n description: \"dut ~ p1\"\n\n- path: /interface[name=ethernet-1/1]/subinterface[index=0]\n value:\n description: \"dut ~ p1\"\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- path: /interface[name=ethernet-1/2]\n value:\n description: \"dut ~ p2\"\n subinterface:\n index: 0\n description: \"dut ~ p2\"\n\n- path: /interface[name=ethernet-1/2]/subinterface[index=0]\n value:\n description: \"dut ~ p2\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"10.1.0.5/30\"\n primary: [null]\n\n- path: /interface[name=ethernet-1/3]\n value:\n description: \"dut ~ xf\"\n subinterface:\n index: 0\n description: \"dut ~ xf\"\n\n- path: /interface[name=ethernet-1/3]/subinterface[index=0]\n value:\n description: \"dut ~ xf\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"10.1.0.9/30\"\n primary: [null]\n\n- path: /interface[name=lo0]\n value:\n description: \"VRF Loopback d2\"\n subinterface:\n index: 1\n description: \"VRF Loopback d2\"\n\n- path: /interface[name=lo0]/subinterface[index=1]\n value:\n description: \"VRF Loopback d2\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"192.168.43.1/32\"\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\n\n\n# TODO: vdata.rd, vdata.import/export, vdata.af\n- path: /network-instance[name=d2]\n value:\n type: ip-vrf\n interface:\n - name: ethernet-1/2.0\n- path: /network-instance[name=d2]\n value:\n type: ip-vrf\n interface:\n - name: ethernet-1/3.0\n- path: /network-instance[name=d2]\n value:\n type: ip-vrf\n interface:\n - name: lo0.1\n\n\n\n# TODO: vdata.rd, vdata.import/export, vdata.af\n- path: /network-instance[name=d1]\n value:\n type: ip-vrf\n interface:\n - name: ethernet-1/1.0\n\n\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for dut TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [dut] TASK [Update SRL initial node configuration (template=/work/netlab_cicd/node_files/dut/initial)] *** changed: [dut] TASK [debug] ******************************************************************* skipping: [dut] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=vrf) TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [dut] TASK [Find configuration template for ospf] ************************************ ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for ospf] ******************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "ospf configuration for dut\n=========================================\nupdates:\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for dut TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [dut] TASK [Update SRL ospf node configuration (template=/work/netlab_cicd/node_files/dut/ospf)] *** skipping: [dut] TASK [debug] ******************************************************************* skipping: [dut] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [dut] TASK [Find configuration template for bgp] ************************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for bgp] ********************* ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "bgp configuration for dut\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" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/srlinux.yml for dut TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [dut] TASK [Update SRL bgp node configuration (template=/work/netlab_cicd/node_files/dut/bgp)] *** changed: [dut] TASK [debug] ******************************************************************* skipping: [dut] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [dut] TASK [Find configuration template for vrf] ************************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for vrf] ********************* ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vrf configuration for dut\n=========================================\n\nupdates:\n\n- path: /network-instance[name=d2]\n value:\n type: ip-vrf\n\n- path: /routing-policy/prefix-set[name=default_route]\n value:\n prefix:\n - ip-prefix: \"0.0.0.0/0\"\n mask-length-range: exact\n - ip-prefix: \"::/0\"\n mask-length-range: exact\n- path: /routing-policy/policy[name=d2_export_ospf]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: default\n match:\n prefix:\n prefix-set: default_route\n action:\n policy-result: accept\n - name: export_bgp\n match:\n protocol: bgp\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=d2]\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: \"d2_export_ospf\"\n area:\n - area-id: 0.0.0.0\n interface:\n - interface-name: ethernet-1/2.0\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: lo0.1\n failure-detection:\n enable-bfd: False\n\n\n- path: /routing-policy/community-set[name=C65000_2]\n value:\n member:\n - \"target:65000:2\" # Single member, else matching is AND\n\n- path: /routing-policy/community-set[name=d2_export]\n value:\n member:\n - \"target:65000:2\"\n\n\n- path: /routing-policy/policy[name=d2_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: 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=d2]/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=d2_bgp_advertise]\n value:\n prefix:\n - ip-prefix: 192.168.43.1/32\n mask-length-range: exact\n\n\n\n- path: /network-instance[name=d2]/protocols/bgp/group[group-name=ebgp]\n value:\n admin-state: enable\n# neighbor: {'ifindex': 3, 'name': 'xf', 'as': 65100, 'type': 'ebgp', 'ipv4': '10.1.0.10', 'activate': {'ipv4': True}, '_src_vrf': 'd2'}\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']\n\n import-policy: ['accept_all']\n export-policy: ['d2_bgp_export', 'accept_all']\n - afi-safi-name: ipv6-unicast\n admin-state: disable\n send-community-type: ['standard', 'large']\n\n import-policy: ['accept_all']\n export-policy: ['d2_bgp_export', 'accept_all']\n\n timers:\n connect-retry: 10\n _annotate_connect-retry: \"Reduce default 120s to 10s\"\n minimum-advertisement-interval: 1\n\n\n- path: /network-instance[name=d2]/protocols/bgp\n value:\n neighbor:\n - peer-address: \"10.1.0.10\"\n description: xf\n peer-group: ebgp\n # neighbor: {'ifindex': 3, 'name': 'xf', 'as': 65100, 'type': 'ebgp', 'ipv4': '10.1.0.10', 'activate': {'ipv4': True}, '_src_vrf': 'd2'}\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']\n\n - afi-safi-name: ipv6-unicast\n admin-state: disable\n\n peer-as: 65100\n\n\n\n- path: /network-instance[name=d2]/protocols/bgp-vpn\n value:\n bgp-instance:\n - id: 1\n route-distinguisher:\n rd: \"65000:2\"\n\n- path: /network-instance[name=d2]/inter-instance-policies\n value:\n apply-policy:\n export-policy:\n - \"d2_vpn_export\"\n import-policy:\n - \"d2_vpn_import\"\n\n- path: /routing-policy/policy[name=d2_vpn_export]\n value:\n default-action:\n policy-result: \"accept\"\n bgp:\n communities:\n add: \"d2_export\"\n\n- path: /routing-policy/policy[name=d2_vpn_import]\n value:\n default-action:\n policy-result: \"reject\"\n statement:\n - name: 11\n match:\n bgp:\n community-set: \"C65000_2\"\n action:\n policy-result: \"accept\"\n\n\n- path: /network-instance[name=d1]\n value:\n type: ip-vrf\n\n- path: /routing-policy/prefix-set[name=default_route]\n value:\n prefix:\n - ip-prefix: \"0.0.0.0/0\"\n mask-length-range: exact\n - ip-prefix: \"::/0\"\n mask-length-range: exact\n- path: /network-instance[name=d1]/next-hop-groups/group[name=blackhole]\n value:\n blackhole:\n generate-icmp: True\n\n- path: /network-instance[name=d1]/static-routes\n value:\n route:\n - prefix: 0.0.0.0/0\n preference: 254\n next-hop-group: blackhole\n- path: /routing-policy/policy[name=d1_export_ospf]\n value:\n default-action:\n policy-result: reject\n statement:\n - name: default\n match:\n prefix:\n prefix-set: default_route\n action:\n policy-result: accept\n - name: export_bgp\n match:\n protocol: bgp\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=d1]\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: \"d1_export_ospf\"\n area:\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\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=d1_export]\n value:\n member:\n - \"target:65000:1\"\n\n\n- path: /routing-policy/policy[name=d1_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: 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=d1]/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\n\n\n- path: /network-instance[name=d1]/protocols/bgp-vpn\n value:\n bgp-instance:\n - id: 1\n route-distinguisher:\n rd: \"65000:1\"\n\n- path: /network-instance[name=d1]/inter-instance-policies\n value:\n apply-policy:\n export-policy:\n - \"d1_vpn_export\"\n import-policy:\n - \"d1_vpn_import\"\n\n- path: /routing-policy/policy[name=d1_vpn_export]\n value:\n default-action:\n policy-result: \"accept\"\n bgp:\n communities:\n add: \"d1_export\"\n\n- path: /routing-policy/policy[name=d1_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 dut TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [dut] TASK [Update SRL vrf node configuration (template=/work/netlab_cicd/node_files/dut/vrf)] *** changed: [dut] TASK [debug] ******************************************************************* skipping: [dut] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=33 changed=3 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ p1 Script: initial,ospf p2 Script: initial,ospf xf Script: initial,bgp This lab tests the VRF OSPF default route origination. The device under test should originate the default route in multiple VRFs, one always, the other one based on BGP default route.