Creating Device configuration snippets [CREATED] dut: initial,bgp,bgp.session [CREATED] x1: initial,bgp,bgp.session [CREATED] x2: initial,bgp [CREATED] x3: initial,bgp,bgp.session Checking Are lab devices ready to be configured? [INFO] Checking SSH server(s) on dut [SSH] SSH server on node dut (device vjunos-switch) is ready after 86.7 seconds [INFO] Checking lab devices with an Ansible playbook [WARNING]: Found variable using reserved name: hosts PLAY [Wait for SSH servers] **************************************************** PLAY [Wait for device-specific conditions] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] TASK [Find device readiness script] ******************************************** ok: [dut] TASK [Wait for device to become ready] ***************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/readiness-check/junos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [Wait for first interface (ge-0/0/0)] ************************************* ok: [dut] PLAY RECAP ********************************************************************* dut : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Config Deploying device configurations [INFO] Executing initial configuration for node x1 [INFO] Executing initial configuration for node x2 [INFO] Executing initial configuration for node x3 [INFO] Executing bgp configuration for node x2 [INFO] Executing bgp configuration for node x1 [INFO] Executing bgp configuration for node x3 [INFO] Executing bgp.session configuration for node x3 [INFO] Executing bgp.session configuration for node x1 [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=========================================\nsystem {\n host-name dut;\n static-host-mapping {\n x1 inet 10.0.0.2;\n x2 inet 10.0.0.3;\n x3 inet 10.0.0.4;\n }\n}\n\ninterfaces {\n ge-0/0/0 {\n mtu 1514;\n }\n ge-0/0/1 {\n mtu 1514;\n }\n ge-0/0/2 {\n mtu 1514;\n }\n\n lo0.0 {\n\n family inet {\n address 10.0.0.1/32;\n }\n }\n ge-0/0/0.0 {\n description \"dut -> x1 [external]\";\n\n family inet {\n address 10.1.0.1/30;\n }\n }\n ge-0/0/1.0 {\n description \"dut -> x2 [external]\";\n\n family inet {\n address 10.1.0.5/30;\n }\n }\n ge-0/0/2.0 {\n description \"dut -> x3 [external]\";\n\n family inet {\n address 10.1.0.9/30;\n }\n }\n}\nprotocols {\n lldp {\n interface fxp0 {\n disable;\n }\n interface all;\n }\n}\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut TASK [junos_config: deploying initial from /work/netlab_cicd/junos/node_files/dut/initial] *** changed: [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=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=bgp) TASK [Figure out whether to deploy the module routing on current device] ******* ok: [dut] TASK [Find configuration template for routing] ********************************* skipping: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [dut] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] TASK [Deploy routing configuration] ******************************************** 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=========================================\n\nrouting-options {\n autonomous-system 65000;\n router-id 10.0.0.1\n}\n\n\npolicy-options {\n delete: policy-statement next-hop-ebgp-ipv4;\n delete: policy-statement next-hop-all-ipv4;\n delete: policy-statement next-hop-ebgp-ipv6;\n delete: policy-statement next-hop-all-ipv6;\n\n delete: policy-statement bgp-default-redistribute;\n delete: route-filter-list bgp-default-announce-ipv4;\n delete: route-filter-list bgp-default-announce-ipv6;\n\n policy-statement bgp-final {\n term final-option {\n then {\n accept;\n }\n }\n }\n\n route-filter-list bgp-default-announce-ipv4 {\n 10.0.0.1/32 exact;\n }\n\n policy-statement bgp-default-redistribute {\n term advertise-ipv4 {\n from {\n route-filter-list bgp-default-announce-ipv4;\n }\n then {\n next policy;\n }\n }\n\n term redis_bgp {\n from protocol bgp;\n then {\n next policy;\n }\n }\n\n term default {\n then reject;\n }\n }\n\n\n policy-statement next-hop-ebgp-ipv4 {\n term next-hop-self-ipv4 {\n from {\n family inet;\n route-type external;\n }\n then {\n next-hop self;\n }\n }\n }\n policy-statement next-hop-all-ipv4 {\n term next-hop-self-ipv4 {\n from {\n family inet;\n }\n then {\n next-hop self;\n }\n }\n }\n policy-statement next-hop-ebgp-ipv6 {\n term next-hop-self-ipv6 {\n from {\n family inet6;\n route-type external;\n }\n then {\n next-hop self;\n }\n }\n }\n policy-statement next-hop-all-ipv6 {\n term next-hop-self-ipv6 {\n from {\n family inet6;\n }\n then {\n next-hop self;\n }\n }\n }\n\n policy-statement bgp-initial {\n term initial-cleanup {\n then {\n next policy;\n }\n }\n }\n\n}\nprotocols {\n delete: bgp;\n}\nprotocols {\n bgp {\n group ibgp-peers-ipv4 {\n type internal;\n export [ \n next-hop-ebgp-ipv4 bgp-default-redistribute bgp-final\n ];\n advertise-inactive;\n }\n group ebgp-peers {\n export [ \n bgp-default-redistribute bgp-final\n ];\n advertise-inactive;\n neighbor 10.1.0.2 {\n\n peer-as 65100;\n description x1;\n family inet {\n unicast;\n }\n }\n neighbor 10.1.0.6 {\n\n peer-as 65101;\n description x2;\n family inet {\n unicast;\n }\n }\n neighbor 10.1.0.10 {\n\n peer-as 65102;\n description x3;\n family inet {\n unicast;\n }\n }\n }\n }\n}\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut TASK [junos_config: deploying bgp from /work/netlab_cicd/junos/node_files/dut/bgp] *** [WARNING]: statement not found changed: [dut] PLAY [Deploy custom deployment templates] ************************************** TASK [Run custom configuration deployment scripts] ***************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-custom-config.yml for dut => (item=bgp.session) 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/junos/node_files/dut/bgp.session for dut] *** skipping: [dut] TASK [debug] ******************************************************************* skipping: [dut] TASK [debug] ******************************************************************* 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/junos.yml for dut TASK [junos_config: deploying bgp.session from /work/netlab_cicd/junos/node_files/dut/bgp.session] *** [WARNING]: mgd: statement has no contents; ignored changed: [dut] PLAY RECAP ********************************************************************* dut : ok=24 changed=3 unreachable=0 failed=0 skipped=12 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ x1 Script: initial,bgp,bgp.session x2 Script: initial,bgp x3 Script: initial,bgp,bgp.session Use this topology to test the 'passive BGP peer' functionality. The DUT should establish an EBGP sesion with X1 (DUT is active) and X2 (X2 is active) but not with X3 (both are passive).