[INFO] Creating configuration snippets [CREATED] r1: initial,ospf,ospf.areas [CREATED] r2: normalize,initial,ospf,ospf.areas [CREATED] r3: initial,ospf_cfg,cfglet/o_areas,rid.j2 [CREATED] r4: normalize,initial,ospf_cfg,cfglet/o_areas/eos.j2,rid [CREATED] h1: initial,cfglet/ipaddr/h1.j2 [INFO] Executing initial configuration for node h1 (namespace clab- ml-17-h1) [INFO] Starting Ansible playbook to deploy the rest of the configurations /home/pipi/.local/lib/python3.10/site-packages/paramiko/pkey.py:100: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0. "cipher": algorithms.TripleDES, /home/pipi/.local/lib/python3.10/site-packages/paramiko/transport.py:259: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0. "class": algorithms.TripleDES, [WARNING]: Found variable using reserved name: hosts PLAY [Deploy initial device configuration] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [r1] ok: [r3] ok: [h1] ok: [r2] ok: [r4] TASK [Generic readiness tests] ************************************************* skipping: [r1] skipping: [r3] skipping: [h1] included: /home/pipi/net101/tools/netsim/ansible/tasks/readiness-check/ssh.yml for r2, r4 => (item=ssh) TASK [Check if 'sshpass' is installed] ***************************************** ok: [r2 -> localhost] TASK [Check for 'timeout' command] ********************************************* ok: [r2 -> localhost] ok: [r4 -> localhost] TASK [Execute local ssh command to check ssh readiness] ************************ FAILED - RETRYING: [r4 -> localhost]: Execute local ssh command to check ssh readiness (20 retries left). ok: [r2 -> localhost] ok: [r4 -> localhost] TASK [Confirm r2 SSH server works] ********************************************* ok: [r2] => { "msg": "Node r2 is ready." } ok: [r4] => { "msg": "Node r4 is ready." } TASK [Find device readiness script] ******************************************** ok: [r1] ok: [r3] ok: [h1] ok: [r2] ok: [r4] TASK [Wait for device to become ready] ***************************************** skipping: [r1] skipping: [r2] skipping: [r3] skipping: [r4] skipping: [h1] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for r1, r2, r3, r4, h1 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [r1] ok: [r3] ok: [h1] ok: [r2] ok: [r4] TASK [Find configuration template for normalize] ******************************* ok: [r1] ok: [r3] ok: [h1] ok: [r2] ok: [r4] TASK [fail] ******************************************************************** skipping: [r1] skipping: [r2] skipping: [r3] skipping: [r4] skipping: [h1] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [r1] ok: [r3] ok: [h1] ok: [r2] ok: [r4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [r1] skipping: [r2] skipping: [r3] skipping: [r4] skipping: [h1] TASK [Deploy normalize configuration] ****************************************** skipping: [r1] skipping: [r3] skipping: [h1] included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for r2, r4 TASK [eos_config: deploying normalize from /work/netlab_cicd/node_files/r2/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 changed: [r2] changed: [r4] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for r1, r2, r3, r4, h1 TASK [Figure out whether to deploy the module initial on current device] ******* ok: [r1] ok: [r3] ok: [h1] ok: [r2] ok: [r4] TASK [Find configuration template for initial] ********************************* ok: [r1] skipping: [h1] ok: [r3] ok: [r2] ok: [r4] TASK [fail] ******************************************************************** skipping: [r1] skipping: [r2] skipping: [r3] skipping: [r4] skipping: [h1] TASK [Find configuration deployment deploy_script for initial] ***************** skipping: [h1] ok: [r1] ok: [r3] ok: [r2] ok: [r4] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [r1] skipping: [r2] skipping: [r3] skipping: [h1] skipping: [r4] TASK [Deploy initial configuration] ******************************************** skipping: [h1] included: /home/pipi/net101/tools/netsim/ansible/tasks/frr/initial-clab.yml for r1, r3 included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for r2, r4 TASK [Attempt to load VRF kernel module] *************************************** changed: [r1 -> localhost] TASK [Disable FRR management VRF when modprobe fails] ************************** skipping: [r1] skipping: [r3] TASK [include_tasks] *********************************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/frr/deploy-config.yml for r1, r3 TASK [template] **************************************************************** changed: [r1] changed: [r3] TASK [set_fact] **************************************************************** ok: [r1] ok: [r3] TASK [run /tmp/config.sh to deploy initial config from /work/netlab_cicd/node_files/r1/initial] *** changed: [r1] changed: [r3] TASK [run vtysh to import initial config from /work/netlab_cicd/node_files/r1/initial] *** skipping: [r1] skipping: [r3] TASK [eos_config: deploying initial from /work/netlab_cicd/node_files/r2/initial] *** changed: [r4] changed: [r2] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [r1] ok: [r2] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for r1, r2 => (item=ospf) TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [r1] ok: [r2] TASK [Find configuration template for ospf] ************************************ ok: [r1] ok: [r2] TASK [fail] ******************************************************************** skipping: [r1] skipping: [r2] TASK [Find configuration deployment deploy_script for ospf] ******************** ok: [r1] ok: [r2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [r1] skipping: [r2] TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/frr.yml for r1 included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for r2 TASK [template] **************************************************************** changed: [r1] TASK [set_fact] **************************************************************** ok: [r1] TASK [run /tmp/config.sh to deploy ospf config from /work/netlab_cicd/node_files/r1/ospf] *** skipping: [r1] TASK [run vtysh to import ospf config from /work/netlab_cicd/node_files/r1/ospf] *** changed: [r1] TASK [eos_config: deploying ospf from /work/netlab_cicd/node_files/r2/ospf] **** changed: [r2] PLAY [Deploy custom deployment templates] ************************************** TASK [Run custom configuration deployment scripts] ***************************** skipping: [r1] => (item=ospf_cfg) skipping: [r1] => (item=cfglet/ipaddr/h1.j2) skipping: [r2] => (item=ospf_cfg) skipping: [r2] => (item=cfglet/ipaddr/h1.j2) skipping: [r1] => (item=cfglet/o_areas/eos.j2) skipping: [r3] => (item=cfglet/ipaddr/h1.j2) skipping: [r1] => (item=cfglet/o_areas) skipping: [r2] => (item=cfglet/o_areas/eos.j2) skipping: [r3] => (item=ospf.areas) skipping: [r1] => (item=rid) skipping: [r2] => (item=cfglet/o_areas) skipping: [r1] => (item=rid.j2) skipping: [r3] => (item=cfglet/o_areas/eos.j2) skipping: [r4] => (item=cfglet/ipaddr/h1.j2) skipping: [r2] => (item=rid) skipping: [r4] => (item=ospf.areas) skipping: [r2] => (item=rid.j2) skipping: [r3] => (item=rid) skipping: [h1] => (item=ospf_cfg) skipping: [r4] => (item=cfglet/o_areas) skipping: [h1] => (item=ospf.areas) skipping: [r4] => (item=rid.j2) skipping: [h1] => (item=cfglet/o_areas/eos.j2) skipping: [h1] => (item=cfglet/o_areas) skipping: [h1] => (item=rid) skipping: [h1] => (item=rid.j2) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-custom-config.yml for r1, r2 => (item=ospf.areas) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-custom-config.yml for r3, r4 => (item=ospf_cfg) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-custom-config.yml for r3 => (item=cfglet/o_areas) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-custom-config.yml for r3 => (item=rid.j2) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-custom-config.yml for r4 => (item=cfglet/o_areas/eos.j2) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-custom-config.yml for r4 => (item=rid) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-custom-config.yml for h1 => (item=cfglet/ipaddr/h1.j2) TASK [Find configuration template] ********************************************* ok: [r1] ok: [r2] TASK [fail] ******************************************************************** skipping: [r1] skipping: [r2] TASK [Check is the configuration template is a file] *************************** ok: [r1 -> localhost] ok: [r2 -> localhost] TASK [fail] ******************************************************************** skipping: [r1] skipping: [r2] TASK [Process template /work/netlab_cicd/node_files/r1/ospf.areas for r1] ****** skipping: [r1] skipping: [r2] TASK [Find custom configuration deployment script] ***************************** ok: [r1] ok: [r2] TASK [Run the configuration deployment script] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/frr.yml for r1 included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for r2 TASK [template] **************************************************************** changed: [r1] TASK [set_fact] **************************************************************** ok: [r1] TASK [run /tmp/config.sh to deploy ospf.areas config from /work/netlab_cicd/node_files/r1/ospf.areas] *** skipping: [r1] TASK [run vtysh to import ospf.areas config from /work/netlab_cicd/node_files/r1/ospf.areas] *** changed: [r1] TASK [eos_config: deploying ospf.areas from /work/netlab_cicd/node_files/r2/ospf.areas] *** changed: [r2] TASK [Find configuration template] ********************************************* ok: [r3] ok: [r4] TASK [fail] ******************************************************************** skipping: [r3] skipping: [r4] TASK [Check is the configuration template is a file] *************************** ok: [r4 -> localhost] ok: [r3 -> localhost] TASK [fail] ******************************************************************** skipping: [r3] skipping: [r4] TASK [Process template /work/netlab_cicd/node_files/r3/ospf_cfg for r3] ******** skipping: [r3] skipping: [r4] TASK [Find custom configuration deployment script] ***************************** ok: [r3] ok: [r4] TASK [Run the configuration deployment script] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/frr.yml for r3 included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for r4 TASK [template] **************************************************************** changed: [r3] TASK [set_fact] **************************************************************** ok: [r3] TASK [run /tmp/config.sh to deploy ospf_cfg config from /work/netlab_cicd/node_files/r3/ospf_cfg] *** skipping: [r3] TASK [run vtysh to import ospf_cfg config from /work/netlab_cicd/node_files/r3/ospf_cfg] *** changed: [r3] TASK [eos_config: deploying ospf_cfg from /work/netlab_cicd/node_files/r4/ospf_cfg] *** changed: [r4] TASK [Find configuration template] ********************************************* ok: [r3] TASK [fail] ******************************************************************** skipping: [r3] TASK [Check is the configuration template is a file] *************************** ok: [r3 -> localhost] TASK [fail] ******************************************************************** skipping: [r3] TASK [Process template /work/netlab_cicd/node_files/r3/cfglet/o_areas for r3] *** skipping: [r3] TASK [Find custom configuration deployment script] ***************************** ok: [r3] TASK [Run the configuration deployment script] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/frr.yml for r3 TASK [template] **************************************************************** changed: [r3] TASK [set_fact] **************************************************************** ok: [r3] TASK [run /tmp/config.sh to deploy o_areas config from /work/netlab_cicd/node_files/r3/cfglet/o_areas] *** skipping: [r3] TASK [run vtysh to import o_areas config from /work/netlab_cicd/node_files/r3/cfglet/o_areas] *** changed: [r3] TASK [Find configuration template] ********************************************* ok: [r3] TASK [fail] ******************************************************************** skipping: [r3] TASK [Check is the configuration template is a file] *************************** ok: [r3 -> localhost] TASK [fail] ******************************************************************** skipping: [r3] TASK [Process template /work/netlab_cicd/node_files/r3/rid.j2 for r3] ********** skipping: [r3] TASK [Find custom configuration deployment script] ***************************** ok: [r3] TASK [Run the configuration deployment script] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/frr.yml for r3 TASK [template] **************************************************************** changed: [r3] TASK [set_fact] **************************************************************** ok: [r3] TASK [run /tmp/config.sh to deploy rid.j2 config from /work/netlab_cicd/node_files/r3/rid.j2] *** skipping: [r3] TASK [run vtysh to import rid.j2 config from /work/netlab_cicd/node_files/r3/rid.j2] *** changed: [r3] TASK [Find configuration template] ********************************************* ok: [r4] TASK [fail] ******************************************************************** skipping: [r4] TASK [Check is the configuration template is a file] *************************** ok: [r4 -> localhost] TASK [fail] ******************************************************************** skipping: [r4] TASK [Process template /work/netlab_cicd/node_files/r4/cfglet/o_areas/eos.j2 for r4] *** skipping: [r4] TASK [Find custom configuration deployment script] ***************************** ok: [r4] TASK [Run the configuration deployment script] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for r4 TASK [eos_config: deploying eos.j2 from /work/netlab_cicd/node_files/r4/cfglet/o_areas/eos.j2] *** changed: [r4] TASK [Find configuration template] ********************************************* ok: [r4] TASK [fail] ******************************************************************** skipping: [r4] TASK [Check is the configuration template is a file] *************************** ok: [r4 -> localhost] TASK [fail] ******************************************************************** skipping: [r4] TASK [Process template /work/netlab_cicd/node_files/r4/rid for r4] ************* skipping: [r4] TASK [Find custom configuration deployment script] ***************************** ok: [r4] TASK [Run the configuration deployment script] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/eos.yml for r4 TASK [eos_config: deploying rid from /work/netlab_cicd/node_files/r4/rid] ****** changed: [r4] TASK [Find configuration template] ********************************************* ok: [h1] TASK [fail] ******************************************************************** skipping: [h1] TASK [Check is the configuration template is a file] *************************** ok: [h1 -> localhost] TASK [fail] ******************************************************************** skipping: [h1] TASK [Process template /work/netlab_cicd/node_files/h1/cfglet/ipaddr/h1.j2 for h1] *** skipping: [h1] TASK [Find custom configuration deployment script] ***************************** ok: [h1] TASK [Run the configuration deployment script] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/linux-clab.yml for h1 TASK [Define script filename and determine whether to execute in netns] ******** ok: [h1] TASK [Create a temporary file for the rendered script] ************************* changed: [h1 -> localhost] TASK [Create container setup script from /work/netlab_cicd/node_files/h1/cfglet/ipaddr/h1.j2] *** changed: [h1 -> localhost] TASK [Copy script into running container at /tmp/config-h1_h1.j2.sh] *********** changed: [h1 -> localhost] TASK [Execute /tmp/config-h1_h1.j2.sh to deploy h1.j2 config based on /work/netlab_cicd/node_files/h1/cfglet/ipaddr/h1.j2] *** changed: [h1] TASK [Container configuration for h1.j2 based on /work/netlab_cicd/node_files/h1/cfglet/ipaddr/h1.j2 executed in netns] *** skipping: [h1] TASK [Remove temporary file /tmp/h1_h1.j2-nmck_ae9.sh] ************************* changed: [h1 -> localhost] PLAY RECAP ********************************************************************* h1 : ok=19 changed=5 unreachable=0 failed=0 skipped=14 rescued=0 ignored=0 r1 : ok=33 changed=7 unreachable=0 failed=0 skipped=16 rescued=0 ignored=0 r2 : ok=32 changed=4 unreachable=0 failed=0 skipped=10 rescued=0 ignored=0 r3 : ok=39 changed=8 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0 r4 : ok=36 changed=5 unreachable=0 failed=0 skipped=14 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ h1 OK: 1 This topology tests various custom configuration mechanisms for non-daemon devices