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 [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: [dut] ok: [x1] TASK [Generic readiness tests] ************************************************* skipping: [dut] included: /home/pipi/netlab_gh/netsim/ansible/tasks/readiness-check/ssh.yml for x1 => (item=ssh) TASK [Check if 'sshpass' is installed] ***************************************** ok: [x1 -> localhost] TASK [Check for 'timeout' command] ********************************************* ok: [x1 -> localhost] TASK [Execute local ssh command to check ssh readiness] ************************ FAILED - RETRYING: [x1 -> localhost]: Execute local ssh command to check ssh readiness (20 retries left). ok: [x1 -> localhost] TASK [Confirm x1 SSH server works] ********************************************* ok: [x1] => { "msg": "Node x1 is ready." } TASK [Find device readiness script] ******************************************** ok: [dut] ok: [x1] TASK [Wait for device to become ready] ***************************************** skipping: [dut] skipping: [x1] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [dut] TASK [Find configuration template for normalize] ******************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] TASK [Deploy normalize configuration] ****************************************** skipping: [dut] TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [x1] TASK [Find configuration template for normalize] ******************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "normalize configuration for x1\n=========================================\n!\ninterface Ethernet1\n shutdown\n" } TASK [Deploy normalize configuration] ****************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying normalize from /work/netlab_cicd/node_files/x1/normalize] *** [WARNING]: To ensure idempotency and correct diff the input configuration lines should be similar to how they appear if present in the running configuration on device including the indentation [WARNING]: Task result `warnings` was instead of . changed: [x1] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 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 ~ x1\"\n subinterface:\n index: 0\n description: \"dut ~ x1\"\n\n- path: /interface[name=ethernet-1/1]/subinterface[index=0]\n value:\n description: \"dut ~ x1\"\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" } 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] TASK [Figure out whether to deploy the module initial on current device] ******* ok: [x1] TASK [Find configuration template for initial] ********************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "initial configuration for x1\n=========================================\nhostname x1\n!\nlogging monitor debugging\naaa authorization exec default local\n!\nlldp run\nip routing\nno ipv6 unicast-routing\n!\n!\nip host dut 10.0.0.1 10.1.0.1\n!\ninterface Management0\n no lldp transmit\n no lldp receive\n!\ninterface Loopback0\n ip address 10.0.0.2/32\n!\ninterface Ethernet1\n no switchport\n description x1 -> dut [external]\n ip address 10.1.0.2/30\n mac-address caf0.0002.0001\n!\n no shutdown\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying initial from /work/netlab_cicd/node_files/x1/initial] *** changed: [x1] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] ok: [x1] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=bfd) 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 x1 => (item=bfd) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for x1 => (item=bgp) TASK [Figure out whether to deploy the module bfd on current device] *********** ok: [dut] TASK [Find configuration template for bfd] ************************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for bfd] ********************* ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "bfd configuration for dut\n=========================================\nupdates:\n- path: /bfd\n value:\n subinterface:\n\n\n - id: ethernet-1/1.0\n admin-state: \"enable\"\n desired-minimum-transmit-interval: 100000\n required-minimum-receive: 100000\n detection-multiplier: 3 # range 1..20\n minimum-echo-receive-interval: 0\n" } TASK [Deploy bfd 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 bfd node configuration (template=/work/netlab_cicd/node_files/dut/bfd)] *** changed: [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\n\n- path: /network-instance[name=default]/protocols/bgp/group[group-name=ebgp]\n value:\n admin-state: enable\n# neighbor: {'ifindex': 1, 'name': 'x1', 'as': 65100, 'type': 'ebgp', 'ipv4': '10.1.0.2', 'activate': {'ipv4': True}, 'bfd': 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']\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']\n\n import-policy: ['accept_all']\n export-policy: ['default_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=default]/protocols/bgp\n value:\n neighbor:\n - peer-address: \"10.1.0.2\"\n description: x1\n peer-group: ebgp\n # neighbor: {'ifindex': 1, 'name': 'x1', 'as': 65100, 'type': 'ebgp', 'ipv4': '10.1.0.2', 'activate': {'ipv4': True}, 'bfd': 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']\n\n - afi-safi-name: ipv6-unicast\n admin-state: disable\n\n peer-as: 65100\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 bfd on current device] *********** ok: [x1] TASK [Find configuration template for bfd] ************************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for bfd] ********************* ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "bfd configuration for x1\n=========================================\ninterface Ethernet1\n bfd interval 500 min_rx 500 multiplier 3\n!\n" } TASK [Deploy bfd configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying bfd from /work/netlab_cicd/node_files/x1/bfd] ****** changed: [x1] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [x1] TASK [Find configuration template for bgp] ************************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Find configuration deployment deploy_script for bgp] ********************* ok: [x1] TASK [Print deployed configuration when running in verbose mode] *************** ok: [x1] => { "msg": "bgp configuration for x1\n=========================================\n!\n!\nrouter bgp 65100\n bgp advertise-inactive\n bgp log-neighbor-changes\n no bgp default ipv4-unicast\n no bgp default ipv6-unicast\n router-id 10.0.0.2\n!\n neighbor 10.1.0.1 remote-as 65000\n neighbor 10.1.0.1 description dut\n neighbor 10.1.0.1 send-community standard large \n!\n!\n address-family ipv4\n\n!\n!\n! Originate networks from connected subnets\n!\n network 10.0.0.2/32\n!\n!\n neighbor 10.1.0.1 activate\n neighbor 10.1.0.1 next-hop-self\n!\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying bgp from /work/netlab_cicd/node_files/x1/bgp] ****** changed: [x1] PLAY [Deploy custom deployment templates] ************************************** TASK [Run custom configuration deployment scripts] ***************************** skipping: [dut] => (item=static_bfd) skipping: [x1] => (item=bgp.session) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-custom-config.yml for dut => (item=bgp.session) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-custom-config.yml for x1 => (item=static_bfd) TASK [Find configuration template] ********************************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Check is the configuration template is a file] *************************** ok: [dut -> localhost] TASK [fail] ******************************************************************** skipping: [dut] TASK [Process template /work/netlab_cicd/node_files/dut/bgp.session for dut] *** skipping: [dut] TASK [Find custom configuration deployment script] ***************************** ok: [dut] TASK [Run the configuration deployment script] ********************************* 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.session node configuration (template=/work/netlab_cicd/node_files/dut/bgp.session)] *** changed: [dut] TASK [debug] ******************************************************************* skipping: [dut] TASK [Find configuration template] ********************************************* ok: [x1] TASK [fail] ******************************************************************** skipping: [x1] TASK [Check is the configuration template is a file] *************************** ok: [x1 -> localhost] TASK [fail] ******************************************************************** skipping: [x1] TASK [Process template /work/netlab_cicd/node_files/x1/static_bfd for x1] ****** skipping: [x1] TASK [Find custom configuration deployment script] ***************************** ok: [x1] TASK [Run the configuration deployment script] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for x1 TASK [eos_config: deploying static_bfd from /work/netlab_cicd/node_files/x1/static_bfd] *** changed: [x1] PLAY RECAP ********************************************************************* dut : ok=38 changed=4 unreachable=0 failed=0 skipped=15 rescued=0 ignored=0 x1 : ok=42 changed=5 unreachable=0 failed=0 skipped=8 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 [CREATED] dut: initial,bgp,bfd,bgp.session [CREATED] x1: normalize,initial,bgp,bfd,static_bfd This lab tests the BGP BFD functionality. The EBGP session between the probe and the lab device should trigger a BFD session between them.