Creating Device configuration snippets [CREATED] dut: initial,routing,ospf,bgp,vrf,bgp.policy [CREATED] probe: initial,routing,ospf,bgp [CREATED] x1: initial,routing,bgp [CREATED] x2: initial,routing,bgp [CREATED] v1: initial,routing,bgp [CREATED] v2: initial,routing,bgp,bgp.policy [CREATED] vp: initial,routing,bgp Checking Are lab devices ready to be configured? [INFO] Checking SSH server(s) on dut [SSH] SSH server on node dut (device cisco8000v) is ready after 165.3 seconds Config Deploying device configurations [INFO] Executing initial configuration for node probe [INFO] Executing initial configuration for node x1 [INFO] Executing initial configuration for node x2 [INFO] Executing initial configuration for node v1 [INFO] Executing initial configuration for node vp [INFO] Executing initial configuration for node v2 [INFO] Executing routing configuration for node probe [INFO] Executing routing configuration for node vp [INFO] Executing routing configuration for node x1 [INFO] Executing routing configuration for node v1 [INFO] Executing routing configuration for node v2 [INFO] Executing routing configuration for node x2 [INFO] Executing ospf configuration for node probe [INFO] Executing bgp configuration for node x1 [INFO] Executing bgp configuration for node vp [INFO] Executing bgp configuration for node v1 [INFO] Executing bgp configuration for node v2 [INFO] Executing bgp configuration for node x2 [INFO] Executing bgp.policy configuration for node v2 [INFO] Executing bgp configuration for node probe [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 [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut 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 [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=========================================\nhostname dut\n!\ndomain lookup disable\n!\nlldp\n no management enable\n!\ndomain ipv4 host probe 10.0.0.2\ndomain ipv4 host x1 172.42.42.1\ndomain ipv4 host x2 172.42.43.1\ndomain ipv4 host v1 172.42.29.1\ndomain ipv4 host v2 172.42.29.1\ndomain ipv4 host vp 10.0.0.7\ndomain ipv6 host probe 2001:db8:1:2::1\ndomain ipv6 host x1 2001:db8:cafe:42::1\ndomain ipv6 host x2 2001:db8:cafe:43::1\ndomain ipv6 host v1 2001:db8:1:5::1\ndomain ipv6 host v2 2001:db8:1:6::1\ndomain ipv6 host vp 2001:db8:1:7::1\n!\ninterface Loopback0\n no shutdown\n ipv4 address 10.0.0.1 255.255.255.255\n ipv6 address 2001:db8:1:1::1/64\n!\ninterface FourHundredGigE0/0/0/0\n no shutdown\n description dut -> x1 [external]\n ipv4 address 10.1.0.1 255.255.255.252\n ipv6 address 2001:db8:3::1/64\n ipv6 nd ra-interval 5\n!\ninterface FourHundredGigE0/0/0/1\n no shutdown\n description dut -> x2 [external]\n ipv4 address 10.1.0.5 255.255.255.252\n ipv6 address 2001:db8:3:1::1/64\n ipv6 nd ra-interval 5\n!\ninterface FourHundredGigE0/0/0/2\n no shutdown\n description dut -> probe\n ipv4 address 10.1.0.9 255.255.255.252\n ipv6 address 2001:db8:3:2::1/64\n ipv6 nd ra-interval 5\n!\ninterface FourHundredGigE0/0/0/3\n no shutdown\n description dut -> v1 [external]\n ipv4 address 10.1.0.13 255.255.255.252\n ipv6 address 2001:db8:3:3::1/64\n ipv6 nd ra-interval 5\n!\ninterface FourHundredGigE0/0/0/4\n no shutdown\n description dut -> v2 [external]\n ipv4 address 10.1.0.17 255.255.255.252\n ipv6 address 2001:db8:3:4::1/64\n ipv6 nd ra-interval 5\n!\ninterface FourHundredGigE0/0/0/5\n no shutdown\n description dut -> vp [external]\n ipv4 address 10.1.0.21 255.255.255.252\n ipv6 address 2001:db8:3:5::1/64\n ipv6 nd ra-interval 5\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/iosxr.yml for dut TASK [iosxr_config: deploying initial from /work/netlab_cicd/node_files/dut/initial] *** [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: [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=bgp) 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!\nroute-policy lp_17\n set local-preference 17\nend-policy\n!\nroute-policy lp_42\n set local-preference 42\nend-policy\n" } TASK [Deploy routing configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/iosxr.yml for dut TASK [iosxr_config: deploying routing 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!\nrouter ospf 1\n!\n! These throttle timers are probably too aggressive for a production network but\n! make labs run better ;)\n!\n timers throttle spf 10 20 100\n timers throttle lsa all 10 20 100\n router-id 10.0.0.1\n\n loopback stub-network enable\n area 0.0.0.0\n interface Loopback0\n interface FourHundredGigE0/0/0/2\n network point-to-point\n\nrouter ospfv3 1\n!\n! These throttle timers are probably too aggressive for a production network but\n! make labs run better ;)\n!\n timers throttle spf 10 20 100\n timers throttle lsa all 10 20 100\n router-id 10.0.0.1\n\n area 0.0.0.0\n interface Loopback0\n interface FourHundredGigE0/0/0/2\n network point-to-point\n\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/iosxr.yml for dut TASK [iosxr_config: deploying ospf from /work/netlab_cicd/node_files/dut/ospf] *** changed: [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!\n!\nrouter bgp 65000\n bgp unsafe-ebgp-policy\n bgp scan-time 5\n bgp update-delay 5\n bgp router-id 10.0.0.1\n\n!\n address-family ipv4 unicast\n bgp scan-time 5\n!\n network 10.0.0.1/32\n!\n!\n address-family ipv6 unicast\n bgp scan-time 5\n!\n network 2001:db8:1:1::/64\n!\n!\n neighbor 10.0.0.2\n remote-as 65000\n description probe\n update-source Loopback0\n address-family ipv4 unicast\n next-hop-self\n\n!\n neighbor 10.1.0.2\n remote-as 65100\n description x1\n address-family ipv4 unicast\n send-community-ebgp\n\n!\n neighbor 10.1.0.6\n remote-as 65101\n description x2\n address-family ipv4 unicast\n send-community-ebgp\n\n!\n neighbor 2001:db8:1:2::1\n remote-as 65000\n description probe\n update-source Loopback0\n address-family ipv6 unicast\n next-hop-self\n\n!\n neighbor 2001:db8:3::2\n remote-as 65100\n description x1\n address-family ipv6 unicast\n send-community-ebgp\n\n!\n neighbor 2001:db8:3:1::2\n remote-as 65101\n description x2\n address-family ipv6 unicast\n send-community-ebgp\n\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/iosxr.yml for dut TASK [iosxr_config: deploying bgp from /work/netlab_cicd/node_files/dut/bgp] *** 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=========================================\nvrf customer\n rd 65000:1\n!\n address-family ipv4 unicast\n import route-target 65000:1\n export route-target 65000:1\n!\n address-family ipv6 unicast\n import route-target 65000:1\n export route-target 65000:1\n!\ninterface FourHundredGigE0/0/0/3\n vrf customer\n!\ninterface FourHundredGigE0/0/0/4\n vrf customer\n!\ninterface FourHundredGigE0/0/0/5\n vrf customer\n!\n!\nrouter bgp 65000\n bgp unsafe-ebgp-policy\n bgp scan-time 5\n bgp update-delay 5\n bgp router-id 10.0.0.1\n\n address-family vpnv4 unicast\n bgp import-delay 0 0\n bgp scan-time 5\n address-family vpnv6 unicast\n bgp import-delay 0 0\n bgp scan-time 5\n vrf customer\n bgp unsafe-ebgp-policy\n!\n address-family ipv4 unicast\n redistribute connected\n\n!\n address-family ipv6 unicast\n redistribute connected\n\n !\n neighbor 10.1.0.14\n remote-as 65200\n description v1\n address-family ipv4 unicast\n send-community-ebgp\n\n !\n neighbor 2001:db8:3:3::2\n remote-as 65200\n description v1\n session-open-mode both\n address-family ipv6 unicast\n send-community-ebgp\n\n !\n neighbor 10.1.0.18\n remote-as 65201\n description v2\n address-family ipv4 unicast\n send-community-ebgp\n\n !\n neighbor 2001:db8:3:4::2\n remote-as 65201\n description v2\n session-open-mode both\n address-family ipv6 unicast\n send-community-ebgp\n\n !\n neighbor 10.1.0.22\n remote-as 65202\n description vp\n address-family ipv4 unicast\n send-community-ebgp\n\n !\n neighbor 2001:db8:3:5::2\n remote-as 65202\n description vp\n session-open-mode both\n address-family ipv6 unicast\n send-community-ebgp\n\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/iosxr.yml for dut TASK [iosxr_config: deploying vrf 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=bgp.policy) 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.policy 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/iosxr.yml for dut TASK [iosxr_config: deploying bgp.policy from /work/netlab_cicd/node_files/dut/bgp.policy] *** changed: [dut] PLAY RECAP ********************************************************************* dut : ok=47 changed=6 unreachable=0 failed=0 skipped=11 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ probe Script: initial,routing,ospf,bgp x1 Script: initial,routing,bgp x2 Script: initial,routing,bgp v1 Script: initial,routing,bgp v2 Script: initial,routing,bgp,bgp.policy vp Script: initial,routing,bgp Use this topology to test BGP local preference on IPv4 and IPv6 prefixes. DUT has to set node-wide local preference on prefixes received from X1 and neighbor-specific local preference on prefixes received from X2.