Creating Device configuration snippets [CREATED] dut: initial,routing,ospf,vrf,tunnel.gre [CREATED] r2: initial,routing,ospf,vrf,tunnel.gre [CREATED] r3: initial,routing,ospf,vrf,tunnel.gre [CREATED] core: initial Checking Are lab devices ready to be configured? [INFO] Checking lab devices with an Ansible playbook [WARNING]: Could not match supplied host pattern, ignoring: netlab_ready_ssh [WARNING]: Found variable using reserved name: hosts PLAY [Wait for SSH servers] **************************************************** skipping: no hosts matched 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/vyos-clab.yml for dut TASK [wait_for_connection] ***************************************************** ok: [dut] TASK [wait_for] **************************************************************** 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 r2 [INFO] Executing initial configuration for node r3 [INFO] Executing initial configuration for node core [INFO] Executing routing configuration for node r2 [INFO] Executing routing configuration for node r3 [INFO] Executing ospf configuration for node r2 [INFO] Executing ospf configuration for node r3 [INFO] Executing vrf configuration for node r2 [INFO] Executing vrf configuration for node r3 [INFO] Executing tunnel.gre configuration for node r3 [INFO] Executing tunnel.gre configuration for node r2 [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=========================================\nset system host-name 'dut'\n\n#\n# Create VRF tables as part of initial device configuration\n#\nset vrf name tenant table 100\n\n\n# In VyOS, GRE tunnels can be established over both IPv4 (encapsulation gre) and IPv6 (encapsulation ip6gre) transport networks.\n\nset interfaces tunnel tun0 encapsulation 'gre'\n\nset interfaces tunnel tun0 source-address 172.22.0.2\nset interfaces tunnel tun0 remote 172.22.1.2\n\n\n# In VyOS, GRE tunnels can be established over both IPv4 (encapsulation gre) and IPv6 (encapsulation ip6gre) transport networks.\n\nset interfaces tunnel tun1 encapsulation 'gre'\nset interfaces tunnel tun1 encapsulation 'ip6gre'\n\nset interfaces tunnel tun1 source-address 2001:db8:42::2\nset interfaces tunnel tun1 remote 2001:db8:42:1::2\n\n\n\n\nset interfaces dummy dum0 address 10.0.0.1/32\nset interfaces dummy dum0 address 2001:db8::1/128\n\n\n\nset interfaces ethernet eth1 description 'dut -> core [core]'\n\nset interfaces ethernet eth1 mtu 1500\n\nset interfaces ethernet eth1 address 172.22.0.2/24\n\n\nset interfaces ethernet eth1 vrf tenant\n\n\n\nset interfaces ethernet eth2 description 'dut -> core [core6]'\n\nset interfaces ethernet eth2 mtu 1500\n\n\nset interfaces ethernet eth2 address 2001:db8:42::2/64;\n\nset interfaces ethernet eth2 vrf tenant\n\n\n\nset interfaces tunnel tun0 description 'dut -> r2 [GRE tunnel]'\n\nset interfaces tunnel tun0 mtu 1400\n\nset interfaces tunnel tun0 address 172.23.0.1/24\n\nset interfaces tunnel tun0 address 2001:db8:1::1/64;\n\n\n\n\nset interfaces tunnel tun1 description 'dut -> r3 [GRE tunnel]'\n\nset interfaces tunnel tun1 mtu 1400\n\nset interfaces tunnel tun1 address 172.23.1.1/24\n\nset interfaces tunnel tun1 address 2001:db8:1:1::1/64;\n\n\n\nset service lldp interface all\n>/dev/null 2>/dev/null set service lldp interface eth0 disable\n>/dev/null 2>/dev/null set service lldp interface eth0 mode disable\n\nset service router-advert interface eth2\nset service router-advert interface tun0\nset service router-advert interface tun1\n\nset service ssh\n\ncommit\n\n# Restart FRR to pick up the new hostname\nsudo service frr restart\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-initial.sh to deploy initial config from /work/netlab_cicd/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=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut => (item=vrf) TASK [Figure out whether to deploy the module routing on current device] ******* ok: [dut] TASK [Find configuration template for routing] ********************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for routing] ***************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "routing configuration for dut\n=========================================\n\n\n\n\n# Static routing\n\nset vrf name tenant protocols static route 172.22.0.0/16 next-hop 172.22.0.1 interface eth1\nset vrf name tenant protocols static route6 2001:db8:42::/48 next-hop 2001:db8:42::1 interface eth2\n" } TASK [Deploy routing configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-routing.sh to deploy routing config from /work/netlab_cicd/node_files/dut/routing] *** changed: [dut] 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=========================================\n\nset protocols ospf parameters router-id 10.0.0.1\n\n\n\n\nset protocols ospf interface dum0 passive\nset protocols ospf interface dum0 area 0.0.0.0\n\n\nset protocols ospf interface tun0 area 0.0.0.0\n\nset protocols ospf interface tun0 network point-to-point\n\n\n\nset protocols ospf interface tun1 area 0.0.0.0\n\nset protocols ospf interface tun1 network point-to-point\n\n\n\nset protocols ospfv3 parameters router-id 10.0.0.1\n\n\n\n\nset protocols ospfv3 interface dum0 passive\nset protocols ospfv3 interface dum0 area 0.0.0.0\n\n\nset protocols ospfv3 interface tun0 area 0.0.0.0\n\nset protocols ospfv3 interface tun0 network point-to-point\n\n\n\nset protocols ospfv3 interface tun1 area 0.0.0.0\n\nset protocols ospfv3 interface tun1 network point-to-point\n\n\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-ospf.sh to deploy ospf config from /work/netlab_cicd/node_files/dut/ospf] *** changed: [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\n# Enter vrf sublevel\nedit vrf name tenant\n\n\n\n# Back to root level\ntop\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-vrf.sh to deploy vrf config from /work/netlab_cicd/node_files/dut/vrf] *** 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=tunnel.gre) 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/tunnel.gre 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/vyos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [template] **************************************************************** changed: [dut] TASK [execute config-tunnel.gre.sh to deploy tunnel.gre config from /work/netlab_cicd/node_files/dut/tunnel.gre] *** changed: [dut] PLAY RECAP ********************************************************************* dut : ok=46 changed=10 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ r2 Script: initial,routing,ospf,vrf,tunnel.gre r3 Script: initial,routing,ospf,vrf,tunnel.gre core Script: initial Test the GRE tunnels. The tested device has GRE tunnels over IPv4 and IPv6 and runs OSPFv2 and OSPFv3 over them. The probes should receive OSPF routes advertised from the DUT and be able to ping its loopback.