Creating Device configuration snippets [CREATED] dut: initial,routing,ospf,tunnel.wireguard [CREATED] r2: initial,routing,ospf,tunnel.wireguard [CREATED] r3: initial,routing,ospf,tunnel.wireguard [CREATED] core: initial 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 ospf configuration for node r2 [INFO] Executing tunnel.wireguard configuration for node r2 [INFO] Executing routing configuration for node r3 [INFO] Executing ospf configuration for node r3 [INFO] Executing tunnel.wireguard configuration for node r3 [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#!/bin/sh\n\nset -e # Exit immediately when any command fails\nset -x # Track commands for troubleshooting\n\nhostname dut\n#\n# Build hosts file\n#\n#\ncat <<'SCRIPT' >/tmp/hosts\n#\n# Created by netlab initial\n#\n10.0.0.4 core\n2001:db8:1::4 core\n172.22.0.4 eth1.core\n2001:db8:4::4 eth1.core\n172.22.1.4 eth2.core\n2001:db8:4:1::4 eth2.core\n172.22.2.4 eth3.core\n2001:db8:4:2::4 eth3.core\n10.0.0.1 dut\n2001:db8:1::1 dut\n172.22.0.1 vio1.dut\n2001:db8:4::1 vio1.dut\n10.1.0.1 wg0.dut\n2001:db8:3::1 wg0.dut\n10.1.0.5 wg1.dut\n2001:db8:3:1::1 wg1.dut\n10.0.0.2 r2\n2001:db8:1::2 r2\n172.22.1.2 eth1.r2\n2001:db8:4:1::2 eth1.r2\n10.1.0.2 wg0.r2\n2001:db8:3::2 wg0.r2\n10.0.0.3 r3\n2001:db8:1::3 r3\n172.22.2.3 eth1.r3\n2001:db8:4:2::3 eth1.r3\n10.1.0.6 wg0.r3\n2001:db8:3:1::3 wg0.r3\nSCRIPT\ngrep \"Created by netlab\" /etc/hosts || uniq /tmp/hosts >>/etc/hosts\n\n#\n# Enable forwarding\n#\nsysctl net.inet.ip.forwarding=1\nsysctl net.inet6.ip6.forwarding=1\necho -n > /etc/rad.conf\n\n#\n# Interface configuration\n#\nifconfig lo0 inet 10.0.0.1/32 alias\necho interface lo0 >> /etc/rad.conf\nifconfig lo0 inet6 2001:db8:1::1/128\nifconfig lo0 up\n\n\nifconfig wg0 create\nifconfig wg1 create\n\n\nifconfig vio1 -inet\nifconfig vio1 -inet6\nifconfig vio1 inet 172.22.0.1/24 \necho interface vio1 >> /etc/rad.conf\nifconfig vio1 inet6 2001:db8:4::1/64\nifconfig vio1 mtu 1560\nifconfig vio1 description \"dut -> core\"\nifconfig vio1 up\n\nifconfig wg0 -inet\nifconfig wg0 -inet6\nifconfig wg0 inet 10.1.0.1/30 \necho interface wg0 >> /etc/rad.conf\nifconfig wg0 inet6 2001:db8:3::1/64\nifconfig wg0 mtu 1500\nifconfig wg0 description \"dut -> r2 [WireGuard tunnel]\"\nifconfig wg0 up\n# OpenBSD Wireguard does not automatically create IPv6 LLA make it ourselves\nifconfig wg0 inet6 fe80::81b/64\n\nifconfig wg1 -inet\nifconfig wg1 -inet6\nifconfig wg1 inet 10.1.0.5/30 \necho interface wg1 >> /etc/rad.conf\nifconfig wg1 inet6 2001:db8:3:1::1/64\nifconfig wg1 mtu 1500\nifconfig wg1 description \"dut -> r3 [WireGuard tunnel]\"\nifconfig wg1 up\n# OpenBSD Wireguard does not automatically create IPv6 LLA make it ourselves\nifconfig wg1 inet6 fe80::f74/64\n\n\n#\n# (re-)start RA daemon\n#\npkill -q rad || true\nrad\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/openbsd.yml for dut TASK [template] **************************************************************** changed: [dut] TASK [Execute /tmp/config.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) 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#!/bin/bash\n#\nset -e\nset -x\n#\necho Flushing routes to vio1\nroute -n flush -iface vio1 -priority static\n#\n#\n#\necho Adding direct static routes\nroute add 172.22.0.0/16 172.22.0.4\nroute add 2001:db8:4::/48 2001:db8:4::4\n" } TASK [Deploy routing configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/openbsd.yml for dut TASK [template] **************************************************************** changed: [dut] TASK [Execute /tmp/config.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#!/bin/sh\ncat <<'OSPFD_CONF' >/etc/ospfd.conf\nrouter-id 10.0.0.1\nspf-delay msec 100\nspf-holdtime msec 200\n\narea 0.0.0.0 {\n interface lo0:10.0.0.1 {\n }\n interface wg0 {\n type p2p\n hello-interval 1\n router-dead-time 3\n }\n interface wg1 {\n type p2p\n hello-interval 1\n router-dead-time 3\n }\n}\n \nOSPFD_CONF\n\nchmod 640 /etc/ospfd.conf\nrcctl enable ospfd\nrcctl restart ospfd\n\ncat <<'OSPFD_CONF' >/etc/ospf6d.conf\nrouter-id 10.0.0.1\nspf-delay 1\nspf-holdtime 1\n\narea 0.0.0.0 {\n interface lo0 {\n }\n interface wg0 {\n type p2p\n hello-interval 1\n router-dead-time 3\n }\n interface wg1 {\n type p2p\n hello-interval 1\n router-dead-time 3\n }\n}\n \nOSPFD_CONF\n\nchmod 640 /etc/ospf6d.conf\nrcctl enable ospf6d\nrcctl restart ospf6d\n\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/openbsd.yml for dut TASK [template] **************************************************************** changed: [dut] TASK [Execute /tmp/config.sh to deploy ospf config from /work/netlab_cicd/node_files/dut/ospf] *** 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.wireguard) 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.wireguard 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/openbsd.yml for dut TASK [template] **************************************************************** changed: [dut] TASK [Execute /tmp/config.sh to deploy tunnel.wireguard config from /work/netlab_cicd/node_files/dut/tunnel.wireguard] *** changed: [dut] PLAY RECAP ********************************************************************* dut : ok=33 changed=8 unreachable=0 failed=0 skipped=8 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ r2 Script: initial,routing,ospf,tunnel.wireguard r3 Script: initial,routing,ospf,tunnel.wireguard core Script: initial Test dual-stack WireGuard tunnels. The tested device has a WireGuard tunnel carrying both IPv4 and IPv6 and runs OSPFv2 and OSPFv3 over it. The probe should receive the routes advertised from the tested device and be able to ping its loopback over both address families.