diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/l3_edge_l3_interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/node-type-l3-interfaces.cfg
similarity index 96%
rename from ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/l3_edge_l3_interfaces.cfg
rename to ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/node-type-l3-interfaces.cfg
index 4988ce94ae0..803863dc99c 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/l3_edge_l3_interfaces.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/node-type-l3-interfaces.cfg
@@ -6,7 +6,7 @@ transceiver qsfp default-mode 4x10G
!
service routing protocols model multi-agent
!
-hostname l3_edge_l3_interfaces
+hostname node-type-l3-interfaces
!
spanning-tree mode none
!
@@ -18,6 +18,7 @@ vrf instance MGMT
interface Ethernet1
description peer1_eth1
no shutdown
+ speed forced 10000full
no switchport
ip address 192.168.1.2/31
service-policy type qos input TEST_POLICY
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-edge.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-edge.yml
index 379a0f688a7..43a38a439a8 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-edge.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-edge.yml
@@ -62,6 +62,13 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
+ethernet_interfaces:
+- name: Ethernet1
+ peer_type: l3_interface
+ ip_address: dhcp
+ shutdown: false
+ type: routed
+ dhcp_client_accept_default_route: true
loopback_interfaces:
- name: Loopback0
description: Router_ID
@@ -131,13 +138,6 @@ stun:
ip_address: 10.7.7.7
- name: INET-autovpn-rr2-Ethernet1
ip_address: 10.8.8.8
-ethernet_interfaces:
-- name: Ethernet1
- peer_type: l3_interface
- ip_address: dhcp
- shutdown: false
- type: routed
- dhcp_client_accept_default_route: true
dps_interfaces:
- name: Dps1
description: DPS Interface
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-rr1.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-rr1.yml
index 697488a8261..797e7164442 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-rr1.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-rr1.yml
@@ -79,6 +79,13 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
+ethernet_interfaces:
+- name: Ethernet1
+ peer_type: l3_interface
+ ip_address: dhcp
+ shutdown: false
+ type: routed
+ dhcp_client_accept_default_route: true
loopback_interfaces:
- name: Loopback0
description: Router_ID
@@ -134,13 +141,6 @@ stun:
server:
local_interfaces:
- Ethernet1
-ethernet_interfaces:
-- name: Ethernet1
- peer_type: l3_interface
- ip_address: dhcp
- shutdown: false
- type: routed
- dhcp_client_accept_default_route: true
dps_interfaces:
- name: Dps1
description: DPS Interface
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-rr2.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-rr2.yml
index 3a76de8ae87..646328bb0c2 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-rr2.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/autovpn-rr2.yml
@@ -79,11 +79,20 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
+ethernet_interfaces:
+- name: Ethernet1
+ peer_type: l3_interface
+ ip_address: 10.8.8.8/31
+ shutdown: false
+ type: routed
loopback_interfaces:
- name: Loopback0
description: Router_ID
shutdown: false
ip_address: 192.168.31.2/32
+static_routes:
+- destination_address_prefix: 0.0.0.0/0
+ gateway: 10.8.8.9
ip_security:
ike_policies:
- name: AUTOVPN-IKE
@@ -134,15 +143,6 @@ stun:
server:
local_interfaces:
- Ethernet1
-ethernet_interfaces:
-- name: Ethernet1
- peer_type: l3_interface
- ip_address: 10.8.8.8/31
- shutdown: false
- type: routed
-static_routes:
-- destination_address_prefix: 0.0.0.0/0
- gateway: 10.8.8.9
dps_interfaces:
- name: Dps1
description: DPS Interface
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-edge.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-edge.yml
index 3b3decc3bb5..87d15969a98 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-edge.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-edge.yml
@@ -69,6 +69,22 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
+ethernet_interfaces:
+- name: Ethernet1
+ peer_type: l3_interface
+ ip_address: dhcp
+ shutdown: false
+ type: routed
+ dhcp_client_accept_default_route: true
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
+- name: Ethernet2
+ peer_type: l3_interface
+ ip_address: 172.15.5.5/31
+ shutdown: false
+ type: routed
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
loopback_interfaces:
- name: Loopback0
description: Router_ID
@@ -178,22 +194,6 @@ stun:
ip_address: 10.7.7.7
- name: INET-cv-pathfinder-pathfinder-Ethernet3
ip_address: 10.9.9.9
-ethernet_interfaces:
-- name: Ethernet1
- peer_type: l3_interface
- ip_address: dhcp
- shutdown: false
- type: routed
- dhcp_client_accept_default_route: true
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
-- name: Ethernet2
- peer_type: l3_interface
- ip_address: 172.15.5.5/31
- shutdown: false
- type: routed
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
dps_interfaces:
- name: Dps1
description: DPS Interface
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder.yml
index f529577fe8b..760db54b905 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder.yml
@@ -78,11 +78,36 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
+ethernet_interfaces:
+- name: Ethernet1
+ peer_type: l3_interface
+ ip_address: 10.7.7.7/31
+ shutdown: false
+ type: routed
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
+- name: Ethernet2
+ peer_type: l3_interface
+ ip_address: 172.16.0.1/31
+ shutdown: false
+ type: routed
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
+- name: Ethernet3
+ peer_type: l3_interface
+ ip_address: 10.9.9.9/31
+ shutdown: false
+ type: routed
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
loopback_interfaces:
- name: Loopback0
description: Router_ID
shutdown: false
ip_address: 192.168.44.1/32
+static_routes:
+- destination_address_prefix: 0.0.0.0/0
+ gateway: 10.7.7.6
flow_tracking:
hardware:
trackers:
@@ -163,31 +188,6 @@ stun:
- Ethernet1
- Ethernet2
- Ethernet3
-ethernet_interfaces:
-- name: Ethernet1
- peer_type: l3_interface
- ip_address: 10.7.7.7/31
- shutdown: false
- type: routed
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
-- name: Ethernet2
- peer_type: l3_interface
- ip_address: 172.16.0.1/31
- shutdown: false
- type: routed
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
-- name: Ethernet3
- peer_type: l3_interface
- ip_address: 10.9.9.9/31
- shutdown: false
- type: routed
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
-static_routes:
-- destination_address_prefix: 0.0.0.0/0
- gateway: 10.7.7.6
dps_interfaces:
- name: Dps1
description: DPS Interface
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder1.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder1.yml
index ce3c0baaf05..06b6b0b9de7 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder1.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder1.yml
@@ -104,6 +104,14 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
+ethernet_interfaces:
+- name: Ethernet1
+ peer_type: l3_interface
+ ip_address: 10.8.8.8/31
+ shutdown: false
+ type: routed
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
loopback_interfaces:
- name: Loopback0
description: Router_ID
@@ -190,14 +198,6 @@ stun:
server:
local_interfaces:
- Ethernet1
-ethernet_interfaces:
-- name: Ethernet1
- peer_type: l3_interface
- ip_address: 10.8.8.8/31
- shutdown: false
- type: routed
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
dps_interfaces:
- name: Dps1
description: DPS Interface
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder2.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder2.yml
index f26e574f422..1eee5cd3489 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder2.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-pathfinder2.yml
@@ -104,6 +104,21 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
+ethernet_interfaces:
+- name: Ethernet1
+ peer_type: l3_interface
+ ip_address: 10.9.9.9/31
+ shutdown: false
+ type: routed
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
+- name: Ethernet2
+ peer_type: l3_interface
+ ip_address: 172.19.9.9/31
+ shutdown: false
+ type: routed
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
loopback_interfaces:
- name: Loopback0
description: Router_ID
@@ -201,21 +216,6 @@ stun:
local_interfaces:
- Ethernet1
- Ethernet2
-ethernet_interfaces:
-- name: Ethernet1
- peer_type: l3_interface
- ip_address: 10.9.9.9/31
- shutdown: false
- type: routed
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
-- name: Ethernet2
- peer_type: l3_interface
- ip_address: 172.19.9.9/31
- shutdown: false
- type: routed
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
dps_interfaces:
- name: Dps1
description: DPS Interface
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-transit.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-transit.yml
index 2dfaa7a835d..28215c556ce 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-transit.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/cv-pathfinder-transit.yml
@@ -69,6 +69,22 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
+ethernet_interfaces:
+- name: Ethernet1
+ peer_type: l3_interface
+ ip_address: dhcp
+ shutdown: false
+ type: routed
+ dhcp_client_accept_default_route: true
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
+- name: Ethernet2
+ peer_type: l3_interface
+ ip_address: 172.16.6.6/31
+ shutdown: false
+ type: routed
+ flow_tracker:
+ hardware: WAN-FLOW-TRACKER
loopback_interfaces:
- name: Loopback0
description: Router_ID
@@ -188,22 +204,6 @@ stun:
ip_address: 10.9.9.9
- name: MPLS-cv-pathfinder-pathfinder-Ethernet2
ip_address: 172.16.0.1
-ethernet_interfaces:
-- name: Ethernet1
- peer_type: l3_interface
- ip_address: dhcp
- shutdown: false
- type: routed
- dhcp_client_accept_default_route: true
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
-- name: Ethernet2
- peer_type: l3_interface
- ip_address: 172.16.6.6/31
- shutdown: false
- type: routed
- flow_tracker:
- hardware: WAN-FLOW-TRACKER
dps_interfaces:
- name: Dps1
description: DPS Interface
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/l3_edge_l3_interfaces.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/node-type-l3-interfaces.yml
similarity index 97%
rename from ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/l3_edge_l3_interfaces.yml
rename to ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/node-type-l3-interfaces.yml
index 9bf5c1114eb..78decbf3d75 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/l3_edge_l3_interfaces.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/node-type-l3-interfaces.yml
@@ -1,4 +1,4 @@
-hostname: l3_edge_l3_interfaces
+hostname: node-type-l3-interfaces
is_deployed: true
router_bgp:
as: '65000'
@@ -39,23 +39,6 @@ management_api_http:
enable_vrfs:
- name: MGMT
enable_https: true
-loopback_interfaces:
-- name: Loopback0
- description: EVPN_Overlay_Peering
- shutdown: false
- ip_address: 1.2.3.1/32
-prefix_lists:
-- name: PL-LOOPBACKS-EVPN-OVERLAY
- sequence_numbers:
- - sequence: 10
- action: permit 1.2.3.4/24 eq 32
-route_maps:
-- name: RM-CONN-2-BGP
- sequence_numbers:
- - sequence: 10
- type: permit
- match:
- - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY
ethernet_interfaces:
- name: Ethernet1
peer_type: l3_interface
@@ -65,6 +48,7 @@ ethernet_interfaces:
shutdown: false
type: routed
description: peer1_eth1
+ speed: forced 10000full
service_profile: TEST-QOS-PROFILE
eos_cli: '! TEST RAW_EOS_CLI
@@ -92,6 +76,23 @@ ethernet_interfaces:
ip_address: 192.168.42.42/24
shutdown: true
type: routed
+loopback_interfaces:
+- name: Loopback0
+ description: EVPN_Overlay_Peering
+ shutdown: false
+ ip_address: 1.2.3.1/32
+prefix_lists:
+- name: PL-LOOPBACKS-EVPN-OVERLAY
+ sequence_numbers:
+ - sequence: 10
+ action: permit 1.2.3.4/24 eq 32
+route_maps:
+- name: RM-CONN-2-BGP
+ sequence_numbers:
+ - sequence: 10
+ type: permit
+ match:
+ - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY
static_routes:
- destination_address_prefix: 0.0.0.0/0
gateway: 192.168.1.3
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/AUTOVPN_TESTS.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/AUTOVPN_TESTS.yml
index 16d6f90582f..55c1eb1bf06 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/AUTOVPN_TESTS.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/AUTOVPN_TESTS.yml
@@ -41,6 +41,12 @@ wan_edge:
nodes:
- name: autovpn-edge
id: 1
+ l3_interfaces:
+ - name: Ethernet1
+ wan_carrier: Comcast
+ wan_circuit_id: 666
+ ip: dhcp
+ set_default_route: true
wan_rr:
defaults:
@@ -48,8 +54,21 @@ wan_rr:
nodes:
- name: autovpn-rr1
id: 1
+ l3_interfaces:
+ - name: Ethernet1
+ wan_carrier: ATT
+ wan_circuit_id: 777
+ ip: dhcp
+ set_default_route: true
- name: autovpn-rr2
id: 2
+ l3_interfaces:
+ - name: Ethernet1
+ wan_carrier: ATT
+ wan_circuit_id: 888
+ ip: 10.8.8.8/31
+ set_default_route: true
+ peer_ip: 10.8.8.9
wan_path_groups:
- name: MPLS
@@ -65,25 +84,3 @@ wan_carriers:
path_group: INET
- name: ATT
path_group: INET
-
-l3_edge:
- l3_interfaces:
- - node: autovpn-edge
- interface: Ethernet1
- wan_carrier: Comcast
- wan_circuit_id: 666
- ip: dhcp
- set_default_route: true
- - node: autovpn-rr1
- interface: Ethernet1
- wan_carrier: ATT
- wan_circuit_id: 777
- ip: dhcp
- set_default_route: true
- - node: autovpn-rr2
- interface: Ethernet1
- wan_carrier: ATT
- wan_circuit_id: 888
- ip: 10.8.8.8/31
- set_default_route: true
- peer_ip: 10.8.8.9
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/CV_PATHFINDER_TESTS.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/CV_PATHFINDER_TESTS.yml
index 0aeca6b4d97..b5e131305ce 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/CV_PATHFINDER_TESTS.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/CV_PATHFINDER_TESTS.yml
@@ -54,6 +54,17 @@ wan_edge:
cv_pathfinder_region: AVD_Land_East
cv_pathfinder_site: Site511
id: 1
+ l3_interfaces:
+ - name: Ethernet1
+ wan_carrier: ATT
+ wan_circuit_id: 666
+ set_default_route: true
+ ip: dhcp
+ - name: Ethernet2
+ wan_carrier: Colt
+ wan_circuit_id: 10555
+ ip: 172.15.5.5/31
+ connected_to_pathfinder: False
wan_transit:
defaults:
@@ -63,6 +74,16 @@ wan_transit:
cv_pathfinder_region: AVD_Land_West
cv_pathfinder_site: Site422
id: 1
+ l3_interfaces:
+ - name: Ethernet1
+ wan_carrier: Comcast
+ wan_circuit_id: 667
+ set_default_route: true
+ ip: dhcp
+ - name: Ethernet2
+ wan_carrier: Colt
+ wan_circuit_id: 10666
+ ip: 172.16.6.6/31
wan_rr:
defaults:
@@ -70,10 +91,39 @@ wan_rr:
nodes:
- name: cv-pathfinder-pathfinder
id: 1
+ l3_interfaces:
+ - name: Ethernet1
+ wan_carrier: Bouygues_Telecom
+ wan_circuit_id: 777
+ set_default_route: true
+ ip: 10.7.7.7/31
+ peer_ip: 10.7.7.6
+ - name: Ethernet2
+ wan_carrier: Colt
+ wan_circuit_id: 10000
+ ip: 172.16.0.1/31
+ - name: Ethernet3
+ wan_carrier: Another-ISP
+ wan_circuit_id: 999
+ ip: 10.9.9.9/31
- name: cv-pathfinder-pathfinder1
id: 2
+ l3_interfaces:
+ - name: Ethernet1
+ wan_carrier: Orange
+ wan_circuit_id: 888
+ ip: 10.8.8.8/31
- name: cv-pathfinder-pathfinder2
id: 3
+ l3_interfaces:
+ - name: Ethernet1
+ wan_carrier: SFR
+ wan_circuit_id: 999
+ ip: 10.9.9.9/31
+ - name: Ethernet2
+ wan_carrier: ATT-MPLS
+ wan_circuit_id: 10999
+ ip: 172.19.9.9/31
wan_path_groups:
- name: MPLS
@@ -102,61 +152,3 @@ wan_carriers:
path_group: MPLS
- name: ATT-MPLS
path_group: MPLS
-
-l3_edge:
- l3_interfaces:
- - node: cv-pathfinder-edge
- interface: Ethernet1
- wan_carrier: ATT
- wan_circuit_id: 666
- set_default_route: true
- ip: dhcp
- - node: cv-pathfinder-edge
- interface: Ethernet2
- wan_carrier: Colt
- wan_circuit_id: 10555
- ip: 172.15.5.5/31
- connected_to_pathfinder: False
- - node: cv-pathfinder-transit
- interface: Ethernet1
- wan_carrier: Comcast
- wan_circuit_id: 667
- set_default_route: true
- ip: dhcp
- - node: cv-pathfinder-transit
- interface: Ethernet2
- wan_carrier: Colt
- wan_circuit_id: 10666
- ip: 172.16.6.6/31
- - node: cv-pathfinder-pathfinder
- interface: Ethernet1
- wan_carrier: Bouygues_Telecom
- wan_circuit_id: 777
- set_default_route: true
- ip: 10.7.7.7/31
- peer_ip: 10.7.7.6
- - node: cv-pathfinder-pathfinder
- interface: Ethernet2
- wan_carrier: Colt
- wan_circuit_id: 10000
- ip: 172.16.0.1/31
- - node: cv-pathfinder-pathfinder
- interface: Ethernet3
- wan_carrier: Another-ISP
- wan_circuit_id: 999
- ip: 10.9.9.9/31
- - node: cv-pathfinder-pathfinder1
- interface: Ethernet1
- wan_carrier: Orange
- wan_circuit_id: 888
- ip: 10.8.8.8/31
- - node: cv-pathfinder-pathfinder2
- interface: Ethernet1
- wan_carrier: SFR
- wan_circuit_id: 999
- ip: 10.9.9.9/31
- - node: cv-pathfinder-pathfinder2
- interface: Ethernet2
- wan_carrier: ATT-MPLS
- wan_circuit_id: 10999
- ip: 172.19.9.9/31
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/l3_edge_l3_interfaces.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/l3_edge_l3_interfaces.yml
deleted file mode 100644
index 1e70cd5d658..00000000000
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/l3_edge_l3_interfaces.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-type: spine
-spine:
- nodes:
- - name: l3_edge_l3_interfaces
- id: 1
- evpn_role: "none"
- loopback_ipv4_pool: 1.2.3.4/24
- bgp_as: 65000
-
-l3_edge:
- l3_interfaces_profiles:
- - profile: profile1
- speed: "forced 10000full"
- qos_profile: TEST-QOS-PROFILE
- structured_config:
- service_policy:
- qos:
- input: TEST_POLICY
- raw_eos_cli: |
- ! TEST RAW_EOS_CLI
- l3_interfaces:
- # Settings set via profile
- - node: l3_edge_l3_interfaces
- interface: Ethernet1
- ip: 192.168.1.2/31
- set_default_route: true
- peer: peer1
- peer_interface: eth1
- peer_ip: 192.168.1.3
- profile: profile1
- # DHCP default route
- - node: l3_edge_l3_interfaces
- peer: peer2
- interface: Ethernet2/2
- ip: dhcp
- set_default_route: true
- # custom descriptipon
- - node: l3_edge_l3_interfaces
- peer: peer3
- interface: Ethernet42
- enabled: false
- description: This is a custom description
- ip: dhcp
- # empty description
- - node: l3_edge_l3_interfaces
- interface: Ethernet43
- enabled: false
- ip: 192.168.42.42/24
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/node-type-l3-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/node-type-l3-interfaces.yml
new file mode 100644
index 00000000000..9019126bd8c
--- /dev/null
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/node-type-l3-interfaces.yml
@@ -0,0 +1,44 @@
+type: spine
+spine:
+ nodes:
+ - name: node-type-l3-interfaces
+ id: 1
+ evpn_role: "none"
+ loopback_ipv4_pool: 1.2.3.4/24
+ bgp_as: 65000
+ l3_interfaces:
+ - # Settings set via profile
+ name: Ethernet1
+ ip: 192.168.1.2/31
+ set_default_route: true
+ peer: peer1
+ peer_interface: eth1
+ peer_ip: 192.168.1.3
+ profile: profile1
+ - # DHCP default route
+ peer: peer2
+ name: Ethernet2/2
+ ip: dhcp
+ set_default_route: true
+ - # custom description
+ peer: peer3
+ name: Ethernet42
+ enabled: false
+ description: This is a custom description
+ ip: dhcp
+ - # empty description
+ name: Ethernet43
+ enabled: false
+ ip: 192.168.42.42/24
+
+
+l3_interface_profiles:
+ - profile: profile1
+ speed: "forced 10000full"
+ qos_profile: TEST-QOS-PROFILE
+ structured_config:
+ service_policy:
+ qos:
+ input: TEST_POLICY
+ raw_eos_cli: |
+ ! TEST RAW_EOS_CLI
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/hosts.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/hosts.yml
index d26f928dcb2..0da42327fa2 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/hosts.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/hosts.yml
@@ -32,6 +32,7 @@ all:
evpn-to-ipvpn-gateway:
vrfs_rd_rt_override:
spanning-tree-mode-rapid-pvst:
+ node-type-l3-interfaces:
OVERRIDE_UPLINK_TYPE:
hosts:
override_uplink_type-d:
@@ -267,7 +268,6 @@ all:
l3_edge_bgp:
l3_edge_ospf:
l3_edge_isis:
- l3_edge_l3_interfaces:
UPLINK_NATIVE_VLAN_TESTS:
hosts:
uplink-native-vlan-grandparent:
diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/wan.py b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/wan.py
index 9243170870e..94270c7df44 100644
--- a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/wan.py
+++ b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/wan.py
@@ -26,7 +26,7 @@ def wan_path_groups(self: EosDesignsFacts) -> list | None:
Return the list of WAN path_groups directly connected to this router, with a list of dictionaries
containing the (interface, ip_address) in the path_group.
"""
- if not self.shared_utils.wan_mode:
+ if self.shared_utils.wan_role != "server":
return None
return self.shared_utils.wan_local_path_groups
diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/l3_edge_l3_interfaces.py b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/l3_edge_l3_interfaces.py
deleted file mode 100644
index a51b14804d2..00000000000
--- a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/l3_edge_l3_interfaces.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (c) 2023-2024 Arista Networks, Inc.
-# Use of this source code is governed by the Apache License 2.0
-# that can be found in the LICENSE file.
-from __future__ import annotations
-
-from functools import cached_property
-from typing import TYPE_CHECKING
-
-from ansible_collections.arista.avd.plugins.plugin_utils.merge import merge
-from ansible_collections.arista.avd.plugins.plugin_utils.utils import get, get_item
-
-if TYPE_CHECKING:
- from .shared_utils import SharedUtils
-
-
-# TODO only handle l3_edge for now need to look at core_interfaces too
-class L3EdgeMixin:
- """
- Mixin Class providing a subset of SharedUtils
- Class should only be used as Mixin to the SharedUtils class
- Using type-hint on self to get proper type-hints on attributes across all Mixins.
- """
-
- def _apply_profile(self: SharedUtils, target_dict: dict) -> dict:
- """
- Apply a profile to a p2p_link or a l3_interface
- """
- if "profile" not in target_dict:
- # Nothing to do
- return target_dict
-
- profiles = get(self.hostvars, "l3_edge.l3_interfaces_profiles", default=[])
- profile = get_item(profiles, "profile", target_dict["profile"], default={})
-
- target_dict = merge(profile, target_dict, list_merge="replace", destructive_merge=False)
-
- target_dict.pop("profile", None)
-
- return target_dict
-
- @cached_property
- def filtered_l3_interfaces(self: SharedUtils) -> list:
- """
- Returns a filtered list of l3_interfaces, which only contains interfaces with our hostname.
- For each interface any referenced profiles are applied.
- """
- if not (l3_interfaces := get(self.hostvars, "l3_edge.l3_interfaces", default=[])):
- return []
-
- l3_interfaces = [self._apply_profile(l3_interface) for l3_interface in l3_interfaces]
-
- # Filter to only include l3_interfaces with our hostname as node
- return [l3_interface for l3_interface in l3_interfaces if self.hostname == get(l3_interface, "node")]
diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/l3_interfaces.py b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/l3_interfaces.py
new file mode 100644
index 00000000000..bcd9061c373
--- /dev/null
+++ b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/l3_interfaces.py
@@ -0,0 +1,57 @@
+# Copyright (c) 2023-2024 Arista Networks, Inc.
+# Use of this source code is governed by the Apache License 2.0
+# that can be found in the LICENSE file.
+from __future__ import annotations
+
+from functools import cached_property
+from typing import TYPE_CHECKING
+
+from ansible_collections.arista.avd.plugins.plugin_utils.merge import merge
+from ansible_collections.arista.avd.plugins.plugin_utils.utils import get, get_item
+
+if TYPE_CHECKING:
+ from .shared_utils import SharedUtils
+
+
+class L3InterfacesMixin:
+ """
+ Mixin Class providing a subset of SharedUtils
+ Class should only be used as Mixin to the SharedUtils class
+ Using type-hint on self to get proper type-hints on attributes across all Mixins.
+ """
+
+ def apply_l3_interfaces_profile(self: SharedUtils, l3_interface: dict) -> dict:
+ """
+ Apply a profile to an l3_interface
+ """
+ if "profile" not in l3_interface:
+ # Nothing to do
+ return l3_interface
+
+ profile = get_item(self.l3_interface_profiles, "profile", l3_interface["profile"], default={})
+ merged_dict: dict = merge(profile, l3_interface, list_merge="replace", destructive_merge=False)
+ merged_dict.pop("profile", None)
+ return merged_dict
+
+ @cached_property
+ def l3_interface_profiles(self: SharedUtils) -> list:
+ return get(self.hostvars, "l3_interface_profiles", default=[])
+
+ # TODO: Add sflow knob under fabric_sflow to cover l3_interfaces defined under the node_types.
+ # @cached_property
+ # def _l3_interfaces_sflow(self) -> bool | None:
+ # return get(self._hostvars, f"fabric_sflow.{self.data_model}")
+
+ @cached_property
+ def l3_interfaces(self: SharedUtils) -> list:
+ """
+ Returns the list of l3_interfaces, where any referenced profiles are applied.
+ """
+ if not (l3_interfaces := get(self.switch_data_combined, "l3_interfaces")):
+ return []
+
+ # Apply l3_interfaces._profile if set. Silently ignoring missing profile.
+ if self.l3_interface_profiles:
+ l3_interfaces = [self.apply_l3_interfaces_profile(l3_interface) for l3_interface in l3_interfaces]
+
+ return l3_interfaces
diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/shared_utils.py b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/shared_utils.py
index 9c01bb90ed1..acac51a2974 100644
--- a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/shared_utils.py
+++ b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/shared_utils.py
@@ -7,7 +7,7 @@
from .inband_management import InbandManagementMixin
from .interface_descriptions import InterfaceDescriptionsMixin
from .ip_addressing import IpAddressingMixin
-from .l3_edge_l3_interfaces import L3EdgeMixin
+from .l3_interfaces import L3InterfacesMixin
from .link_tracking_groups import LinkTrackingGroupsMixin
from .mgmt import MgmtMixin
from .misc import MiscMixin
@@ -31,7 +31,7 @@ class SharedUtils(
InterfaceDescriptionsMixin,
IpAddressingMixin,
LinkTrackingGroupsMixin,
- L3EdgeMixin,
+ L3InterfacesMixin,
CvTopology,
MgmtMixin,
MlagMixin,
diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/wan.py b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/wan.py
index 70bd2676d7e..5b11eed8c29 100644
--- a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/wan.py
+++ b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_shared_utils/wan.py
@@ -21,7 +21,7 @@ class WanMixin:
"""
@cached_property
- def wan_mode(self: SharedUtils) -> str | None:
+ def wan_mode(self: SharedUtils) -> str:
return get(self.hostvars, "wan_mode", default="cv-pathfinder")
@cached_property
@@ -60,11 +60,11 @@ def wan_interfaces(self: SharedUtils) -> list:
This may need to be made wider.
This also may require a different format for the dictionaries inside the list.
"""
- if self.wan_mode is None:
+ if self.wan_role is None:
return []
wan_interfaces = []
- for interface in self.filtered_l3_interfaces:
+ for interface in self.l3_interfaces:
if get(interface, "wan_carrier") is not None:
wan_interfaces.append(interface)
@@ -84,44 +84,27 @@ def wan_local_carriers(self: SharedUtils) -> list:
local_carriers_dict = {}
global_carriers = get(self.hostvars, "wan_carriers", required=True)
for interface in self.wan_interfaces:
- iface_carrier = interface.get("wan_carrier")
- carrier = get_item(
- global_carriers,
- "name",
- iface_carrier,
- required=True,
- custom_error_msg=f"WAN carrier {iface_carrier} is not in the available carriers defined in `wan_carriers`",
- )
-
- local_carriers_dict.setdefault(carrier["name"], carrier | {"interfaces": []})["interfaces"].append(
- {"name": get(interface, "interface", required=True), "ip_address": get(interface, "ip", required=True)}
+ interface_carrier = interface["wan_carrier"]
+ if interface_carrier not in local_carriers_dict:
+ local_carriers_dict[interface_carrier] = get_item(
+ global_carriers,
+ "name",
+ interface["wan_carrier"],
+ required=True,
+ custom_error_msg=f"WAN carrier {interface['wan_carrier']} is not in the available carriers defined in `wan_carriers`",
+ ).copy()
+ local_carriers_dict[interface_carrier]["interfaces"] = []
+
+ local_carriers_dict[interface_carrier]["interfaces"].append(
+ {
+ "name": get(interface, "name", required=True),
+ "ip_address": get(interface, "ip", required=True),
+ "connected_to_pathfinder": get(interface, "connected_to_pathfinder", default=True),
+ }
)
return list(local_carriers_dict.values())
- def get_carrier_path_group(self: SharedUtils, carrier: str) -> dict:
- """
- Returns the path_group dict from `wan_path_groups` associated to a carrier name as defined in `wan_carriers`.
- """
- global_carriers = get(self.hostvars, "wan_carriers", required=True)
- global_path_groups = get(self.hostvars, "wan_path_groups", required=True)
-
- path_group_name = get_item(
- global_carriers,
- "name",
- carrier,
- required=True,
- custom_error_msg=f"WAN carrier {carrier} is not in the available carriers defined in `wan_carriers`",
- )["path_group"]
-
- return get_item(
- global_path_groups,
- "name",
- path_group_name,
- required=True,
- custom_error_msg=f"WAN path_group {path_group_name} defined for a WAN carrier is not in the available path_groups defined in `wan_path_groups`",
- )
-
@cached_property
def wan_local_path_groups(self: SharedUtils) -> list:
"""
@@ -131,12 +114,25 @@ def wan_local_path_groups(self: SharedUtils) -> list:
- name: ...
ip: ...
"""
- if self.wan_mode is None:
+ if self.wan_role is None:
return []
local_path_groups_dict = {}
+ global_path_groups = get(self.hostvars, "wan_path_groups", required=True)
for carrier in self.wan_local_carriers:
- path_group = self.get_carrier_path_group(carrier["name"])
- local_path_groups_dict.setdefault(path_group["name"], path_group | {"interfaces": []})["interfaces"].extend(carrier.get("interfaces", []))
+ path_group_name = get(carrier, "path_group", required=True)
+ if path_group_name not in local_path_groups_dict:
+ local_path_groups_dict[path_group_name] = get_item(
+ global_path_groups,
+ "name",
+ path_group_name,
+ required=True,
+ custom_error_msg=(
+ f"WAN path_group {path_group_name} defined for a WAN carrier is not in the available path_groups defined in `wan_path_groups`"
+ ),
+ ).copy()
+ local_path_groups_dict[path_group_name]["interfaces"] = []
+
+ local_path_groups_dict[path_group_name]["interfaces"].extend(carrier["interfaces"])
return list(local_path_groups_dict.values())
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/core-interfaces.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/core-interfaces.md
index ac3b34b8e97..7c59f2feeb3 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/core-interfaces.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/core-interfaces.md
@@ -92,35 +92,6 @@
| [ - <str>](## "core_interfaces.p2p_links.[].port_channel.nodes_child_interfaces.[].interfaces.[]") | String | | | | |
| [ raw_eos_cli](## "core_interfaces.p2p_links.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the point-to-point interface in the final EOS configuration. |
| [ structured_config](## "core_interfaces.p2p_links.[].structured_config") | Dictionary | | | | Custom structured config for interfaces
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces. |
- | [ l3_interfaces_profiles](## "core_interfaces.l3_interfaces_profiles") | List, items: Dictionary | | | | |
- | [ - profile](## "core_interfaces.l3_interfaces_profiles.[].profile") | String | Required, Unique | | | L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile. |
- | [ interface](## "core_interfaces.l3_interfaces_profiles.[].interface") | String | | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
- | [ description](## "core_interfaces.l3_interfaces_profiles.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
- | [ ip](## "core_interfaces.l3_interfaces_profiles.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
- | [ set_default_route](## "core_interfaces.l3_interfaces_profiles.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
- | [ enabled](## "core_interfaces.l3_interfaces_profiles.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
- | [ speed](## "core_interfaces.l3_interfaces_profiles.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
- | [ peer](## "core_interfaces.l3_interfaces_profiles.[].peer") | String | | | | The peer device name. Used for description and documentation |
- | [ peer_interface](## "core_interfaces.l3_interfaces_profiles.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
- | [ peer_ip](## "core_interfaces.l3_interfaces_profiles.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
- | [ qos_profile](## "core_interfaces.l3_interfaces_profiles.[].qos_profile") | String | | | | QOS service profile. |
- | [ raw_eos_cli](## "core_interfaces.l3_interfaces_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
- | [ structured_config](## "core_interfaces.l3_interfaces_profiles.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
- | [ l3_interfaces](## "core_interfaces.l3_interfaces") | List, items: Dictionary | | | | |
- | [ - node](## "core_interfaces.l3_interfaces.[].node") | String | Required | | | Device on which the interface should be configured. |
- | [ profile](## "core_interfaces.l3_interfaces.[].profile") | String | | | | L3 interface profile name. Profile defined under l3_interfaces_profiles. |
- | [ interface](## "core_interfaces.l3_interfaces.[].interface") | String | | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
- | [ description](## "core_interfaces.l3_interfaces.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
- | [ ip](## "core_interfaces.l3_interfaces.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
- | [ set_default_route](## "core_interfaces.l3_interfaces.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
- | [ enabled](## "core_interfaces.l3_interfaces.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
- | [ speed](## "core_interfaces.l3_interfaces.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
- | [ peer](## "core_interfaces.l3_interfaces.[].peer") | String | | | | The peer device name. Used for description and documentation |
- | [ peer_interface](## "core_interfaces.l3_interfaces.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
- | [ peer_ip](## "core_interfaces.l3_interfaces.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
- | [ qos_profile](## "core_interfaces.l3_interfaces.[].qos_profile") | String | | | | QOS service profile. |
- | [ raw_eos_cli](## "core_interfaces.l3_interfaces.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
- | [ structured_config](## "core_interfaces.l3_interfaces.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
=== "YAML"
@@ -346,95 +317,4 @@
# Custom structured config for interfaces
# Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
structured_config:
- l3_interfaces_profiles:
-
- # L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile.
- - profile:
-
- # Ethernet interface name like 'Ethernet2'.
- interface:
-
- # Interface description.
- # If not set a default description will be configured with '[[ ]]'
- description:
-
- # Node IPv4 address/Mask or 'dhcp'.
- ip:
-
- # Insert a default route to the `peer_ip` if `ip` is an ip address
- # or configure to accept a default route from DHCP if `ip` is `dhcp`.
-
- # AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing.
- set_default_route:
-
- # Enable or Shutdown the interface.
- enabled:
-
- # Speed should be set in the format `` or `forced ` or `auto `.
- speed:
-
- # The peer device name. Used for description and documentation
- peer:
-
- # The peer device interface. Used for description and documentation
- peer_interface:
-
- # The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address.
- peer_ip:
-
- # QOS service profile.
- qos_profile:
-
- # EOS CLI rendered directly on the interface in the final EOS configuration.
- raw_eos_cli:
-
- # Custom structured config for the Ethernet interface.
- structured_config:
- l3_interfaces:
-
- # Device on which the interface should be configured.
- - node:
-
- # L3 interface profile name. Profile defined under l3_interfaces_profiles.
- profile:
-
- # Ethernet interface name like 'Ethernet2'.
- interface:
-
- # Interface description.
- # If not set a default description will be configured with '[[ ]]'
- description:
-
- # Node IPv4 address/Mask or 'dhcp'.
- ip:
-
- # Insert a default route to the `peer_ip` if `ip` is an ip address
- # or configure to accept a default route from DHCP if `ip` is `dhcp`.
-
- # AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing.
- set_default_route:
-
- # Enable or Shutdown the interface.
- enabled:
-
- # Speed should be set in the format `` or `forced ` or `auto `.
- speed:
-
- # The peer device name. Used for description and documentation
- peer:
-
- # The peer device interface. Used for description and documentation
- peer_interface:
-
- # The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address.
- peer_ip:
-
- # QOS service profile.
- qos_profile:
-
- # EOS CLI rendered directly on the interface in the final EOS configuration.
- raw_eos_cli:
-
- # Custom structured config for the Ethernet interface.
- structured_config:
```
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/l3-edge.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/l3-edge.md
index bc036e24ade..fe5836e37cc 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/l3-edge.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/l3-edge.md
@@ -92,35 +92,6 @@
| [ - <str>](## "l3_edge.p2p_links.[].port_channel.nodes_child_interfaces.[].interfaces.[]") | String | | | | |
| [ raw_eos_cli](## "l3_edge.p2p_links.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the point-to-point interface in the final EOS configuration. |
| [ structured_config](## "l3_edge.p2p_links.[].structured_config") | Dictionary | | | | Custom structured config for interfaces
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces. |
- | [ l3_interfaces_profiles](## "l3_edge.l3_interfaces_profiles") | List, items: Dictionary | | | | |
- | [ - profile](## "l3_edge.l3_interfaces_profiles.[].profile") | String | Required, Unique | | | L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile. |
- | [ interface](## "l3_edge.l3_interfaces_profiles.[].interface") | String | | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
- | [ description](## "l3_edge.l3_interfaces_profiles.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
- | [ ip](## "l3_edge.l3_interfaces_profiles.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
- | [ set_default_route](## "l3_edge.l3_interfaces_profiles.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
- | [ enabled](## "l3_edge.l3_interfaces_profiles.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
- | [ speed](## "l3_edge.l3_interfaces_profiles.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
- | [ peer](## "l3_edge.l3_interfaces_profiles.[].peer") | String | | | | The peer device name. Used for description and documentation |
- | [ peer_interface](## "l3_edge.l3_interfaces_profiles.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
- | [ peer_ip](## "l3_edge.l3_interfaces_profiles.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
- | [ qos_profile](## "l3_edge.l3_interfaces_profiles.[].qos_profile") | String | | | | QOS service profile. |
- | [ raw_eos_cli](## "l3_edge.l3_interfaces_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
- | [ structured_config](## "l3_edge.l3_interfaces_profiles.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
- | [ l3_interfaces](## "l3_edge.l3_interfaces") | List, items: Dictionary | | | | |
- | [ - node](## "l3_edge.l3_interfaces.[].node") | String | Required | | | Device on which the interface should be configured. |
- | [ profile](## "l3_edge.l3_interfaces.[].profile") | String | | | | L3 interface profile name. Profile defined under l3_interfaces_profiles. |
- | [ interface](## "l3_edge.l3_interfaces.[].interface") | String | | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
- | [ description](## "l3_edge.l3_interfaces.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
- | [ ip](## "l3_edge.l3_interfaces.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
- | [ set_default_route](## "l3_edge.l3_interfaces.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
- | [ enabled](## "l3_edge.l3_interfaces.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
- | [ speed](## "l3_edge.l3_interfaces.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
- | [ peer](## "l3_edge.l3_interfaces.[].peer") | String | | | | The peer device name. Used for description and documentation |
- | [ peer_interface](## "l3_edge.l3_interfaces.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
- | [ peer_ip](## "l3_edge.l3_interfaces.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
- | [ qos_profile](## "l3_edge.l3_interfaces.[].qos_profile") | String | | | | QOS service profile. |
- | [ raw_eos_cli](## "l3_edge.l3_interfaces.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
- | [ structured_config](## "l3_edge.l3_interfaces.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
=== "YAML"
@@ -346,95 +317,4 @@
# Custom structured config for interfaces
# Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
structured_config:
- l3_interfaces_profiles:
-
- # L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile.
- - profile:
-
- # Ethernet interface name like 'Ethernet2'.
- interface:
-
- # Interface description.
- # If not set a default description will be configured with '[[ ]]'
- description:
-
- # Node IPv4 address/Mask or 'dhcp'.
- ip:
-
- # Insert a default route to the `peer_ip` if `ip` is an ip address
- # or configure to accept a default route from DHCP if `ip` is `dhcp`.
-
- # AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing.
- set_default_route:
-
- # Enable or Shutdown the interface.
- enabled:
-
- # Speed should be set in the format `` or `forced ` or `auto `.
- speed:
-
- # The peer device name. Used for description and documentation
- peer:
-
- # The peer device interface. Used for description and documentation
- peer_interface:
-
- # The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address.
- peer_ip:
-
- # QOS service profile.
- qos_profile:
-
- # EOS CLI rendered directly on the interface in the final EOS configuration.
- raw_eos_cli:
-
- # Custom structured config for the Ethernet interface.
- structured_config:
- l3_interfaces:
-
- # Device on which the interface should be configured.
- - node:
-
- # L3 interface profile name. Profile defined under l3_interfaces_profiles.
- profile:
-
- # Ethernet interface name like 'Ethernet2'.
- interface:
-
- # Interface description.
- # If not set a default description will be configured with '[[ ]]'
- description:
-
- # Node IPv4 address/Mask or 'dhcp'.
- ip:
-
- # Insert a default route to the `peer_ip` if `ip` is an ip address
- # or configure to accept a default route from DHCP if `ip` is `dhcp`.
-
- # AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing.
- set_default_route:
-
- # Enable or Shutdown the interface.
- enabled:
-
- # Speed should be set in the format `` or `forced ` or `auto `.
- speed:
-
- # The peer device name. Used for description and documentation
- peer:
-
- # The peer device interface. Used for description and documentation
- peer_interface:
-
- # The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address.
- peer_ip:
-
- # QOS service profile.
- qos_profile:
-
- # EOS CLI rendered directly on the interface in the final EOS configuration.
- raw_eos_cli:
-
- # Custom structured config for the Ethernet interface.
- structured_config:
```
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-interfaces-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-interfaces-settings.md
index 5358738808e..0b12c697e28 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-interfaces-settings.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-interfaces-settings.md
@@ -7,112 +7,420 @@
| Variable | Type | Required | Default | Value Restrictions | Description |
| -------- | ---- | -------- | ------- | ------------------ | ----------- |
- | [core_interfaces](## "core_interfaces") | Dictionary | | | | |
- | [ l3_interfaces_profiles](## "core_interfaces.l3_interfaces_profiles") | List, items: Dictionary | | | | |
- | [ - profile](## "core_interfaces.l3_interfaces_profiles.[].profile") | String | Required, Unique | | | L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile. |
- | [ wan_carrier](## "core_interfaces.l3_interfaces_profiles.[].wan_carrier") | String | | | | PREVIEW: This key is currently not supported
The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
- | [ wan_circuit_id](## "core_interfaces.l3_interfaces_profiles.[].wan_circuit_id") | String | | | | PREVIEW: This key is currently not supported
The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
- | [ connected_to_pathfinder](## "core_interfaces.l3_interfaces_profiles.[].connected_to_pathfinder") | Boolean | | | | PREVIEW: This key is currently not supported
For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
Default True. |
- | [ l3_interfaces](## "core_interfaces.l3_interfaces") | List, items: Dictionary | | | | |
- | [ wan_carrier](## "core_interfaces.l3_interfaces.[].wan_carrier") | String | | | | PREVIEW: This key is currently not supported
The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
- | [ wan_circuit_id](## "core_interfaces.l3_interfaces.[].wan_circuit_id") | String | | | | PREVIEW: This key is currently not supported
The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
- | [ connected_to_pathfinder](## "core_interfaces.l3_interfaces.[].connected_to_pathfinder") | Boolean | | | | PREVIEW: This key is currently not supported
For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
Default True. |
- | [l3_edge](## "l3_edge") | Dictionary | | | | |
- | [ l3_interfaces_profiles](## "l3_edge.l3_interfaces_profiles") | List, items: Dictionary | | | | |
- | [ - profile](## "l3_edge.l3_interfaces_profiles.[].profile") | String | Required, Unique | | | L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile. |
- | [ wan_carrier](## "l3_edge.l3_interfaces_profiles.[].wan_carrier") | String | | | | PREVIEW: This key is currently not supported
The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
- | [ wan_circuit_id](## "l3_edge.l3_interfaces_profiles.[].wan_circuit_id") | String | | | | PREVIEW: This key is currently not supported
The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
- | [ connected_to_pathfinder](## "l3_edge.l3_interfaces_profiles.[].connected_to_pathfinder") | Boolean | | | | PREVIEW: This key is currently not supported
For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
Default True. |
- | [ l3_interfaces](## "l3_edge.l3_interfaces") | List, items: Dictionary | | | | |
- | [ wan_carrier](## "l3_edge.l3_interfaces.[].wan_carrier") | String | | | | PREVIEW: This key is currently not supported
The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
- | [ wan_circuit_id](## "l3_edge.l3_interfaces.[].wan_circuit_id") | String | | | | PREVIEW: This key is currently not supported
The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
- | [ connected_to_pathfinder](## "l3_edge.l3_interfaces.[].connected_to_pathfinder") | Boolean | | | | PREVIEW: This key is currently not supported
For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
Default True. |
+ | [<node_type_keys.key>](## "") | Dictionary | | | | |
+ | [ defaults](## ".defaults") | Dictionary | | | | Define variables for all nodes of this type. |
+ | [ l3_interfaces](## ".defaults.l3_interfaces") | List, items: Dictionary | | | | PREVIEW: This key is currently not supported
L3 Interfaces currently only use for WAN interfaces. |
+ | [ - profile](## ".defaults.l3_interfaces.[].profile") | String | | | | L3 interface profile name. Profile defined under `l3_interface_profiles`.
|
+ | [ name](## ".defaults.l3_interfaces.[].name") | String | Required, Unique | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
+ | [ description](## ".defaults.l3_interfaces.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
+ | [ ip](## ".defaults.l3_interfaces.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
+ | [ set_default_route](## ".defaults.l3_interfaces.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
+ | [ enabled](## ".defaults.l3_interfaces.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
+ | [ speed](## ".defaults.l3_interfaces.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
+ | [ peer](## ".defaults.l3_interfaces.[].peer") | String | | | | The peer device name. Used for description and documentation |
+ | [ peer_interface](## ".defaults.l3_interfaces.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
+ | [ peer_ip](## ".defaults.l3_interfaces.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
+ | [ qos_profile](## ".defaults.l3_interfaces.[].qos_profile") | String | | | | QOS service profile. |
+ | [ wan_carrier](## ".defaults.l3_interfaces.[].wan_carrier") | String | | | | The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
+ | [ wan_circuit_id](## ".defaults.l3_interfaces.[].wan_circuit_id") | String | | | | The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
+ | [ connected_to_pathfinder](## ".defaults.l3_interfaces.[].connected_to_pathfinder") | Boolean | | `True` | | For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders. |
+ | [ raw_eos_cli](## ".defaults.l3_interfaces.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
+ | [ structured_config](## ".defaults.l3_interfaces.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
+ | [ node_groups](## ".node_groups") | List, items: Dictionary | | | | Define variables related to all nodes part of this group. |
+ | [ - group](## ".node_groups.[].group") | String | Required, Unique | | | The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
The Node Group Name is also used for peer description on downstream switches' uplinks.
|
+ | [ nodes](## ".node_groups.[].nodes") | List, items: Dictionary | | | | Define variables per node. |
+ | [ - name](## ".node_groups.[].nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
+ | [ l3_interfaces](## ".node_groups.[].nodes.[].l3_interfaces") | List, items: Dictionary | | | | PREVIEW: This key is currently not supported
L3 Interfaces currently only use for WAN interfaces. |
+ | [ - profile](## ".node_groups.[].nodes.[].l3_interfaces.[].profile") | String | | | | L3 interface profile name. Profile defined under `l3_interface_profiles`.
|
+ | [ name](## ".node_groups.[].nodes.[].l3_interfaces.[].name") | String | Required, Unique | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
+ | [ description](## ".node_groups.[].nodes.[].l3_interfaces.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
+ | [ ip](## ".node_groups.[].nodes.[].l3_interfaces.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
+ | [ set_default_route](## ".node_groups.[].nodes.[].l3_interfaces.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
+ | [ enabled](## ".node_groups.[].nodes.[].l3_interfaces.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
+ | [ speed](## ".node_groups.[].nodes.[].l3_interfaces.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
+ | [ peer](## ".node_groups.[].nodes.[].l3_interfaces.[].peer") | String | | | | The peer device name. Used for description and documentation |
+ | [ peer_interface](## ".node_groups.[].nodes.[].l3_interfaces.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
+ | [ peer_ip](## ".node_groups.[].nodes.[].l3_interfaces.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
+ | [ qos_profile](## ".node_groups.[].nodes.[].l3_interfaces.[].qos_profile") | String | | | | QOS service profile. |
+ | [ wan_carrier](## ".node_groups.[].nodes.[].l3_interfaces.[].wan_carrier") | String | | | | The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
+ | [ wan_circuit_id](## ".node_groups.[].nodes.[].l3_interfaces.[].wan_circuit_id") | String | | | | The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
+ | [ connected_to_pathfinder](## ".node_groups.[].nodes.[].l3_interfaces.[].connected_to_pathfinder") | Boolean | | `True` | | For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders. |
+ | [ raw_eos_cli](## ".node_groups.[].nodes.[].l3_interfaces.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
+ | [ structured_config](## ".node_groups.[].nodes.[].l3_interfaces.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
+ | [ l3_interfaces](## ".node_groups.[].l3_interfaces") | List, items: Dictionary | | | | PREVIEW: This key is currently not supported
L3 Interfaces currently only use for WAN interfaces. |
+ | [ - profile](## ".node_groups.[].l3_interfaces.[].profile") | String | | | | L3 interface profile name. Profile defined under `l3_interface_profiles`.
|
+ | [ name](## ".node_groups.[].l3_interfaces.[].name") | String | Required, Unique | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
+ | [ description](## ".node_groups.[].l3_interfaces.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
+ | [ ip](## ".node_groups.[].l3_interfaces.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
+ | [ set_default_route](## ".node_groups.[].l3_interfaces.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
+ | [ enabled](## ".node_groups.[].l3_interfaces.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
+ | [ speed](## ".node_groups.[].l3_interfaces.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
+ | [ peer](## ".node_groups.[].l3_interfaces.[].peer") | String | | | | The peer device name. Used for description and documentation |
+ | [ peer_interface](## ".node_groups.[].l3_interfaces.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
+ | [ peer_ip](## ".node_groups.[].l3_interfaces.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
+ | [ qos_profile](## ".node_groups.[].l3_interfaces.[].qos_profile") | String | | | | QOS service profile. |
+ | [ wan_carrier](## ".node_groups.[].l3_interfaces.[].wan_carrier") | String | | | | The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
+ | [ wan_circuit_id](## ".node_groups.[].l3_interfaces.[].wan_circuit_id") | String | | | | The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
+ | [ connected_to_pathfinder](## ".node_groups.[].l3_interfaces.[].connected_to_pathfinder") | Boolean | | `True` | | For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders. |
+ | [ raw_eos_cli](## ".node_groups.[].l3_interfaces.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
+ | [ structured_config](## ".node_groups.[].l3_interfaces.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
+ | [ nodes](## ".nodes") | List, items: Dictionary | | | | Define variables per node. |
+ | [ - name](## ".nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
+ | [ l3_interfaces](## ".nodes.[].l3_interfaces") | List, items: Dictionary | | | | PREVIEW: This key is currently not supported
L3 Interfaces currently only use for WAN interfaces. |
+ | [ - profile](## ".nodes.[].l3_interfaces.[].profile") | String | | | | L3 interface profile name. Profile defined under `l3_interface_profiles`.
|
+ | [ name](## ".nodes.[].l3_interfaces.[].name") | String | Required, Unique | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
+ | [ description](## ".nodes.[].l3_interfaces.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
+ | [ ip](## ".nodes.[].l3_interfaces.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
+ | [ set_default_route](## ".nodes.[].l3_interfaces.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
+ | [ enabled](## ".nodes.[].l3_interfaces.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
+ | [ speed](## ".nodes.[].l3_interfaces.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
+ | [ peer](## ".nodes.[].l3_interfaces.[].peer") | String | | | | The peer device name. Used for description and documentation |
+ | [ peer_interface](## ".nodes.[].l3_interfaces.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
+ | [ peer_ip](## ".nodes.[].l3_interfaces.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
+ | [ qos_profile](## ".nodes.[].l3_interfaces.[].qos_profile") | String | | | | QOS service profile. |
+ | [ wan_carrier](## ".nodes.[].l3_interfaces.[].wan_carrier") | String | | | | The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
+ | [ wan_circuit_id](## ".nodes.[].l3_interfaces.[].wan_circuit_id") | String | | | | The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
+ | [ connected_to_pathfinder](## ".nodes.[].l3_interfaces.[].connected_to_pathfinder") | Boolean | | `True` | | For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders. |
+ | [ raw_eos_cli](## ".nodes.[].l3_interfaces.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
+ | [ structured_config](## ".nodes.[].l3_interfaces.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
+ | [l3_interface_profiles](## "l3_interface_profiles") | List, items: Dictionary | | | | PREVIEW: This key is currently not supported
Profiles to inherit common settings for l3_interfaces defined under the node type key.
These profiles will *not* work for `l3_interfaces` defined under `vrfs`. |
+ | [ - profile](## "l3_interface_profiles.[].profile") | String | Required, Unique | | | L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile. |
+ | [ name](## "l3_interface_profiles.[].name") | String | | | Pattern: Ethernet[\d/]+ | Ethernet interface name like 'Ethernet2'. |
+ | [ description](## "l3_interface_profiles.[].description") | String | | | | Interface description.
If not set a default description will be configured with '[[ ]]' |
+ | [ ip](## "l3_interface_profiles.[].ip") | String | | | | Node IPv4 address/Mask or 'dhcp'. |
+ | [ set_default_route](## "l3_interface_profiles.[].set_default_route") | Boolean | | `False` | | Insert a default route to the `peer_ip` if `ip` is an ip address
or configure to accept a default route from DHCP if `ip` is `dhcp`.
AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing. |
+ | [ enabled](## "l3_interface_profiles.[].enabled") | Boolean | | `True` | | Enable or Shutdown the interface. |
+ | [ speed](## "l3_interface_profiles.[].speed") | String | | | | Speed should be set in the format `` or `forced ` or `auto `. |
+ | [ peer](## "l3_interface_profiles.[].peer") | String | | | | The peer device name. Used for description and documentation |
+ | [ peer_interface](## "l3_interface_profiles.[].peer_interface") | String | | | | The peer device interface. Used for description and documentation |
+ | [ peer_ip](## "l3_interface_profiles.[].peer_ip") | String | | | | The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address. |
+ | [ qos_profile](## "l3_interface_profiles.[].qos_profile") | String | | | | QOS service profile. |
+ | [ wan_carrier](## "l3_interface_profiles.[].wan_carrier") | String | | | | The WAN Carrier this interface is connected to.
This is used to infer the path-groups in which this interface should be configured. |
+ | [ wan_circuit_id](## "l3_interface_profiles.[].wan_circuit_id") | String | | | | The WAN Circuit ID for this interface.
This is not rendered in the configuration but used for WAN designs. |
+ | [ connected_to_pathfinder](## "l3_interface_profiles.[].connected_to_pathfinder") | Boolean | | `True` | | For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders. |
+ | [ raw_eos_cli](## "l3_interface_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the interface in the final EOS configuration. |
+ | [ structured_config](## "l3_interface_profiles.[].structured_config") | Dictionary | | | | Custom structured config for the Ethernet interface. |
=== "YAML"
```yaml
- core_interfaces:
- l3_interfaces_profiles:
+ :
- # L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile.
- - profile:
+ # Define variables for all nodes of this type.
+ defaults:
- # PREVIEW: This key is currently not supported
+ # PREVIEW: This key is currently not supported
- # The WAN Carrier this interface is connected to.
- # This is used to infer the path-groups in which this interface should be configured.
- wan_carrier:
+ # L3 Interfaces currently only use for WAN interfaces.
+ l3_interfaces:
- # PREVIEW: This key is currently not supported
+ # L3 interface profile name. Profile defined under `l3_interface_profiles`.
+ - profile:
- # The WAN Circuit ID for this interface.
- # This is not rendered in the configuration but used for WAN designs.
- wan_circuit_id:
+ # Ethernet interface name like 'Ethernet2'.
+ name:
- # PREVIEW: This key is currently not supported
+ # Interface description.
+ # If not set a default description will be configured with '[[ ]]'
+ description:
- # For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
- # Default True.
- connected_to_pathfinder:
- l3_interfaces:
+ # Node IPv4 address/Mask or 'dhcp'.
+ ip:
- # PREVIEW: This key is currently not supported
+ # Insert a default route to the `peer_ip` if `ip` is an ip address
+ # or configure to accept a default route from DHCP if `ip` is `dhcp`.
- # The WAN Carrier this interface is connected to.
- # This is used to infer the path-groups in which this interface should be configured.
- wan_carrier:
+ # AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing.
+ set_default_route:
- # PREVIEW: This key is currently not supported
+ # Enable or Shutdown the interface.
+ enabled:
- # The WAN Circuit ID for this interface.
- # This is not rendered in the configuration but used for WAN designs.
- wan_circuit_id:
+ # Speed should be set in the format `` or `forced ` or `auto `.
+ speed:
- # PREVIEW: This key is currently not supported
+ # The peer device name. Used for description and documentation
+ peer:
- # For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
- # Default True.
- connected_to_pathfinder:
- l3_edge:
- l3_interfaces_profiles:
+ # The peer device interface. Used for description and documentation
+ peer_interface:
- # L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile.
- - profile:
+ # The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address.
+ peer_ip:
- # PREVIEW: This key is currently not supported
+ # QOS service profile.
+ qos_profile:
- # The WAN Carrier this interface is connected to.
- # This is used to infer the path-groups in which this interface should be configured.
- wan_carrier:
+ # The WAN Carrier this interface is connected to.
+ # This is used to infer the path-groups in which this interface should be configured.
+ wan_carrier:
- # PREVIEW: This key is currently not supported
+ # The WAN Circuit ID for this interface.
+ # This is not rendered in the configuration but used for WAN designs.
+ wan_circuit_id:
- # The WAN Circuit ID for this interface.
- # This is not rendered in the configuration but used for WAN designs.
- wan_circuit_id:
+ # For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
+ connected_to_pathfinder:
- # PREVIEW: This key is currently not supported
+ # EOS CLI rendered directly on the interface in the final EOS configuration.
+ raw_eos_cli:
- # For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
- # Default True.
- connected_to_pathfinder:
- l3_interfaces:
+ # Custom structured config for the Ethernet interface.
+ structured_config:
- # PREVIEW: This key is currently not supported
+ # Define variables related to all nodes part of this group.
+ node_groups:
+
+ # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
+ # The Node Group Name is also used for peer description on downstream switches' uplinks.
+ - group:
+
+ # Define variables per node.
+ nodes:
+
+ # The Node Name is used as "hostname".
+ - name:
+
+ # PREVIEW: This key is currently not supported
+
+ # L3 Interfaces currently only use for WAN interfaces.
+ l3_interfaces:
+
+ # L3 interface profile name. Profile defined under `l3_interface_profiles`.
+ - profile:
+
+ # Ethernet interface name like 'Ethernet2'.
+ name:
+
+ # Interface description.
+ # If not set a default description will be configured with '[[ ]]'
+ description:
+
+ # Node IPv4 address/Mask or 'dhcp'.
+ ip:
+
+ # Insert a default route to the `peer_ip` if `ip` is an ip address
+ # or configure to accept a default route from DHCP if `ip` is `dhcp`.
+
+ # AVD will error out if set to true, `ip` is an ip address and `peer_ip` is missing.
+ set_default_route:
+
+ # Enable or Shutdown the interface.
+ enabled:
- # The WAN Carrier this interface is connected to.
- # This is used to infer the path-groups in which this interface should be configured.
- wan_carrier:
+ # Speed should be set in the format `` or `forced ` or `auto `.
+ speed:
+
+ # The peer device name. Used for description and documentation
+ peer:
+
+ # The peer device interface. Used for description and documentation
+ peer_interface:
+
+ # The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address.
+ peer_ip:
+
+ # QOS service profile.
+ qos_profile:
+
+ # The WAN Carrier this interface is connected to.
+ # This is used to infer the path-groups in which this interface should be configured.
+ wan_carrier:
+
+ # The WAN Circuit ID for this interface.
+ # This is not rendered in the configuration but used for WAN designs.
+ wan_circuit_id:
+
+ # For a WAN interface (`wan_path_group` is set), allow to disable the static tunnel towards Pathfinders.
+ connected_to_pathfinder:
+
+ # EOS CLI rendered directly on the interface in the final EOS configuration.
+ raw_eos_cli:
+
+ # Custom structured config for the Ethernet interface.
+ structured_config:
# PREVIEW: This key is currently not supported
- # The WAN Circuit ID for this interface.
- # This is not rendered in the configuration but used for WAN designs.
- wan_circuit_id: