From 1b08d779fcfe02710fc17ef85b32cc4a5234375a Mon Sep 17 00:00:00 2001 From: Shivani-gslab <145646625+Shivani-gslab@users.noreply.github.com> Date: Mon, 18 Nov 2024 12:42:53 +0530 Subject: [PATCH 1/9] CI(eos_cli_config_gen): Restructure molecule host vars - part 8 (#4721) --- .../documentation/devices/host1.md | 130 ++++++++++++++++++ .../documentation/devices/host2.md | 38 ++++- .../documentation/devices/igmp-snooping.md | 106 -------------- .../devices/ip-client-source-interfaces.md | 76 ---------- .../devices/logging-match-list.md | 56 -------- .../documentation/devices/logging-minimal.md | 63 --------- .../documentation/devices/logging.md | 124 ----------------- .../intended/configs/host1.cfg | 52 +++++++ .../intended/configs/host2.cfg | 11 ++ .../intended/configs/igmp-snooping.cfg | 19 --- .../configs/ip-client-source-interfaces.cfg | 21 --- .../intended/configs/logging-match-list.cfg | 9 -- .../intended/configs/logging-minimal.cfg | 13 -- .../intended/configs/logging.cfg | 40 ------ .../host1/ip-ftp-client-source-interfaces.yml | 9 ++ .../ip-http-client-source-interfaces.yml | 10 ++ ...ooping-enable.yml => ip-igmp-snooping.yml} | 0 .../host1/ip-ssh-client-source-interfaces.yml | 9 ++ .../ip-telnet-client-source-interfaces.yml | 9 ++ .../ip-tftp-client-source-interfaces.yml | 9 ++ .../host_vars/{ => host1}/logging.yml | 5 + .../host2/ip-igmp-snooping-enable.yml | 8 -- .../host_vars/host2/ip-igmp-snooping.yml | 14 ++ .../logging.yml} | 0 .../inventory/host_vars/igmp-snooping.yml | 28 ---- .../host_vars/ip-client-source-interfaces.yml | 45 ------ .../host_vars/logging-match-list.yml | 9 -- .../eos_cli_config_gen/inventory/hosts.yml | 5 - 28 files changed, 295 insertions(+), 623 deletions(-) delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/igmp-snooping.md delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ip-client-source-interfaces.md delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging-match-list.md delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging-minimal.md delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging.md delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/igmp-snooping.cfg delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ip-client-source-interfaces.cfg delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging-match-list.cfg delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging-minimal.cfg delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging.cfg create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-ftp-client-source-interfaces.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-http-client-source-interfaces.yml rename ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/{ip-igmp-snooping-enable.yml => ip-igmp-snooping.yml} (100%) create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-ssh-client-source-interfaces.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-telnet-client-source-interfaces.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-tftp-client-source-interfaces.yml rename ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/{ => host1}/logging.yml (95%) delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/ip-igmp-snooping-enable.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/ip-igmp-snooping.yml rename ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/{logging-minimal.yml => host2/logging.yml} (100%) delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/igmp-snooping.yml delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ip-client-source-interfaces.yml delete mode 100644 ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging-match-list.yml diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host1.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host1.md index a9979dd5970..cc723a80616 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host1.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host1.md @@ -11,6 +11,7 @@ - [System Control-Plane](#system-control-plane) - [Management SSH](#management-ssh) - [Management Tech-Support](#management-tech-support) + - [IP Client Source Interfaces](#ip-client-source-interfaces) - [CVX](#cvx) - [CVX Services](#cvx-services) - [CVX Device Configuration](#cvx-device-configuration) @@ -50,6 +51,7 @@ - [System Boot Device Configuration](#system-boot-device-configuration) - [Monitoring](#monitoring) - [Custom daemons](#custom-daemons) + - [Logging](#logging) - [MCS Client Summary](#mcs-client-summary) - [Monitor Sessions](#monitor-sessions) - [Tap Aggregation](#tap-aggregation) @@ -494,6 +496,47 @@ management tech-support exit ``` +### IP Client Source Interfaces + +| IP Client | VRF | Source Interface Name | +| --------- | --- | --------------------- | +| FTP | default | Ethernet10 | +| FTP | default | Loopback0 | +| FTP | MGMT | Management0 | +| HTTP | default | Loopback0 | +| HTTP | MGMT | Management0 | +| HTTP | default | Ethernet10 | +| SSH | default | Ethernet10 | +| SSH | default | Loopback0 | +| SSH | MGMT | Management0 | +| Telnet | default | Ethernet10 | +| Telnet | default | Loopback0 | +| Telnet | MGMT | Management0 | +| TFTP | default | Ethernet10 | +| TFTP | default | Loopback0 | +| TFTP | MGMT | Management0 | + +#### IP Client Source Interfaces Device Configuration + +```eos +! +ip ftp client source-interface Ethernet10 +ip ftp client source-interface Loopback0 vrf default +ip ftp client source-interface Management0 vrf MGMT +ip http client local-interface Loopback0 vrf default +ip http client local-interface Management0 vrf MGMT +ip http client local-interface Ethernet10 +ip ssh client source-interface Ethernet10 +ip ssh client source-interface Loopback0 vrf default +ip ssh client source-interface Management0 vrf MGMT +ip telnet client source-interface Ethernet10 +ip telnet client source-interface Loopback0 vrf default +ip telnet client source-interface Management0 vrf MGMT +ip tftp client source-interface Ethernet10 +ip tftp client source-interface Loopback0 vrf default +ip tftp client source-interface Management0 vrf MGMT + ``` + ## CVX | Peer Hosts | @@ -1221,6 +1264,93 @@ daemon random shutdown ``` +### Logging + +#### Logging Servers and Features Summary + +| Type | Level | +| -----| ----- | +| Console | errors | +| Buffer | warnings | +| Trap | disabled | +| Synchronous | critical | + +| Format Type | Setting | +| ----------- | ------- | +| Timestamp | traditional year timezone | +| Hostname | hostname | +| Sequence-numbers | false | +| RFC5424 | True | + +| VRF | Source Interface | +| --- | ---------------- | +| default | Loopback0 | +| mgt | Management0 | + +| VRF | Hosts | Ports | Protocol | +| --- | ----- | ----- | -------- | +| default | 20.20.20.7 | Default | UDP | +| default | 50.50.50.7 | 100, 200 | TCP | +| default | 60.60.60.7 | 100, 200 | UDP | +| default | 2001:db8::20:7 | Default | UDP | +| default | 2001:db8::50:7 | 100, 200 | TCP | +| default | 2001:db8::60:7 | 100, 200 | UDP | +| mgt | 10.10.10.7 | Default | UDP | +| mgt | 30.30.30.7 | 100, 200 | TCP | +| mgt | 40.40.40.7 | 300, 400 | UDP | +| mgt | 2001:db8::10:7 | Default | UDP | +| mgt | 2001:db8::30:7 | 100, 200 | TCP | +| mgt | 2001:db8::40:7 | 300, 400 | UDP | +| vrf_with_no_source_interface | 1.2.3.4 | Default | UDP | +| vrf_with_no_source_interface | 2001:db8::1:2:3:4 | Default | UDP | + +| Facility | Severity | +| -------- | -------- | +| AAA | warnings | +| ACL | critical | +| BGP | 0 | + +#### Logging Servers and Features Device Configuration + +```eos +! +logging event storm-control discards global +logging event storm-control discards interval 10 +! +logging event congestion-drops interval 10 +! +logging repeat-messages +logging buffered 1000000 warnings +no logging trap +logging console errors +logging synchronous level critical +logging host 20.20.20.7 +logging host 50.50.50.7 100 200 protocol tcp +logging host 60.60.60.7 100 200 +logging host 2001:db8::20:7 +logging host 2001:db8::50:7 100 200 protocol tcp +logging host 2001:db8::60:7 100 200 +logging vrf mgt host 10.10.10.7 +logging vrf mgt host 30.30.30.7 100 200 protocol tcp +logging vrf mgt host 40.40.40.7 300 400 +logging vrf mgt host 2001:db8::10:7 +logging vrf mgt host 2001:db8::30:7 100 200 protocol tcp +logging vrf mgt host 2001:db8::40:7 300 400 +logging vrf vrf_with_no_source_interface host 1.2.3.4 +logging vrf vrf_with_no_source_interface host 2001:db8::1:2:3:4 +logging format timestamp traditional year timezone +logging format rfc5424 +logging source-interface Loopback0 +logging vrf mgt source-interface Management0 +logging policy match match-list molecule discard +! +logging level AAA warnings +logging level ACL critical +logging level BGP 0 +! +no logging event link-status global +``` + ### MCS Client Summary MCS client is enabled diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host2.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host2.md index 7fa89280881..c5ad3df6800 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host2.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/host2.md @@ -24,6 +24,7 @@ - [System Boot Settings](#system-boot-settings) - [System Boot Device Configuration](#system-boot-device-configuration) - [Monitoring](#monitoring) + - [Logging](#logging) - [Monitor Server Radius Summary](#monitor-server-radius-summary) - [Monitor Connectivity](#monitor-connectivity) - [Global Configuration](#global-configuration) @@ -299,6 +300,31 @@ dhcp relay ## Monitoring +### Logging + +#### Logging Servers and Features Summary + +| Type | Level | +| -----| ----- | +| Console | informational | +| Monitor | debugging | +| Buffer | - | + +**Syslog facility value:** syslog + +#### Logging Servers and Features Device Configuration + +```eos +! +no logging repeat-messages +logging buffered 64000 +logging console informational +logging monitor debugging +logging facility syslog +! +logging event link-status global +``` + ### Monitor Server Radius Summary #### Server Probe Settings @@ -501,17 +527,27 @@ queue-monitor length default threshold 100 | IGMP Snooping | Fast Leave | Interface Restart Query | Proxy | Restart Query Interval | Robustness Variable | | ------------- | ---------- | ----------------------- | ----- | ---------------------- | ------------------- | -| Enabled | False | - | False | - | - | +| Disabled | False | - | False | - | - | | Querier Enabled | IP Address | Query Interval | Max Response Time | Last Member Query Interval | Last Member Query Count | Startup Query Interval | Startup Query Count | Version | | --------------- | ---------- | -------------- | ----------------- | -------------------------- | ----------------------- | ---------------------- | ------------------- | ------- | | False | - | - | - | - | - | - | - | - | +##### IP IGMP Snooping Vlan Summary + +| Vlan | IGMP Snooping | Fast Leave | Max Groups | Proxy | +| ---- | ------------- | ---------- | ---------- | ----- | +| 20 | False | - | - | - | +| 30 | False | - | - | - | + #### IP IGMP Snooping Device Configuration ```eos ! +no ip igmp snooping no ip igmp snooping fast-leave +no ip igmp snooping vlan 20 +no ip igmp snooping vlan 30 no ip igmp snooping querier ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/igmp-snooping.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/igmp-snooping.md deleted file mode 100644 index 653cdbaeb30..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/igmp-snooping.md +++ /dev/null @@ -1,106 +0,0 @@ -# igmp-snooping - -## Table of Contents - -- [Management](#management) - - [Management Interfaces](#management-interfaces) -- [Internal VLAN Allocation Policy](#internal-vlan-allocation-policy) - - [Internal VLAN Allocation Policy Summary](#internal-vlan-allocation-policy-summary) - - [Internal VLAN Allocation Policy Device Configuration](#internal-vlan-allocation-policy-device-configuration) -- [VLANs](#vlans) - - [VLANs Summary](#vlans-summary) - - [VLANs Device Configuration](#vlans-device-configuration) -- [Multicast](#multicast) - - [IP IGMP Snooping](#ip-igmp-snooping) - -## Management - -### Management Interfaces - -#### Management Interfaces Summary - -##### IPv4 - -| Management Interface | Description | Type | VRF | IP Address | Gateway | -| -------------------- | ----------- | ---- | --- | ---------- | ------- | -| Management1 | OOB_MANAGEMENT | oob | MGMT | 10.73.255.122/24 | 10.73.255.2 | - -##### IPv6 - -| Management Interface | Description | Type | VRF | IPv6 Address | IPv6 Gateway | -| -------------------- | ----------- | ---- | --- | ------------ | ------------ | -| Management1 | OOB_MANAGEMENT | oob | MGMT | - | - | - -#### Management Interfaces Device Configuration - -```eos -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 -``` - -## Internal VLAN Allocation Policy - -### Internal VLAN Allocation Policy Summary - -| Policy Allocation | Range Beginning | Range Ending | -| ------------------| --------------- | ------------ | -| ascending | 1006 | 1199 | - -### Internal VLAN Allocation Policy Device Configuration - -```eos -! -vlan internal order ascending range 1006 1199 -``` - -## VLANs - -### VLANs Summary - -| VLAN ID | Name | Trunk Groups | -| ------- | ---- | ------------ | -| 110 | PR01-DMZ | - | -| 3010 | MLAG_iBGP_TENANT_A_PROJECT01 | LEAF_PEER_L3 | - -### VLANs Device Configuration - -```eos -! -vlan 110 - name PR01-DMZ -! -vlan 3010 - name MLAG_iBGP_TENANT_A_PROJECT01 - trunk group LEAF_PEER_L3 -``` - -## Multicast - -### IP IGMP Snooping - -#### IP IGMP Snooping Summary - -| IGMP Snooping | Fast Leave | Interface Restart Query | Proxy | Restart Query Interval | Robustness Variable | -| ------------- | ---------- | ----------------------- | ----- | ---------------------- | ------------------- | -| Disabled | - | - | - | - | - | - -##### IP IGMP Snooping Vlan Summary - -| Vlan | IGMP Snooping | Fast Leave | Max Groups | Proxy | -| ---- | ------------- | ---------- | ---------- | ----- | -| 10 | True | - | - | - | -| 20 | False | - | - | - | -| 30 | False | - | - | - | - -#### IP IGMP Snooping Device Configuration - -```eos -! -no ip igmp snooping -ip igmp snooping vlan 10 -no ip igmp snooping vlan 20 -no ip igmp snooping vlan 30 -``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ip-client-source-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ip-client-source-interfaces.md deleted file mode 100644 index e33a18d6ef3..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ip-client-source-interfaces.md +++ /dev/null @@ -1,76 +0,0 @@ -# ip-client-source-interfaces - -## Table of Contents - -- [Management](#management) - - [Management Interfaces](#management-interfaces) - - [IP Client Source Interfaces](#ip-client-source-interfaces-1) - -## Management - -### Management Interfaces - -#### Management Interfaces Summary - -##### IPv4 - -| Management Interface | Description | Type | VRF | IP Address | Gateway | -| -------------------- | ----------- | ---- | --- | ---------- | ------- | -| Management1 | OOB_MANAGEMENT | oob | MGMT | 10.73.255.122/24 | 10.73.255.2 | - -##### IPv6 - -| Management Interface | Description | Type | VRF | IPv6 Address | IPv6 Gateway | -| -------------------- | ----------- | ---- | --- | ------------ | ------------ | -| Management1 | OOB_MANAGEMENT | oob | MGMT | - | - | - -#### Management Interfaces Device Configuration - -```eos -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 -``` - -### IP Client Source Interfaces - -| IP Client | VRF | Source Interface Name | -| --------- | --- | --------------------- | -| FTP | default | Ethernet10 | -| FTP | default | Loopback0 | -| FTP | MGMT | Management0 | -| HTTP | default | Loopback0 | -| HTTP | MGMT | Management0 | -| HTTP | default | Ethernet10 | -| SSH | default | Ethernet10 | -| SSH | default | Loopback0 | -| SSH | MGMT | Management0 | -| Telnet | default | Ethernet10 | -| Telnet | default | Loopback0 | -| Telnet | MGMT | Management0 | -| TFTP | default | Ethernet10 | -| TFTP | default | Loopback0 | -| TFTP | MGMT | Management0 | - -#### IP Client Source Interfaces Device Configuration - -```eos -! -ip ftp client source-interface Ethernet10 -ip ftp client source-interface Loopback0 vrf default -ip ftp client source-interface Management0 vrf MGMT -ip http client local-interface Loopback0 vrf default -ip http client local-interface Management0 vrf MGMT -ip http client local-interface Ethernet10 -ip ssh client source-interface Ethernet10 -ip ssh client source-interface Loopback0 vrf default -ip ssh client source-interface Management0 vrf MGMT -ip telnet client source-interface Ethernet10 -ip telnet client source-interface Loopback0 vrf default -ip telnet client source-interface Management0 vrf MGMT -ip tftp client source-interface Ethernet10 -ip tftp client source-interface Loopback0 vrf default -ip tftp client source-interface Management0 vrf MGMT - ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging-match-list.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging-match-list.md deleted file mode 100644 index 654d6c48612..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging-match-list.md +++ /dev/null @@ -1,56 +0,0 @@ -# logging-match-list - -## Table of Contents - -- [Management](#management) - - [Management Interfaces](#management-interfaces) -- [Monitoring](#monitoring) - - [Logging](#logging) - -## Management - -### Management Interfaces - -#### Management Interfaces Summary - -##### IPv4 - -| Management Interface | Description | Type | VRF | IP Address | Gateway | -| -------------------- | ----------- | ---- | --- | ---------- | ------- | -| Management1 | OOB_MANAGEMENT | oob | MGMT | 10.73.255.122/24 | 10.73.255.2 | - -##### IPv6 - -| Management Interface | Description | Type | VRF | IPv6 Address | IPv6 Gateway | -| -------------------- | ----------- | ---- | --- | ------------ | ------------ | -| Management1 | OOB_MANAGEMENT | oob | MGMT | - | - | - -#### Management Interfaces Device Configuration - -```eos -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 -``` - -## Monitoring - -### Logging - -#### Logging Servers and Features Summary - -| Type | Level | -| -----| ----- | -| Console | informational | -| Monitor | debugging | - -#### Logging Servers and Features Device Configuration - -```eos -! -logging console informational -logging monitor debugging -logging policy match match-list molecule discard -``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging-minimal.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging-minimal.md deleted file mode 100644 index 744fc471f35..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging-minimal.md +++ /dev/null @@ -1,63 +0,0 @@ -# logging-minimal - -## Table of Contents - -- [Management](#management) - - [Management Interfaces](#management-interfaces) -- [Monitoring](#monitoring) - - [Logging](#logging) - -## Management - -### Management Interfaces - -#### Management Interfaces Summary - -##### IPv4 - -| Management Interface | Description | Type | VRF | IP Address | Gateway | -| -------------------- | ----------- | ---- | --- | ---------- | ------- | -| Management1 | OOB_MANAGEMENT | oob | MGMT | 10.73.255.122/24 | 10.73.255.2 | - -##### IPv6 - -| Management Interface | Description | Type | VRF | IPv6 Address | IPv6 Gateway | -| -------------------- | ----------- | ---- | --- | ------------ | ------------ | -| Management1 | OOB_MANAGEMENT | oob | MGMT | - | - | - -#### Management Interfaces Device Configuration - -```eos -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 -``` - -## Monitoring - -### Logging - -#### Logging Servers and Features Summary - -| Type | Level | -| -----| ----- | -| Console | informational | -| Monitor | debugging | -| Buffer | - | - -**Syslog facility value:** syslog - -#### Logging Servers and Features Device Configuration - -```eos -! -no logging repeat-messages -logging buffered 64000 -logging console informational -logging monitor debugging -logging facility syslog -! -logging event link-status global -``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging.md deleted file mode 100644 index 775a2f4cbe0..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/logging.md +++ /dev/null @@ -1,124 +0,0 @@ -# logging - -## Table of Contents - -- [Management](#management) - - [Management Interfaces](#management-interfaces) -- [Monitoring](#monitoring) - - [Logging](#logging-1) - -## Management - -### Management Interfaces - -#### Management Interfaces Summary - -##### IPv4 - -| Management Interface | Description | Type | VRF | IP Address | Gateway | -| -------------------- | ----------- | ---- | --- | ---------- | ------- | -| Management1 | OOB_MANAGEMENT | oob | MGMT | 10.73.255.122/24 | 10.73.255.2 | - -##### IPv6 - -| Management Interface | Description | Type | VRF | IPv6 Address | IPv6 Gateway | -| -------------------- | ----------- | ---- | --- | ------------ | ------------ | -| Management1 | OOB_MANAGEMENT | oob | MGMT | - | - | - -#### Management Interfaces Device Configuration - -```eos -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 -``` - -## Monitoring - -### Logging - -#### Logging Servers and Features Summary - -| Type | Level | -| -----| ----- | -| Console | errors | -| Buffer | warnings | -| Trap | disabled | -| Synchronous | critical | - -| Format Type | Setting | -| ----------- | ------- | -| Timestamp | traditional year timezone | -| Hostname | hostname | -| Sequence-numbers | false | -| RFC5424 | True | - -| VRF | Source Interface | -| --- | ---------------- | -| default | Loopback0 | -| mgt | Management0 | - -| VRF | Hosts | Ports | Protocol | -| --- | ----- | ----- | -------- | -| default | 20.20.20.7 | Default | UDP | -| default | 50.50.50.7 | 100, 200 | TCP | -| default | 60.60.60.7 | 100, 200 | UDP | -| default | 2001:db8::20:7 | Default | UDP | -| default | 2001:db8::50:7 | 100, 200 | TCP | -| default | 2001:db8::60:7 | 100, 200 | UDP | -| mgt | 10.10.10.7 | Default | UDP | -| mgt | 30.30.30.7 | 100, 200 | TCP | -| mgt | 40.40.40.7 | 300, 400 | UDP | -| mgt | 2001:db8::10:7 | Default | UDP | -| mgt | 2001:db8::30:7 | 100, 200 | TCP | -| mgt | 2001:db8::40:7 | 300, 400 | UDP | -| vrf_with_no_source_interface | 1.2.3.4 | Default | UDP | -| vrf_with_no_source_interface | 2001:db8::1:2:3:4 | Default | UDP | - -| Facility | Severity | -| -------- | -------- | -| AAA | warnings | -| ACL | critical | -| BGP | 0 | - -#### Logging Servers and Features Device Configuration - -```eos -! -logging event storm-control discards global -logging event storm-control discards interval 10 -! -logging event congestion-drops interval 10 -! -logging repeat-messages -logging buffered 1000000 warnings -no logging trap -logging console errors -logging synchronous level critical -logging host 20.20.20.7 -logging host 50.50.50.7 100 200 protocol tcp -logging host 60.60.60.7 100 200 -logging host 2001:db8::20:7 -logging host 2001:db8::50:7 100 200 protocol tcp -logging host 2001:db8::60:7 100 200 -logging vrf mgt host 10.10.10.7 -logging vrf mgt host 30.30.30.7 100 200 protocol tcp -logging vrf mgt host 40.40.40.7 300 400 -logging vrf mgt host 2001:db8::10:7 -logging vrf mgt host 2001:db8::30:7 100 200 protocol tcp -logging vrf mgt host 2001:db8::40:7 300 400 -logging vrf vrf_with_no_source_interface host 1.2.3.4 -logging vrf vrf_with_no_source_interface host 2001:db8::1:2:3:4 -logging format timestamp traditional year timezone -logging format rfc5424 -logging source-interface Loopback0 -logging vrf mgt source-interface Management0 -! -logging level AAA warnings -logging level ACL critical -logging level BGP 0 -! -no logging event link-status global -``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host1.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host1.cfg index 3ff39986fad..7f0ea8a15e5 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host1.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host1.cfg @@ -29,6 +29,9 @@ terminal width 1000 alias wr copy running-config startup-config alias siib show ip interface brief +! +logging event storm-control discards global +logging event storm-control discards interval 10 ! daemon ocprometheus exec /usr/bin/ocprometheus -config /usr/bin/ocprometheus.yml -addr localhost:6042 @@ -190,6 +193,8 @@ ip igmp snooping proxy ip igmp snooping vlan 23 proxy no ip igmp snooping vlan 25 proxy ! +logging event congestion-drops interval 10 +! load-interval default 25 ! service routing protocols model multi-agent @@ -216,6 +221,37 @@ link tracking group EVPN_MH_ES1 recovery delay 500 link tracking group EVPN_MH_ES2 ! +logging repeat-messages +logging buffered 1000000 warnings +no logging trap +logging console errors +logging synchronous level critical +logging host 20.20.20.7 +logging host 50.50.50.7 100 200 protocol tcp +logging host 60.60.60.7 100 200 +logging host 2001:db8::20:7 +logging host 2001:db8::50:7 100 200 protocol tcp +logging host 2001:db8::60:7 100 200 +logging vrf mgt host 10.10.10.7 +logging vrf mgt host 30.30.30.7 100 200 protocol tcp +logging vrf mgt host 40.40.40.7 300 400 +logging vrf mgt host 2001:db8::10:7 +logging vrf mgt host 2001:db8::30:7 100 200 protocol tcp +logging vrf mgt host 2001:db8::40:7 300 400 +logging vrf vrf_with_no_source_interface host 1.2.3.4 +logging vrf vrf_with_no_source_interface host 2001:db8::1:2:3:4 +logging format timestamp traditional year timezone +logging format rfc5424 +logging source-interface Loopback0 +logging vrf mgt source-interface Management0 +logging policy match match-list molecule discard +! +logging level AAA warnings +logging level ACL critical +logging level BGP 0 +! +no logging event link-status global +! match-list input string molecule 10 match regex ^.*MOLECULE.*$ 20 match regex ^.*TESTING.*$ @@ -3441,6 +3477,22 @@ ip nat synchronization port-range 1024 65535 port-range split disabled ! +ip ftp client source-interface Ethernet10 +ip ftp client source-interface Loopback0 vrf default +ip ftp client source-interface Management0 vrf MGMT +ip http client local-interface Loopback0 vrf default +ip http client local-interface Management0 vrf MGMT +ip http client local-interface Ethernet10 +ip ssh client source-interface Ethernet10 +ip ssh client source-interface Loopback0 vrf default +ip ssh client source-interface Management0 vrf MGMT +ip telnet client source-interface Ethernet10 +ip telnet client source-interface Loopback0 vrf default +ip telnet client source-interface Management0 vrf MGMT +ip tftp client source-interface Ethernet10 +ip tftp client source-interface Loopback0 vrf default +ip tftp client source-interface Management0 vrf MGMT +! ntp authentication-key 1 md5 7 044F0E151B ntp authentication-key 2 md5 7 044F0E151B ntp authentication-key 3 sha1 8a $BYk2Sjahe+D9T7uDgIItSA==$JTw5JOAPcYEo0O2hsvsxFQ==$C7wmpXOo diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host2.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host2.cfg index 41f8a66b126..c80f2fcebce 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host2.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/host2.cfg @@ -12,7 +12,10 @@ ip dhcp relay information option ! ip dhcp snooping ! +no ip igmp snooping no ip igmp snooping fast-leave +no ip igmp snooping vlan 20 +no ip igmp snooping vlan 30 no ip igmp snooping querier ! service routing protocols model ribd @@ -23,6 +26,14 @@ queue-monitor length no queue-monitor length notifying queue-monitor length default threshold 100 ! +no logging repeat-messages +logging buffered 64000 +logging console informational +logging monitor debugging +logging facility syslog +! +logging event link-status global +! monitor server radius probe method status-server ! diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/igmp-snooping.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/igmp-snooping.cfg deleted file mode 100644 index 7630bb0703f..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/igmp-snooping.cfg +++ /dev/null @@ -1,19 +0,0 @@ -! -vlan internal order ascending range 1006 1199 -! -no ip igmp snooping -ip igmp snooping vlan 10 -no ip igmp snooping vlan 20 -no ip igmp snooping vlan 30 -! -vlan 110 - name PR01-DMZ -! -vlan 3010 - name MLAG_iBGP_TENANT_A_PROJECT01 - trunk group LEAF_PEER_L3 -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ip-client-source-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ip-client-source-interfaces.cfg deleted file mode 100644 index 818ee744384..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ip-client-source-interfaces.cfg +++ /dev/null @@ -1,21 +0,0 @@ -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 -! -ip ftp client source-interface Ethernet10 -ip ftp client source-interface Loopback0 vrf default -ip ftp client source-interface Management0 vrf MGMT -ip http client local-interface Loopback0 vrf default -ip http client local-interface Management0 vrf MGMT -ip http client local-interface Ethernet10 -ip ssh client source-interface Ethernet10 -ip ssh client source-interface Loopback0 vrf default -ip ssh client source-interface Management0 vrf MGMT -ip telnet client source-interface Ethernet10 -ip telnet client source-interface Loopback0 vrf default -ip telnet client source-interface Management0 vrf MGMT -ip tftp client source-interface Ethernet10 -ip tftp client source-interface Loopback0 vrf default -ip tftp client source-interface Management0 vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging-match-list.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging-match-list.cfg deleted file mode 100644 index 161111b5346..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging-match-list.cfg +++ /dev/null @@ -1,9 +0,0 @@ -! -logging console informational -logging monitor debugging -logging policy match match-list molecule discard -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging-minimal.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging-minimal.cfg deleted file mode 100644 index f3f3e2ae51d..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging-minimal.cfg +++ /dev/null @@ -1,13 +0,0 @@ -! -no logging repeat-messages -logging buffered 64000 -logging console informational -logging monitor debugging -logging facility syslog -! -logging event link-status global -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging.cfg deleted file mode 100644 index 1110a0650b8..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/logging.cfg +++ /dev/null @@ -1,40 +0,0 @@ -! -logging event storm-control discards global -logging event storm-control discards interval 10 -! -logging event congestion-drops interval 10 -! -logging repeat-messages -logging buffered 1000000 warnings -no logging trap -logging console errors -logging synchronous level critical -logging host 20.20.20.7 -logging host 50.50.50.7 100 200 protocol tcp -logging host 60.60.60.7 100 200 -logging host 2001:db8::20:7 -logging host 2001:db8::50:7 100 200 protocol tcp -logging host 2001:db8::60:7 100 200 -logging vrf mgt host 10.10.10.7 -logging vrf mgt host 30.30.30.7 100 200 protocol tcp -logging vrf mgt host 40.40.40.7 300 400 -logging vrf mgt host 2001:db8::10:7 -logging vrf mgt host 2001:db8::30:7 100 200 protocol tcp -logging vrf mgt host 2001:db8::40:7 300 400 -logging vrf vrf_with_no_source_interface host 1.2.3.4 -logging vrf vrf_with_no_source_interface host 2001:db8::1:2:3:4 -logging format timestamp traditional year timezone -logging format rfc5424 -logging source-interface Loopback0 -logging vrf mgt source-interface Management0 -! -logging level AAA warnings -logging level ACL critical -logging level BGP 0 -! -no logging event link-status global -! -interface Management1 - description OOB_MANAGEMENT - vrf MGMT - ip address 10.73.255.122/24 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-ftp-client-source-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-ftp-client-source-interfaces.yml new file mode 100644 index 00000000000..f2b43bf656c --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-ftp-client-source-interfaces.yml @@ -0,0 +1,9 @@ +--- +## IP FTP CLIENT SOURCE INTERFACES ## + +ip_ftp_client_source_interfaces: + - name: Loopback0 + vrf: default + - name: Management0 + vrf: MGMT + - name: Ethernet10 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-http-client-source-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-http-client-source-interfaces.yml new file mode 100644 index 00000000000..f0ef9e14edc --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-http-client-source-interfaces.yml @@ -0,0 +1,10 @@ +--- +### IP HTTP Client Source Interface ### + +ip_http_client_source_interfaces: + - vrf: default + name: Loopback0 + - vrf: MGMT + name: Management0 + - vrf: + name: Ethernet10 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-igmp-snooping-enable.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-igmp-snooping.yml similarity index 100% rename from ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-igmp-snooping-enable.yml rename to ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-igmp-snooping.yml diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-ssh-client-source-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-ssh-client-source-interfaces.yml new file mode 100644 index 00000000000..ed82a216fe7 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-ssh-client-source-interfaces.yml @@ -0,0 +1,9 @@ +--- +### IP SSH Client Source Interface ### + +ip_ssh_client_source_interfaces: + - vrf: default + name: Loopback0 + - vrf: MGMT + name: manaGement0 + - name: ethernet10 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-telnet-client-source-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-telnet-client-source-interfaces.yml new file mode 100644 index 00000000000..b20fef2cc19 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-telnet-client-source-interfaces.yml @@ -0,0 +1,9 @@ +--- +## IP TELNET CLIENT SOURCE INTERFACES ## + +ip_telnet_client_source_interfaces: + - name: Loopback0 + vrf: default + - name: Management0 + vrf: MGMT + - name: Ethernet10 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-tftp-client-source-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-tftp-client-source-interfaces.yml new file mode 100644 index 00000000000..15a7991b385 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/ip-tftp-client-source-interfaces.yml @@ -0,0 +1,9 @@ +--- +## IP TFTP CLIENT SOURCE INTERFACES ## + +ip_tftp_client_source_interfaces: + - name: Loopback0 + vrf: default + - name: Management0 + vrf: MGMT + - name: Ethernet10 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/logging.yml similarity index 95% rename from ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging.yml rename to ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/logging.yml index 26d61019fa8..cedef27c206 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host1/logging.yml @@ -81,3 +81,8 @@ logging: severity: warnings - facility: ACL severity: critical + policy: + match: + match_lists: + - name: molecule + action: discard diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/ip-igmp-snooping-enable.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/ip-igmp-snooping-enable.yml deleted file mode 100644 index dbb3d5951f2..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/ip-igmp-snooping-enable.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -### IGMP Snooping Enabled - -ip_igmp_snooping: - fast_leave: false - querier: - enabled: false - proxy: false diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/ip-igmp-snooping.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/ip-igmp-snooping.yml new file mode 100644 index 00000000000..46c14afc3e4 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/ip-igmp-snooping.yml @@ -0,0 +1,14 @@ +--- +### IGMP Snooping Disabled + +ip_igmp_snooping: + globally_enabled: false + fast_leave: false + querier: + enabled: false + proxy: false + vlans: + - id: 20 + enabled: false + - id: 30 + enabled: false diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging-minimal.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/logging.yml similarity index 100% rename from ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging-minimal.yml rename to ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/host2/logging.yml diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/igmp-snooping.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/igmp-snooping.yml deleted file mode 100644 index 56f6bc67452..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/igmp-snooping.yml +++ /dev/null @@ -1,28 +0,0 @@ -### IGMP snooping - -ip_igmp_snooping: - globally_enabled: false - vlans: - - id: 10 - enabled: true - - id: 20 - enabled: false - - id: 30 - enabled: false - -vlan_internal_order: - allocation: ascending - range: - beginning: 1006 - ending: 1199 - -### VLANs ### -vlans: - - id: 110 - tenant: Tenant_A - name: PR01-DMZ - - id: 3010 - tenant: Tenant_A - name: MLAG_iBGP_TENANT_A_PROJECT01 - trunk_groups: - - LEAF_PEER_L3 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ip-client-source-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ip-client-source-interfaces.yml deleted file mode 100644 index 6b0e09f72c9..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ip-client-source-interfaces.yml +++ /dev/null @@ -1,45 +0,0 @@ -## IP FTP CLIENT SOURCE INTERFACES ## - -ip_ftp_client_source_interfaces: - - name: Loopback0 - vrf: default - - name: Management0 - vrf: MGMT - - name: Ethernet10 - -### IP HTTP Client Source Interface ### - -ip_http_client_source_interfaces: - - vrf: default - name: Loopback0 - - vrf: MGMT - name: Management0 - - vrf: - name: Ethernet10 - -### IP SSH Client Source Interface ### - -ip_ssh_client_source_interfaces: - - vrf: default - name: Loopback0 - - vrf: MGMT - name: manaGement0 - - name: ethernet10 - -## IP TELNET CLIENT SOURCE INTERFACES ## - -ip_telnet_client_source_interfaces: - - name: Loopback0 - vrf: default - - name: Management0 - vrf: MGMT - - name: Ethernet10 - -## IP TFTP CLIENT SOURCE INTERFACES ## - -ip_tftp_client_source_interfaces: - - name: Loopback0 - vrf: default - - name: Management0 - vrf: MGMT - - name: Ethernet10 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging-match-list.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging-match-list.yml deleted file mode 100644 index 03315d7e8c6..00000000000 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/logging-match-list.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -logging: - console: informational - monitor: debugging - policy: - match: - match_lists: - - name: molecule - action: discard diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.yml index 330141633a1..cb6cf6b13d5 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/hosts.yml @@ -23,16 +23,11 @@ test_hosts: hardware-counter: hardware: hide-passwords: - igmp-snooping: interface-defaults: ip-routing: ip-routing-fib: - ip-client-source-interfaces: l2-protocol-forwarding: lldp: - logging-match-list: - logging-minimal: - logging: management-accounts: management-api-http: management-cvx: From 1d491fc19039b216f59ae9efeda8ae2823c27e57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 09:28:46 +0100 Subject: [PATCH 2/9] Bump(requirements): Bump ruff from 0.7.3 to 0.7.4 in /ansible_collections/arista/avd (#4737) --- ansible_collections/arista/avd/requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible_collections/arista/avd/requirements-dev.txt b/ansible_collections/arista/avd/requirements-dev.txt index e8d99ae1878..facb4fc9e2e 100644 --- a/ansible_collections/arista/avd/requirements-dev.txt +++ b/ansible_collections/arista/avd/requirements-dev.txt @@ -22,7 +22,7 @@ pylint>=3.2.6 pre-commit>=3.2.0 pre-commit-hooks>=3.3.0 referencing>=0.35.0 -ruff==0.7.3 +ruff==0.7.4 tox treelib>=1.5.5 twine From d226d58d0c93c5a4d8ec7a59596e1a614b8dc729 Mon Sep 17 00:00:00 2001 From: Claus Holbech Date: Mon, 18 Nov 2024 15:31:49 +0100 Subject: [PATCH 3/9] Fix(eos_designs): Always output interface access_vlan as int in structured_config (#4738) --- .../structured_configs/dc1-leaf1c.yml | 2 +- .../structured_configs/dc1-leaf2c.yml | 2 +- .../structured_configs/dc2-leaf1c.yml | 2 +- .../structured_configs/dc2-leaf2c.yml | 2 +- .../intended/structured_configs/LEAF1.yml | 2 +- .../intended/structured_configs/LEAF2.yml | 2 +- .../intended/structured_configs/LEAF3.yml | 2 +- .../intended/structured_configs/LEAF4.yml | 2 +- .../structured_configs/dc1-leaf1c.yml | 2 +- .../structured_configs/dc1-leaf2c.yml | 2 +- .../structured_configs/DC1-LEAF1A.yml | 2 +- .../intended/structured_configs/BGP-LEAF1.yml | 4 +- .../intended/structured_configs/BGP-LEAF2.yml | 4 +- .../structured_configs/ISIS-SPINE1.yml | 2 +- .../structured_configs/L2ONLY-LEAF1.yml | 4 +- .../structured_configs/L2ONLY-LEAF2.yml | 4 +- .../structured_configs/OSPF-LEAF1.yml | 4 +- .../structured_configs/OSPF-LEAF2.yml | 4 +- .../structured_configs/DC1-POD1-LEAF2B.yml | 8 +- .../structured_configs/DC1.POD1.LEAF2A.yml | 8 +- ...endpoints-invalid-access-vlan-ethernet.yml | 20 ++++ ...oints-invalid-access-vlan-port-channel.yml | 22 ++++ .../inventory/hosts.yml | 2 + .../structured_configs/DC1-LEAF1A.yml | 2 +- .../structured_configs/DC1-LEAF2A.yml | 4 +- .../structured_configs/DC1-LEAF2B.yml | 4 +- .../intended/structured_configs/DC1-SVC3A.yml | 26 ++--- .../intended/structured_configs/DC1-SVC3B.yml | 24 ++-- .../intended/structured_configs/MH-LEAF1A.yml | 8 +- .../intended/structured_configs/MH-LEAF1B.yml | 8 +- .../intended/structured_configs/MH-LEAF2A.yml | 2 +- .../flow-tracking-tests-leaf1.yml | 8 +- .../flow-tracking-tests-leaf2.yml | 8 +- .../flow-tracking-tests-leaf3.yml | 6 +- .../flow-tracking-tests-leaf4.yml | 6 +- .../network-ports-tests-2.yml | 104 +++++++++--------- .../network-ports-tests.1.yml | 104 +++++++++--------- .../structured_configs/ptp-tests-leaf1.yml | 8 +- .../structured_configs/ptp-tests-leaf2.yml | 4 +- .../structured_configs/sflow-tests-leaf1.yml | 6 +- .../structured_configs/sflow-tests-leaf3.yml | 6 +- .../structured_configs/sflow-tests-leaf4.yml | 6 +- .../structured_configs/dc1-leaf1a.yml | 4 +- .../structured_configs/dc1-leaf1b.yml | 18 +-- .../structured_configs/dc1-leaf1c.yml | 2 +- .../structured_configs/dc1-leaf2c.yml | 2 +- .../structured_configs/dc2-leaf1c.yml | 2 +- .../structured_configs/dc2-leaf2c.yml | 2 +- .../structured_configs/DC1-LEAF1A.yml | 2 +- .../structured_configs/DC1-LEAF2A.yml | 4 +- .../structured_configs/DC1-LEAF2B.yml | 4 +- .../intended/structured_configs/DC1-SVC3A.yml | 10 +- .../intended/structured_configs/DC1-SVC3B.yml | 10 +- .../structured_configs/DC1-LEAF1A.yml | 2 +- .../structured_configs/DC1-LEAF2A.yml | 2 +- .../structured_configs/DC1-LEAF2B.yml | 2 +- .../intended/structured_configs/DC1-SVC3A.yml | 4 +- .../intended/structured_configs/DC1-SVC3B.yml | 4 +- .../ethernet_interfaces.py | 15 ++- .../port_channel_interfaces.py | 16 ++- 60 files changed, 312 insertions(+), 245 deletions(-) create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/connected-endpoints-invalid-access-vlan-ethernet.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/connected-endpoints-invalid-access-vlan-port-channel.yml diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1c.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1c.yml index 3cb9c58027e..645d77245f2 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1c.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1c.yml @@ -73,7 +73,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2c.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2c.yml index ff4dfad42ff..13ad596fc27 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2c.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2c.yml @@ -73,7 +73,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1c.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1c.yml index 37279e33d8e..0f225e5d1bb 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1c.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1c.yml @@ -73,7 +73,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2c.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2c.yml index 4b6106746b8..898ec587a5c 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2c.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2c.yml @@ -73,7 +73,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF1.yml b/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF1.yml index 159122eb475..c0d4b8cf885 100644 --- a/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF1.yml +++ b/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF1.yml @@ -146,7 +146,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '10' + access_vlan: 10 spanning_tree_portfast: edge mlag_configuration: domain_id: RACK1 diff --git a/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF2.yml b/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF2.yml index 0024fa8e73b..cf3023e1e8d 100644 --- a/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF2.yml +++ b/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF2.yml @@ -146,7 +146,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '20' + access_vlan: 20 spanning_tree_portfast: edge mlag_configuration: domain_id: RACK1 diff --git a/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF3.yml b/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF3.yml index e7eb82a4e15..8a95c4a27b0 100644 --- a/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF3.yml +++ b/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF3.yml @@ -146,7 +146,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '10' + access_vlan: 10 spanning_tree_portfast: edge mlag_configuration: domain_id: RACK2 diff --git a/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF4.yml b/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF4.yml index 2c716ce01a8..8897820d220 100644 --- a/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF4.yml +++ b/ansible_collections/arista/avd/examples/l2ls-fabric/intended/structured_configs/LEAF4.yml @@ -146,7 +146,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '30' + access_vlan: 30 spanning_tree_portfast: edge mlag_configuration: domain_id: RACK2 diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1c.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1c.yml index 54d6582c14b..63b3cd03784 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1c.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1c.yml @@ -94,7 +94,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2c.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2c.yml index fea3c2aeaed..95386c7337d 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2c.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2c.yml @@ -94,7 +94,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF1A.yml index a74c1ca6638..e6a955a8985 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF1A.yml @@ -268,7 +268,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 loopback_interfaces: - name: Loopback0 description: ROUTER_ID diff --git a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/BGP-LEAF1.yml b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/BGP-LEAF1.yml index f5778662033..64822c5e6b7 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/BGP-LEAF1.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/BGP-LEAF1.yml @@ -51,7 +51,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 - name: Ethernet11 peer_type: network_port description: Endpoint @@ -59,7 +59,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 - name: Ethernet12 peer_type: network_port description: IP Phone diff --git a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/BGP-LEAF2.yml b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/BGP-LEAF2.yml index 4a31efc8d64..ca25f60e466 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/BGP-LEAF2.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/BGP-LEAF2.yml @@ -51,7 +51,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 - name: Ethernet11 peer_type: network_port description: Endpoint @@ -59,7 +59,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 port_channel_interfaces: - name: Port-Channel1 description: L2_BGP_SPINES_Port-Channel2 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/ISIS-SPINE1.yml b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/ISIS-SPINE1.yml index 4e6c8eb3e8b..920bb2c5b7e 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/ISIS-SPINE1.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/ISIS-SPINE1.yml @@ -52,7 +52,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 port_channel_interfaces: - name: Port-Channel1 description: L2_ISIS-LEAF1_Port-Channel1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/L2ONLY-LEAF1.yml b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/L2ONLY-LEAF1.yml index 22a4c830a4d..aced0b39991 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/L2ONLY-LEAF1.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/L2ONLY-LEAF1.yml @@ -51,7 +51,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 - name: Ethernet11 peer_type: network_port description: Endpoint @@ -59,7 +59,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 port_channel_interfaces: - name: Port-Channel1 description: L2_L2ONLY_SPINES_Port-Channel1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/L2ONLY-LEAF2.yml b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/L2ONLY-LEAF2.yml index 158c1cd7da2..985c801e2de 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/L2ONLY-LEAF2.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/L2ONLY-LEAF2.yml @@ -51,7 +51,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 - name: Ethernet11 peer_type: network_port description: Endpoint @@ -59,7 +59,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 port_channel_interfaces: - name: Port-Channel1 description: L2_L2ONLY_SPINES_Port-Channel2 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/OSPF-LEAF1.yml b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/OSPF-LEAF1.yml index aa8699e637d..d90963cedd4 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/OSPF-LEAF1.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/OSPF-LEAF1.yml @@ -51,7 +51,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 - name: Ethernet11 peer_type: network_port description: Endpoint @@ -59,7 +59,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 port_channel_interfaces: - name: Port-Channel1 description: L2_OSPF_SPINES_Port-Channel1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/OSPF-LEAF2.yml b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/OSPF-LEAF2.yml index a8fc759cf82..b52d7f639f2 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/OSPF-LEAF2.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-l2ls/intended/structured_configs/OSPF-LEAF2.yml @@ -51,7 +51,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 - name: Ethernet11 peer_type: network_port description: Endpoint @@ -59,7 +59,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 port_channel_interfaces: - name: Port-Channel1 description: L2_OSPF_SPINES_Port-Channel2 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml index e7ef7e974be..f26c99dc6ab 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml @@ -512,7 +512,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 16 - name: Port-Channel17 description: Set using structured_config on server adapter port-channel @@ -521,7 +521,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 17 - name: Port-Channel18 description: PortChannel @@ -537,7 +537,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 18 - name: Port-Channel19 description: PortChannel @@ -553,7 +553,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 19 ethernet_interfaces: - name: Ethernet5 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml index de4fff311d1..81d1c49d535 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml @@ -472,7 +472,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 16 - name: Port-Channel17 description: Set using structured_config on server adapter port-channel @@ -481,7 +481,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 17 - name: Port-Channel18 description: PortChannel @@ -497,7 +497,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 18 - name: Port-Channel19 description: PortChannel @@ -513,7 +513,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 19 ethernet_interfaces: - name: Ethernet5 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/connected-endpoints-invalid-access-vlan-ethernet.yml b/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/connected-endpoints-invalid-access-vlan-ethernet.yml new file mode 100644 index 00000000000..48c052ff6ba --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/connected-endpoints-invalid-access-vlan-ethernet.yml @@ -0,0 +1,20 @@ +loopback_ipv4_pool: 192.168.0.0/24 + +type: l2leaf +l2leaf: + defaults: + nodes: + - name: connected-endpoints-invalid-access-vlan-ethernet + +servers: + # port-channel provide physical and individual port-channel descriptions + - name: OLD_SW-1/7 + adapters: + - switches: [connected-endpoints-invalid-access-vlan-ethernet] + switch_ports: [Ethernet9] + mode: access + vlans: 1-2 + +expected_error_message: >- + Adapter 'vlans' value must be a single vlan ID when mode is 'access' or 'dot1q-tunnel'. + Got 1-2 for interface Ethernet9. diff --git a/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/connected-endpoints-invalid-access-vlan-port-channel.yml b/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/connected-endpoints-invalid-access-vlan-port-channel.yml new file mode 100644 index 00000000000..440de88e960 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/connected-endpoints-invalid-access-vlan-port-channel.yml @@ -0,0 +1,22 @@ +loopback_ipv4_pool: 192.168.0.0/24 + +type: l2leaf +l2leaf: + defaults: + nodes: + - name: connected-endpoints-invalid-access-vlan-port-channel + +servers: + # port-channel provide physical and individual port-channel descriptions + - name: OLD_SW-1/7 + adapters: + - switches: [connected-endpoints-invalid-access-vlan-port-channel] + switch_ports: [Ethernet9] + mode: access + vlans: 1-2 + port_channel: + mode: "active" + +expected_error_message: >- + Adapter 'vlans' value must be a single vlan ID when mode is 'access' or 'dot1q-tunnel'. + Got 1-2 for interface Port-Channel9. diff --git a/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/hosts.yml b/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/hosts.yml index 219b33c3977..82134b2f75e 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/hosts.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/hosts.yml @@ -73,6 +73,8 @@ all: connected-endpoints-monitor-session-connected-endpoint-acl: connected-endpoints-monitor-session-network-port-acl: connected-endpoints-monitor-sessions-mismatch-direction: + connected-endpoints-invalid-access-vlan-ethernet: + connected-endpoints-invalid-access-vlan-port-channel: duplicate-vlans-l2vlans: duplicate-vlans-svi-id: duplicate-vrfs-duplicate-svi-name-conflict: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml index cf0d92e6593..f007b9b5a94 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml @@ -363,7 +363,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet8 peer: PHONE01_untagged peer_interface: Eth0 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml index 6f99f37bbb6..db8a5b26aa0 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml @@ -745,7 +745,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet26 peer: PHONE03_port_channel peer_interface: Eth0 @@ -834,7 +834,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 spanning_tree_bpdufilter: enabled spanning_tree_bpduguard: enabled - name: Port-Channel12 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml index 65b7b10449c..7da0e54ed29 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml @@ -688,7 +688,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet26 peer: PHONE03_port_channel peer_interface: Eth1 @@ -777,7 +777,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 spanning_tree_bpdufilter: enabled spanning_tree_bpduguard: enabled - name: Port-Channel12 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml index 3cfe854346c..9e9ad2b98a5 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml @@ -1086,7 +1086,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 22 - name: Port-Channel23 description: server16_port_channel_with_disabled_port_channel_server16_port_channel_with_disabled_port_channel @@ -1094,7 +1094,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 23 - name: Port-Channel24 description: server17_port_channel_with_disabled_phy_and_po_interfaces_server17_port_channel_with_disabled_phy_and_po_interfaces @@ -1102,7 +1102,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 24 - name: Port-Channel27 description: server18_monitoring_session_source_po_server18_monitoring_session_source_po @@ -1110,7 +1110,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 27 - name: Port-Channel42 description: server21_monitoring_session_destination_po_server21_monitoring_session_destination_po @@ -1118,7 +1118,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 42 - name: Port-Channel1291 description: SERVER_server22_port_channel_with_custom_id_server22_port_channel_with_custom_id @@ -1126,7 +1126,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 1291 - name: Port-Channel31 description: server24_port_channel_lacp_timer_profile_server24_port_channel_with_lacp_timer @@ -1164,7 +1164,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 43 ethernet_interfaces: - name: Ethernet53/1 @@ -1330,7 +1330,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: disabled spanning_tree_bpduguard: 'True' @@ -1378,7 +1378,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: disabled spanning_tree_bpduguard: 'True' @@ -1437,7 +1437,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet21 peer: server14_explicitly_enabled_interfaces peer_interface: Eth1 @@ -1448,7 +1448,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet22 peer: server15_port_channel_with_disabled_phy_interfaces peer_interface: Eth1 @@ -1489,7 +1489,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet27 peer: server18_monitoring_session_source_po peer_interface: Eth3 @@ -1510,7 +1510,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet26 peer: server19_monitoring_session_destination_phys peer_interface: Eth1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml index 552f4f9aaba..70a38434c6d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml @@ -1074,7 +1074,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 22 - name: Port-Channel23 description: server16_port_channel_with_disabled_port_channel_server16_port_channel_with_disabled_port_channel @@ -1082,7 +1082,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 23 - name: Port-Channel24 description: server17_port_channel_with_disabled_phy_and_po_interfaces_server17_port_channel_with_disabled_phy_and_po_interfaces @@ -1090,7 +1090,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 24 - name: Port-Channel27 description: server18_monitoring_session_source_po_server18_monitoring_session_source_po @@ -1098,7 +1098,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 27 - name: Port-Channel42 description: server21_monitoring_session_destination_po_server21_monitoring_session_destination_po @@ -1106,7 +1106,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 42 - name: Port-Channel1291 description: SERVER_server22_port_channel_with_custom_id_server22_port_channel_with_custom_id @@ -1114,7 +1114,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 1291 - name: Port-Channel31 description: server24_port_channel_lacp_timer_profile_server24_port_channel_with_lacp_timer @@ -1152,7 +1152,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 43 ethernet_interfaces: - name: Ethernet53/1 @@ -1308,7 +1308,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: disabled spanning_tree_bpduguard: 'True' @@ -1356,7 +1356,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: disabled spanning_tree_bpduguard: 'True' @@ -1415,7 +1415,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet21 peer: server14_explicitly_enabled_interfaces peer_interface: Eth2 @@ -1426,7 +1426,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet22 peer: server15_port_channel_with_disabled_phy_interfaces peer_interface: Eth2 @@ -1467,7 +1467,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet27 peer: server18_monitoring_session_source_po peer_interface: Eth4 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml index e2d74d788a7..c48f58e3677 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml @@ -443,7 +443,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 evpn_ethernet_segment: identifier: 0000:0000:0001:1010:1010 route_target: 00:01:10:10:10:10 @@ -457,7 +457,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 evpn_ethernet_segment: identifier: 0000:0000:fc87:ae24:2cb3 route_target: fc:87:ae:24:2c:b3 @@ -471,7 +471,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 evpn_ethernet_segment: identifier: 0000:0000:29cc:4043:0a29 route_target: 29:cc:40:43:0a:29 @@ -485,7 +485,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 evpn_ethernet_segment: identifier: 0000:0000:010a:010a:010a route_target: 01:0a:01:0a:01:0a diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml index f0c1c7a0fcf..206791a959b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml @@ -443,7 +443,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 evpn_ethernet_segment: identifier: 0000:0000:0001:1010:1010 route_target: 00:01:10:10:10:10 @@ -457,7 +457,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 evpn_ethernet_segment: identifier: 0000:0000:fc87:ae24:2cb3 route_target: fc:87:ae:24:2c:b3 @@ -471,7 +471,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 evpn_ethernet_segment: identifier: 0000:0000:29cc:4043:0a29 route_target: 29:cc:40:43:0a:29 @@ -485,7 +485,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 evpn_ethernet_segment: identifier: 0000:0000:010a:010a:010a route_target: 01:0a:01:0a:01:0a diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml index 34297d2f181..2e541469e69 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml @@ -229,7 +229,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '310' + access_vlan: 310 link_tracking_groups: - name: Eth-conn-to-router direction: downstream diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf1.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf1.yml index e096e4d4051..90ed4585ab2 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf1.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf1.yml @@ -189,7 +189,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 flow_tracker: hardware: FLOW-TRACKER-3 - name: Ethernet11 @@ -201,7 +201,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 - name: Ethernet12 peer: single-interface-no-definition peer_interface: eth12 @@ -211,7 +211,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 flow_tracker: hardware: FLOW-TRACKER - name: Ethernet13 @@ -223,7 +223,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 flow_tracker: hardware: FLOW-TRACKER loopback_interfaces: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf2.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf2.yml index f4a71f47a4b..d591713857d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf2.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf2.yml @@ -183,7 +183,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 - name: Ethernet11 peer: single-interface-false peer_interface: eth12 @@ -193,7 +193,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 - name: Ethernet12 peer: single-interface-no-definition peer_interface: eth13 @@ -203,7 +203,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 flow_tracker: sampled: FLOW-TRACKER-3 - name: Ethernet13 @@ -215,7 +215,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 loopback_interfaces: - name: Loopback0 description: ROUTER_ID diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf3.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf3.yml index 6aa41ef11cc..45b4bbe6c63 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf3.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf3.yml @@ -238,7 +238,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 14 - name: Port-Channel15 @@ -249,7 +249,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 15 - name: Port-Channel16 @@ -258,7 +258,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 16 ethernet_interfaces: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf4.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf4.yml index cff33ea1ad0..7b9adefe184 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf4.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/flow-tracking-tests-leaf4.yml @@ -238,7 +238,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 14 - name: Port-Channel15 @@ -249,7 +249,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 15 - name: Port-Channel16 @@ -258,7 +258,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 16 ethernet_interfaces: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/network-ports-tests-2.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/network-ports-tests-2.yml index 93f1fb3ca16..7459a80d68f 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/network-ports-tests-2.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/network-ports-tests-2.yml @@ -60,7 +60,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '101' + access_vlan: 101 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled mlag: 1 @@ -70,7 +70,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '101' + access_vlan: 101 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled mlag: 2 @@ -127,7 +127,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet4 @@ -139,7 +139,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/1 @@ -151,7 +151,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/2 @@ -163,7 +163,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/3 @@ -175,7 +175,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/4 @@ -187,7 +187,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/5 @@ -199,7 +199,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/6 @@ -211,7 +211,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/7 @@ -223,7 +223,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/8 @@ -235,7 +235,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/9 @@ -247,7 +247,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/10 @@ -259,7 +259,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/11 @@ -271,7 +271,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/12 @@ -283,7 +283,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/13 @@ -295,7 +295,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/14 @@ -307,7 +307,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/15 @@ -319,7 +319,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/16 @@ -331,7 +331,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/17 @@ -343,7 +343,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/18 @@ -355,7 +355,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/19 @@ -367,7 +367,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/20 @@ -379,7 +379,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/21 @@ -391,7 +391,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/22 @@ -403,7 +403,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/23 @@ -415,7 +415,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/24 @@ -427,7 +427,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/25 @@ -439,7 +439,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/26 @@ -451,7 +451,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/27 @@ -463,7 +463,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/28 @@ -475,7 +475,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/29 @@ -487,7 +487,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/30 @@ -499,7 +499,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/31 @@ -511,7 +511,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/32 @@ -523,7 +523,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/33 @@ -535,7 +535,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/34 @@ -547,7 +547,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/35 @@ -559,7 +559,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/36 @@ -571,7 +571,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/37 @@ -583,7 +583,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/38 @@ -595,7 +595,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/39 @@ -607,7 +607,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/40 @@ -619,7 +619,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/41 @@ -631,7 +631,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/42 @@ -643,7 +643,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/43 @@ -655,7 +655,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/44 @@ -667,7 +667,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/45 @@ -679,7 +679,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/46 @@ -691,7 +691,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/47 @@ -703,7 +703,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/48 @@ -715,7 +715,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet11 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/network-ports-tests.1.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/network-ports-tests.1.yml index ef92ecdd31a..4629462b53f 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/network-ports-tests.1.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/network-ports-tests.1.yml @@ -76,7 +76,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2 @@ -88,7 +88,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet3 @@ -100,7 +100,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet4 @@ -112,7 +112,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/1 @@ -124,7 +124,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/2 @@ -136,7 +136,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/3 @@ -148,7 +148,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/4 @@ -160,7 +160,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/5 @@ -172,7 +172,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/6 @@ -184,7 +184,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/7 @@ -196,7 +196,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/8 @@ -208,7 +208,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/9 @@ -220,7 +220,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/10 @@ -232,7 +232,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/11 @@ -244,7 +244,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/12 @@ -256,7 +256,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/13 @@ -268,7 +268,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/14 @@ -280,7 +280,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/15 @@ -292,7 +292,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/16 @@ -304,7 +304,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/17 @@ -316,7 +316,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/18 @@ -328,7 +328,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/19 @@ -340,7 +340,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/20 @@ -352,7 +352,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/21 @@ -364,7 +364,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/22 @@ -376,7 +376,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/23 @@ -388,7 +388,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/24 @@ -400,7 +400,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/25 @@ -412,7 +412,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/26 @@ -424,7 +424,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/27 @@ -436,7 +436,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/28 @@ -448,7 +448,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/29 @@ -460,7 +460,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/30 @@ -472,7 +472,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/31 @@ -484,7 +484,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/32 @@ -496,7 +496,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/33 @@ -508,7 +508,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/34 @@ -520,7 +520,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/35 @@ -532,7 +532,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/36 @@ -544,7 +544,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/37 @@ -556,7 +556,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/38 @@ -568,7 +568,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/39 @@ -580,7 +580,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/40 @@ -592,7 +592,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/41 @@ -604,7 +604,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/42 @@ -616,7 +616,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/43 @@ -628,7 +628,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/44 @@ -640,7 +640,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/45 @@ -652,7 +652,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/46 @@ -664,7 +664,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/47 @@ -676,7 +676,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet2/48 @@ -688,7 +688,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '100' + access_vlan: 100 spanning_tree_portfast: edge spanning_tree_bpdufilter: enabled - name: Ethernet5 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/ptp-tests-leaf1.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/ptp-tests-leaf1.yml index ae9869f3e95..ea3eee408f2 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/ptp-tests-leaf1.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/ptp-tests-leaf1.yml @@ -272,7 +272,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 mlag: 6 ethernet_interfaces: - name: Ethernet9 @@ -368,7 +368,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 ptp: announce: interval: 0 @@ -387,7 +387,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge ptp: announce: @@ -417,7 +417,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 ptp: announce: interval: -2 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/ptp-tests-leaf2.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/ptp-tests-leaf2.yml index 15008e45596..7847f4bca1c 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/ptp-tests-leaf2.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/ptp-tests-leaf2.yml @@ -283,7 +283,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 mlag: 6 ethernet_interfaces: - name: Ethernet9 @@ -378,7 +378,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge ptp: announce: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf1.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf1.yml index d9c4c35d511..153cf80dba9 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf1.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf1.yml @@ -150,7 +150,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 sflow: enable: true - name: Ethernet12 @@ -162,7 +162,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 sflow: enable: false - name: Ethernet14 @@ -174,7 +174,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 sflow: enable: true loopback_interfaces: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf3.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf3.yml index 3f2f40eb317..855c177c978 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf3.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf3.yml @@ -204,7 +204,7 @@ port_channel_interfaces: trunk: groups: - MLAG - access_vlan: '11' + access_vlan: 11 shutdown: false sflow: enable: true @@ -240,7 +240,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 13 - name: Port-Channel15 @@ -251,7 +251,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 15 ethernet_interfaces: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf4.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf4.yml index 6b73124c7a6..e17282a01d9 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf4.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/sflow-tests-leaf4.yml @@ -204,7 +204,7 @@ port_channel_interfaces: trunk: groups: - MLAG - access_vlan: '11' + access_vlan: 11 shutdown: false sflow: enable: true @@ -240,7 +240,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 13 - name: Port-Channel15 @@ -251,7 +251,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag: 15 ethernet_interfaces: diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml index f588d000d7f..8e9fe80de5a 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml @@ -454,7 +454,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge - name: Ethernet32 peer: dc1-leaf1-workstation2 @@ -467,7 +467,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge mlag_configuration: domain_id: DC1_L3_LEAF1 diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml index 6a6e8372d07..6d169a4ed46 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml @@ -439,7 +439,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet42 peer_type: network_port @@ -449,7 +449,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet43 peer_type: network_port @@ -459,7 +459,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet44 peer_type: network_port @@ -469,7 +469,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet45 peer_type: network_port @@ -479,7 +479,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet46 peer_type: network_port @@ -489,7 +489,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet47 peer_type: network_port @@ -499,7 +499,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet48 peer_type: network_port @@ -509,7 +509,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet49 peer_type: network_port @@ -519,7 +519,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '50' + access_vlan: 50 spanning_tree_portfast: edge - name: Ethernet5 peer: dc1-leaf1-server1 diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1c.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1c.yml index a9cb5ca03c3..9060e5bade0 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1c.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1c.yml @@ -69,7 +69,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2c.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2c.yml index 362b7328da6..f31f928605d 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2c.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2c.yml @@ -69,7 +69,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1c.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1c.yml index 275044e4823..60b8f4eef49 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1c.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1c.yml @@ -74,7 +74,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2c.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2c.yml index 085cdab2cdf..8dab8b055ad 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2c.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2c.yml @@ -74,7 +74,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '11' + access_vlan: 11 spanning_tree_portfast: edge port_channel_interfaces: - name: Port-Channel1 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF1A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF1A.yml index 975d7d8784d..1bb50aa7e95 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF1A.yml @@ -300,7 +300,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 loopback_interfaces: - name: Loopback0 description: CUSTOM_EVPN_Overlay_Peering_L3LEAF diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml index 3e04d011ef9..8b41c12fe9a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml @@ -494,7 +494,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 port_channel_interfaces: - name: Port-Channel7 description: CUSTOM_DC1-L2LEAF1A_Po1 @@ -535,7 +535,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Port-Channel12 description: CUSTOM_server01_MTU_ADAPTOR_MLAG_PortChanne1 shutdown: false diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml index e74ea33c5e5..d2d26c0bcf4 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml @@ -494,7 +494,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 port_channel_interfaces: - name: Port-Channel7 description: CUSTOM_DC1-L2LEAF1A_Po1 @@ -535,7 +535,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Port-Channel12 description: CUSTOM_server01_MTU_ADAPTOR_MLAG_PortChanne1 shutdown: false diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml index 38d379c7e09..d1cce3d3de3 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml @@ -1033,7 +1033,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 22 ethernet_interfaces: - name: Ethernet5 @@ -1193,7 +1193,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: 'False' spanning_tree_bpduguard: 'True' @@ -1240,7 +1240,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: 'False' spanning_tree_bpduguard: 'True' @@ -1299,7 +1299,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet21 peer: server14_explicitly_enabled_interfaces peer_interface: Eth1 @@ -1310,7 +1310,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet22 peer: server15_port_channel_disabled_interfaces peer_interface: Eth1 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml index 0e0e71b6143..9438a8c4027 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml @@ -1033,7 +1033,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 22 ethernet_interfaces: - name: Ethernet5 @@ -1193,7 +1193,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: 'False' spanning_tree_bpduguard: 'True' @@ -1240,7 +1240,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: 'False' spanning_tree_bpduguard: 'True' @@ -1299,7 +1299,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet21 peer: server14_explicitly_enabled_interfaces peer_interface: Eth2 @@ -1310,7 +1310,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 - name: Ethernet22 peer: server15_port_channel_disabled_interfaces peer_interface: Eth2 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF1A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF1A.yml index 94f1e6fcce9..b6470b16e8e 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF1A.yml @@ -300,7 +300,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 loopback_interfaces: - name: Loopback0 description: ROUTER_ID diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml index 2c7ded4ebb1..6ba483aba93 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml @@ -728,7 +728,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 11 - name: Port-Channel12 description: PortChanne1 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml index 6b0db75d9a7..2ae9db4a3cc 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml @@ -728,7 +728,7 @@ port_channel_interfaces: switchport: enabled: true mode: access - access_vlan: '110' + access_vlan: 110 mlag: 11 - name: Port-Channel12 description: PortChanne1 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml index 40bf4ea5ba6..c3fa250848c 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml @@ -1061,7 +1061,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: 'False' spanning_tree_bpduguard: 'True' @@ -1107,7 +1107,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: 'False' spanning_tree_bpduguard: 'True' diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml index 6eb61278c21..3d13675984a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml @@ -1039,7 +1039,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: 'False' spanning_tree_bpduguard: 'True' @@ -1085,7 +1085,7 @@ ethernet_interfaces: switchport: enabled: true mode: access - access_vlan: '210' + access_vlan: 210 spanning_tree_portfast: network spanning_tree_bpdufilter: 'False' spanning_tree_bpduguard: 'True' diff --git a/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/ethernet_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/ethernet_interfaces.py index bf372a46d6e..73cbcf27e8e 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/ethernet_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/ethernet_interfaces.py @@ -84,6 +84,17 @@ def ethernet_interfaces(self: AvdStructuredConfigConnectedEndpoints) -> list | N def _update_ethernet_interface_cfg( self: AvdStructuredConfigConnectedEndpoints, adapter: dict | ChainMap, ethernet_interface: dict, connected_endpoint: dict ) -> dict: + if (vlans := adapter.get("vlans")) is not None and adapter.get("mode") in ["access", "dot1q-tunnel"]: + try: + # For access ports we use the 'vlans' field (str) as 'access_vlan' (int). Attempting to convert. + vlans = int(vlans) + except ValueError as e: + msg = ( + "Adapter 'vlans' value must be a single vlan ID when mode is 'access' or 'dot1q-tunnel'. " + f"Got {vlans} for interface {ethernet_interface['name']}." + ) + raise AristaAvdInvalidInputsError(msg) from e + ethernet_interface.update( { "mtu": adapter.get("mtu") if self.shared_utils.platform_settings_feature_support_per_interface_mtu else None, @@ -93,12 +104,12 @@ def _update_ethernet_interface_cfg( "enabled": True, "mode": adapter.get("mode"), "trunk": { - "allowed_vlan": adapter.get("vlans") if adapter.get("mode") == "trunk" else None, + "allowed_vlan": vlans if adapter.get("mode") == "trunk" else None, "groups": self._get_adapter_trunk_groups(adapter, connected_endpoint), "native_vlan_tag": adapter.get("native_vlan_tag"), "native_vlan": adapter.get("native_vlan"), }, - "access_vlan": adapter.get("vlans") if adapter.get("mode") in ["access", "dot1q-tunnel"] else None, + "access_vlan": vlans if adapter.get("mode") in ["access", "dot1q-tunnel"] else None, "phone": self._get_adapter_phone(adapter, connected_endpoint), }, "spanning_tree_portfast": adapter.get("spanning_tree_portfast"), diff --git a/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/port_channel_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/port_channel_interfaces.py index 277a73958d0..77459bbab4b 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/port_channel_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/port_channel_interfaces.py @@ -8,6 +8,7 @@ from functools import cached_property from typing import TYPE_CHECKING +from pyavd._errors import AristaAvdInvalidInputsError from pyavd._utils import append_if_not_duplicate, get, short_esi_to_route_target, strip_null_from_data from pyavd.api.interface_descriptions import InterfaceDescriptionData from pyavd.j2filters import range_expand @@ -166,19 +167,30 @@ def _get_port_channel_interface_cfg( port_channel_interface.update({"switchport": {"enabled": False}}) else: # switchport + if (vlans := adapter.get("vlans")) is not None and adapter.get("mode") in ["access", "dot1q-tunnel"]: + try: + # For access ports we use the 'vlans' field (str) as 'access_vlan' (int). Attempting to convert. + vlans = int(vlans) + except ValueError as e: + msg = ( + "Adapter 'vlans' value must be a single vlan ID when mode is 'access' or 'dot1q-tunnel'. " + f"Got {vlans} for interface {port_channel_interface['name']}." + ) + raise AristaAvdInvalidInputsError(msg) from e + port_channel_interface.update( { "switchport": { "enabled": True, "mode": adapter.get("mode"), "trunk": { - "allowed_vlan": adapter.get("vlans") if adapter.get("mode") == "trunk" else None, + "allowed_vlan": vlans if adapter.get("mode") == "trunk" else None, "groups": self._get_adapter_trunk_groups(adapter, connected_endpoint), "native_vlan_tag": adapter.get("native_vlan_tag"), "native_vlan": adapter.get("native_vlan"), }, "phone": self._get_adapter_phone(adapter, connected_endpoint), - "access_vlan": adapter.get("vlans") if adapter.get("mode") in ["access", "dot1q-tunnel"] else None, + "access_vlan": vlans if adapter.get("mode") in ["access", "dot1q-tunnel"] else None, }, "l2_mtu": adapter.get("l2_mtu"), "l2_mru": adapter.get("l2_mru"), From 7bddfd6c090d79af6fe216d369c62bb1e6755571 Mon Sep 17 00:00:00 2001 From: Guillaume Mulocher Date: Mon, 18 Nov 2024 20:59:04 +0100 Subject: [PATCH 4/9] Doc(eos_cli_config_gen): Make the Radius Server documentation visible (#4741) --- .../avd/roles/eos_cli_config_gen/docs/input-variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/input-variables.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/input-variables.md index aaef6188f0a..d4adf950445 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/input-variables.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/input-variables.md @@ -80,10 +80,10 @@ roles/eos_cli_config_gen/docs/tables/ip-tacacs-source-interfaces.md roles/eos_cli_config_gen/docs/tables/local-users.md --8<-- -### Radius servers +### Radius server --8<-- -roles/eos_cli_config_gen/docs/tables/radius-servers.md +roles/eos_cli_config_gen/docs/tables/radius-server.md --8<-- ### Roles From a64df3f756f1501b4ffa993e33f182357ac1e750 Mon Sep 17 00:00:00 2001 From: Claus Holbech Date: Mon, 18 Nov 2024 21:00:13 +0100 Subject: [PATCH 5/9] CI: Minor updates to GitHub workflows (#4740) --- .github/workflows/new-cvp-integration.yml | 14 ++---- .github/workflows/pull-request-management.yml | 49 ++----------------- 2 files changed, 8 insertions(+), 55 deletions(-) diff --git a/.github/workflows/new-cvp-integration.yml b/.github/workflows/new-cvp-integration.yml index d8a18eab32e..89c6402412f 100644 --- a/.github/workflows/new-cvp-integration.yml +++ b/.github/workflows/new-cvp-integration.yml @@ -12,6 +12,8 @@ env: # Apparently it is set in secrets when running with debug ANSIBLE_VERBOSITY: ${{ secrets.ACTIONS_STEP_DEBUG && 3 || 0 }} AVD_NEVER_RUN_FROM_SOURCE: 1 + PY_COLORS: 1 # allows molecule colors to be passed to GitHub Actions + ANSIBLE_FORCE_COLOR: 1 # allows ansible colors to be passed to GitHub Actions jobs: # ----------------------------------------------- # @@ -26,12 +28,8 @@ jobs: avd_scenario: - 'cv_workflow' ansible_version: - - 'ansible-core<2.18.0 --upgrade' + - 'ansible-core<2.19.0 --upgrade' steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - echo "ANSIBLE_FORCE_COLOR=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Run molecule action env: @@ -59,12 +57,8 @@ jobs: avd_scenario: - 'cv_deploy' ansible_version: - - 'ansible-core<2.18.0 --upgrade' + - 'ansible-core<2.19.0 --upgrade' steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - echo "ANSIBLE_FORCE_COLOR=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Run molecule action env: diff --git a/.github/workflows/pull-request-management.yml b/.github/workflows/pull-request-management.yml index 153593e4be0..a7c6dd44601 100644 --- a/.github/workflows/pull-request-management.yml +++ b/.github/workflows/pull-request-management.yml @@ -12,6 +12,8 @@ env: # Apparently it is set in secrets when running with debug ANSIBLE_VERBOSITY: ${{ secrets.ACTIONS_STEP_DEBUG && 3 || 0 }} AVD_NEVER_RUN_FROM_SOURCE: 1 + PY_COLORS: 1 # allows molecule colors to be passed to GitHub Actions + ANSIBLE_FORCE_COLOR: 1 # allows ansible colors to be passed to GitHub Actions jobs: file-changes: @@ -101,10 +103,6 @@ jobs: - "3.12" - "3.13" steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - echo "ANSIBLE_FORCE_COLOR=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Set up Python 3 uses: actions/setup-python@v5 @@ -136,10 +134,6 @@ jobs: needs: [ file-changes ] if: needs.file-changes.outputs.config_gen == 'true' steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - echo "ANSIBLE_FORCE_COLOR=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Run molecule action uses: arista-netdevops-community/action-molecule-avd@v1.8.1 @@ -171,10 +165,6 @@ jobs: needs: [ file-changes ] if: needs.file-changes.outputs.dhcp == 'true' steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - echo "ANSIBLE_FORCE_COLOR=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Run molecule action uses: arista-netdevops-community/action-molecule-avd@v1.8.1 @@ -240,10 +230,6 @@ jobs: needs: [ file-changes ] if: needs.file-changes.outputs.eos_design == 'true' || needs.file-changes.outputs.config_gen == 'true' steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - echo "ANSIBLE_FORCE_COLOR=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Build minimum requirements run: | @@ -285,10 +271,6 @@ jobs: needs: [ file-changes ] if: needs.file-changes.outputs.cloudvision == 'true' steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - echo "ANSIBLE_FORCE_COLOR=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Run molecule action uses: arista-netdevops-community/action-molecule-avd@v1.8.1 @@ -325,10 +307,6 @@ jobs: needs: [ file-changes ] if: needs.file-changes.outputs.eos_design == 'true' || needs.file-changes.outputs.validate_state == 'true' steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - echo "ANSIBLE_FORCE_COLOR=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Run molecule action uses: arista-netdevops-community/action-molecule-avd@v1.8.1 @@ -349,12 +327,7 @@ jobs: name: Run ansible-test sanity validation runs-on: ubuntu-latest needs: [ file-changes ] - # needs: [ molecule_eos_designs, molecule_cloudvision ] - # if: needs.cloudvision.status != 'failed' && needs.molecule_eos_designs.status != 'failed' && needs.file-changes.outputs.plugins == 'true' steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Set up Python 3 uses: actions/setup-python@v5 @@ -363,7 +336,7 @@ jobs: 3.10 3.11 3.12 - # 3.13 - Still waiting for support in ansible-test + 3.13 - name: 'Install Python requirements' run: | pip install "ansible-core<2.19.0" -r .github/requirements-ci.txt --upgrade @@ -377,9 +350,6 @@ jobs: runs-on: ubuntu-latest needs: [ file-changes ] steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Set up Python 3 uses: actions/setup-python@v5 @@ -399,16 +369,13 @@ jobs: runs-on: ubuntu-latest needs: [ file-changes ] steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Set up Python 3 uses: actions/setup-python@v5 with: python-version: | 3.12 - # 3.13 - Still waiting for support in ansible-test + 3.13 - name: 'Install Python requirements' run: | pip install "ansible-core<2.19.0" -r .github/requirements-ci.txt --upgrade @@ -422,9 +389,6 @@ jobs: runs-on: ubuntu-latest needs: [ file-changes ] steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Set up Python 3 uses: actions/setup-python@v5 @@ -449,8 +413,6 @@ jobs: name: Test galaxy-importer runs-on: ubuntu-20.04 # Older version to be compatible with old python env: - PY_COLORS: 1 # allows molecule colors to be passed to GitHub Actions - ANSIBLE_FORCE_COLOR: 1 # allows ansible colors to be passed to GitHub Actions GALAXY_IMPORTER_CONFIG: galaxy-importer/galaxy-importer.cfg steps: - uses: actions/setup-python@v5 @@ -492,9 +454,6 @@ jobs: matrix: python: ["3.10", "3.11", "3.12", "3.13"] steps: - - name: 'Set environment variables' - run: | - echo "PY_COLORS=1" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: Set up Python 3 uses: actions/setup-python@v5 From 7edc69f965778795542ea90e25d607e0f5c1962a Mon Sep 17 00:00:00 2001 From: Claus Holbech Date: Mon, 18 Nov 2024 21:02:51 +0100 Subject: [PATCH 6/9] CI: Add examples to pytest (#4739) Co-authored-by: Guillaume Mulocher --- python-avd/tests/conftest.py | 10 ++++++++++ python-avd/tests/models.py | 17 +++++++++++++++-- .../molecule_scenarios/test_get_avd_facts.py | 6 ++++++ .../test_get_device_config.py | 6 ++++++ .../molecule_scenarios/test_get_device_doc.py | 6 ++++++ .../test_get_device_structured_config.py | 6 ++++++ .../molecule_scenarios/test_validate_inputs.py | 6 ++++++ .../test_validate_structured_config.py | 6 ++++++ 8 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 python-avd/tests/conftest.py diff --git a/python-avd/tests/conftest.py b/python-avd/tests/conftest.py new file mode 100644 index 00000000000..74a76823a99 --- /dev/null +++ b/python-avd/tests/conftest.py @@ -0,0 +1,10 @@ +# Copyright (c) 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 pathlib import Path +from sys import path + +# Since the pyavd and schema_tools code it stored a layer deeper than the repo root, +# we need to add it to the path when running pytest from repo root. +# That is relevant when using pytest extensions in IDE (VSCode) +path.insert(0, str(Path(__file__).parents[1])) diff --git a/python-avd/tests/models.py b/python-avd/tests/models.py index 696c8d063a2..b34e4d84d45 100644 --- a/python-avd/tests/models.py +++ b/python-avd/tests/models.py @@ -21,6 +21,7 @@ REPO_ROOT = Path(__file__).parents[2] MOLECULE_PATH = REPO_ROOT / "ansible_collections/arista/avd/molecule" +EXAMPLE_PATH = REPO_ROOT / "ansible_collections/arista/avd/examples" class MoleculeHost: @@ -86,12 +87,24 @@ def __init__(self, name: str) -> None: for each host found in the inventory. """ self.name = name - self.path = MOLECULE_PATH / name - self._inventory = InventoryManager(loader=DataLoader(), sources=[(self.path / "inventory/hosts.yml").as_posix()]) + if name.startswith("example-"): + # Example paths + self.path = EXAMPLE_PATH / name.removeprefix("example-") + inventory_path = self.path / "inventory.yml" + else: + # Molecule paths + self.path = MOLECULE_PATH / name + inventory_path = self.path / "inventory/hosts.yml" + + self._inventory = InventoryManager(loader=DataLoader(), sources=[inventory_path.as_posix()]) self._vars = VariableManager(loader=DataLoader(), inventory=self._inventory) self.hosts = [] for host in self._inventory.get_hosts(): + if self.name.startswith("example-") and host.name in ["cvp", "cloudvision"]: + # Ignore CVP devices in examples without bloating the example without test groups. + continue if "IGNORE_IN_PYTEST" in [group.name for group in host.groups]: + # Ignore members of the group IGNORE_IN_PYTEST from Molecule scenarios. continue self.hosts.append(MoleculeHost(name=host.name, ansible_host=host, scenario=self)) diff --git a/python-avd/tests/pyavd/molecule_scenarios/test_get_avd_facts.py b/python-avd/tests/pyavd/molecule_scenarios/test_get_avd_facts.py index 55f041c3fd6..7255649b470 100644 --- a/python-avd/tests/pyavd/molecule_scenarios/test_get_avd_facts.py +++ b/python-avd/tests/pyavd/molecule_scenarios/test_get_avd_facts.py @@ -19,6 +19,12 @@ "evpn_underlay_isis_overlay_ibgp", "evpn_underlay_ospf_overlay_ebgp", "evpn_underlay_rfc5549_overlay_ebgp", + "example-campus-fabric", + # TODO: "example-cv-pathfinder", # Work around Ansible vault + "example-dual-dc-l3ls", + "example-isis-ldp-ipvpn", + "example-l2ls-fabric", + "example-single-dc-l3ls", ) def test_get_avd_facts(molecule_scenario: MoleculeScenario) -> None: """Test get_avd_facts.""" diff --git a/python-avd/tests/pyavd/molecule_scenarios/test_get_device_config.py b/python-avd/tests/pyavd/molecule_scenarios/test_get_device_config.py index 233117ed1c3..eb51c5e08b8 100644 --- a/python-avd/tests/pyavd/molecule_scenarios/test_get_device_config.py +++ b/python-avd/tests/pyavd/molecule_scenarios/test_get_device_config.py @@ -22,6 +22,12 @@ "evpn_underlay_isis_overlay_ibgp", "evpn_underlay_ospf_overlay_ebgp", "evpn_underlay_rfc5549_overlay_ebgp", + "example-campus-fabric", + # TODO: "example-cv-pathfinder", # Work around Ansible vault + "example-dual-dc-l3ls", + "example-isis-ldp-ipvpn", + "example-l2ls-fabric", + "example-single-dc-l3ls", ) def test_get_device_config(molecule_host: MoleculeHost) -> None: """Test get_device_config.""" diff --git a/python-avd/tests/pyavd/molecule_scenarios/test_get_device_doc.py b/python-avd/tests/pyavd/molecule_scenarios/test_get_device_doc.py index 8abe7ecaa81..4cb820062ee 100644 --- a/python-avd/tests/pyavd/molecule_scenarios/test_get_device_doc.py +++ b/python-avd/tests/pyavd/molecule_scenarios/test_get_device_doc.py @@ -20,6 +20,12 @@ "evpn_underlay_isis_overlay_ibgp", "evpn_underlay_ospf_overlay_ebgp", "evpn_underlay_rfc5549_overlay_ebgp", + "example-campus-fabric", + # TODO: "example-cv-pathfinder", # Work around Ansible vault + "example-dual-dc-l3ls", + "example-isis-ldp-ipvpn", + "example-l2ls-fabric", + "example-single-dc-l3ls", ) def test_get_device_doc(molecule_host: MoleculeHost) -> None: """Test get_device_config.""" diff --git a/python-avd/tests/pyavd/molecule_scenarios/test_get_device_structured_config.py b/python-avd/tests/pyavd/molecule_scenarios/test_get_device_structured_config.py index b91f3777bbc..d368cc98bb5 100644 --- a/python-avd/tests/pyavd/molecule_scenarios/test_get_device_structured_config.py +++ b/python-avd/tests/pyavd/molecule_scenarios/test_get_device_structured_config.py @@ -19,6 +19,12 @@ "evpn_underlay_isis_overlay_ibgp", "evpn_underlay_ospf_overlay_ebgp", "evpn_underlay_rfc5549_overlay_ebgp", + "example-campus-fabric", + # TODO: "example-cv-pathfinder", # Work around Ansible vault + "example-dual-dc-l3ls", + "example-isis-ldp-ipvpn", + "example-l2ls-fabric", + "example-single-dc-l3ls", ) def test_get_device_structured_config(molecule_host: MoleculeHost) -> None: """Test get_device_structured_config.""" diff --git a/python-avd/tests/pyavd/molecule_scenarios/test_validate_inputs.py b/python-avd/tests/pyavd/molecule_scenarios/test_validate_inputs.py index d725f8efee0..e2541f9c0a7 100644 --- a/python-avd/tests/pyavd/molecule_scenarios/test_validate_inputs.py +++ b/python-avd/tests/pyavd/molecule_scenarios/test_validate_inputs.py @@ -20,6 +20,12 @@ "evpn_underlay_isis_overlay_ibgp", "evpn_underlay_ospf_overlay_ebgp", "evpn_underlay_rfc5549_overlay_ebgp", + "example-campus-fabric", + # TODO: "example-cv-pathfinder", # Work around Ansible vault + "example-dual-dc-l3ls", + "example-isis-ldp-ipvpn", + "example-l2ls-fabric", + "example-single-dc-l3ls", ) def test_validate_inputs_with_valid_inputs(molecule_host: MoleculeHost) -> None: """Test validate_inputs.""" diff --git a/python-avd/tests/pyavd/molecule_scenarios/test_validate_structured_config.py b/python-avd/tests/pyavd/molecule_scenarios/test_validate_structured_config.py index e47b07c50c6..b5b90f11a92 100644 --- a/python-avd/tests/pyavd/molecule_scenarios/test_validate_structured_config.py +++ b/python-avd/tests/pyavd/molecule_scenarios/test_validate_structured_config.py @@ -23,6 +23,12 @@ "evpn_underlay_isis_overlay_ibgp", "evpn_underlay_ospf_overlay_ebgp", "evpn_underlay_rfc5549_overlay_ebgp", + "example-campus-fabric", + # TODO: "example-cv-pathfinder", # Work around Ansible vault + "example-dual-dc-l3ls", + "example-isis-ldp-ipvpn", + "example-l2ls-fabric", + "example-single-dc-l3ls", ) def test_validate_structured_config_with_valid_data(molecule_host: MoleculeHost) -> None: """Test validate_structured_config.""" From 8e342bc15ce23e055d9b34d3fc4eab866e838d9b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 21:26:46 -0500 Subject: [PATCH 7/9] CI: pre-commit autoupdate (#4742) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f7fefdf6a9c..fe1f02e3b15 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -75,7 +75,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.7.3 + rev: v0.7.4 hooks: # Run the linter. - id: ruff From 610826315498963ad427af6df1194ccbd377aed8 Mon Sep 17 00:00:00 2001 From: laxmikantchintakindi <159624484+laxmikantchintakindi@users.noreply.github.com> Date: Tue, 19 Nov 2024 12:46:22 +0530 Subject: [PATCH 8/9] Feat(eos_designs): Add support to enable ISIS authentication at global level (#4102) --- .../intended/configs/MLAG-ISIS-L3LEAF1A.cfg | 141 ++++++++++++++ .../intended/configs/MLAG-ISIS-L3LEAF1B.cfg | 141 ++++++++++++++ .../intended/configs/MLAG-ISIS-SPINE.cfg | 98 ++++++++++ .../intended/configs/l3_edge_isis.cfg | 4 + .../structured_configs/MLAG-ISIS-L3LEAF1A.yml | 179 ++++++++++++++++++ .../structured_configs/MLAG-ISIS-L3LEAF1B.yml | 179 ++++++++++++++++++ .../structured_configs/MLAG-ISIS-SPINE.yml | 123 ++++++++++++ .../structured_configs/l3_edge_isis.yml | 10 + .../inventory/group_vars/MLAG_ISIS_TESTS.yml | 34 ++++ .../inventory/host_vars/MLAG-ISIS-SPINE.yml | 13 ++ .../inventory/host_vars/l3_edge_isis.yml | 2 + .../inventory/hosts.yml | 7 + .../eos_designs/docs/tables/isis-settings.md | 8 + .../schema/eos_designs.schema.yml | 13 ++ ...nderlay_isis_authentication_key.schema.yml | 13 ++ ...derlay_isis_authentication_mode.schema.yml | 16 ++ .../core_interfaces_and_l3_edge/utils.py | 8 +- .../structured_config/mlag/__init__.py | 11 +- .../underlay/ethernet_interfaces.py | 12 +- 19 files changed, 1008 insertions(+), 4 deletions(-) create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-L3LEAF1A.cfg create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-L3LEAF1B.cfg create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-SPINE.cfg create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-L3LEAF1A.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-L3LEAF1B.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-SPINE.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/MLAG_ISIS_TESTS.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/MLAG-ISIS-SPINE.yml create mode 100644 python-avd/pyavd/_eos_designs/schema/schema_fragments/underlay_isis_authentication_key.schema.yml create mode 100644 python-avd/pyavd/_eos_designs/schema/schema_fragments/underlay_isis_authentication_mode.schema.yml diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-L3LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-L3LEAF1A.cfg new file mode 100644 index 00000000000..4b36638a911 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-L3LEAF1A.cfg @@ -0,0 +1,141 @@ +! +no enable password +no aaa root +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname MLAG-ISIS-L3LEAF1A +! +no spanning-tree vlan-id 4094 +! +vlan 4094 + name MLAG + trunk group MLAG +! +vrf instance MGMT +! +management api http-commands + protocol https + no shutdown + ! + vrf MGMT + no shutdown +! +interface Port-Channel5 + description MLAG_MLAG-ISIS-L3LEAF1B_Port-Channel5 + no shutdown + switchport mode trunk + switchport trunk group MLAG + switchport +! +interface Ethernet1 + description P2P_MLAG-ISIS-SPINE_Ethernet30 + no shutdown + mtu 9214 + no switchport + ip address 10.10.101.7/31 + isis enable EVPN_UNDERLAY + isis circuit-type level-2 + isis metric 50 + isis network point-to-point + isis authentication mode md5 + isis authentication key 7 $1c$sTNAlR6rKSw= +! +interface Ethernet5 + description MLAG_MLAG-ISIS-L3LEAF1B_Ethernet5 + no shutdown + channel-group 5 mode active +! +interface Ethernet6 + description MLAG_MLAG-ISIS-L3LEAF1B_Ethernet6 + no shutdown + channel-group 5 mode active +! +interface Loopback0 + description ROUTER_ID + no shutdown + ip address 192.168.255.36/32 + isis enable EVPN_UNDERLAY + isis passive +! +interface Loopback1 + description VXLAN_TUNNEL_SOURCE + no shutdown + ip address 192.168.254.36/32 + isis enable EVPN_UNDERLAY + isis passive +! +interface Management1 + description OOB_MANAGEMENT + no shutdown + vrf MGMT + ip address 192.168.201.116/24 +! +interface Vlan4094 + description MLAG + no shutdown + mtu 9214 + no autostate + ip address 10.10.255.6/31 + isis enable EVPN_UNDERLAY + isis metric 50 + isis network point-to-point + isis authentication mode md5 + isis authentication key 7 $1c$sTNAlR6rKSw= +! +interface Vxlan1 + description MLAG-ISIS-L3LEAF1A_VTEP + vxlan source-interface Loopback1 + vxlan virtual-router encapsulation mac-address mlag-system-id + vxlan udp-port 4789 +! +ip routing +no ip routing vrf MGMT +! +mlag configuration + domain-id MLAG_ISIS_L3LEAF1 + local-interface Vlan4094 + peer-address 10.10.255.7 + peer-link Port-Channel5 + reload-delay mlag 300 + reload-delay non-mlag 330 +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65161 + router-id 192.168.255.36 + update wait-install + no bgp default ipv4-unicast + maximum-paths 4 ecmp 4 + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor 10.10.10.1 peer group EVPN-OVERLAY-PEERS + neighbor 10.10.10.1 remote-as 65000 + neighbor 10.10.10.1 description MLAG-ISIS-SPINE_Loopback0 + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate +! +router isis EVPN_UNDERLAY + net 49.0001.1921.6825.5036.00 + router-id ipv4 192.168.255.36 + is-type level-2 + log-adjacency-changes + ! + address-family ipv4 unicast + maximum-paths 4 + ! +! +end diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-L3LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-L3LEAF1B.cfg new file mode 100644 index 00000000000..6d6301e314d --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-L3LEAF1B.cfg @@ -0,0 +1,141 @@ +! +no enable password +no aaa root +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname MLAG-ISIS-L3LEAF1B +! +no spanning-tree vlan-id 4094 +! +vlan 4094 + name MLAG + trunk group MLAG +! +vrf instance MGMT +! +management api http-commands + protocol https + no shutdown + ! + vrf MGMT + no shutdown +! +interface Port-Channel5 + description MLAG_MLAG-ISIS-L3LEAF1A_Port-Channel5 + no shutdown + switchport mode trunk + switchport trunk group MLAG + switchport +! +interface Ethernet1 + description P2P_MLAG-ISIS-SPINE_Ethernet31 + no shutdown + mtu 9214 + no switchport + ip address 10.10.101.9/31 + isis enable EVPN_UNDERLAY + isis circuit-type level-2 + isis metric 50 + isis network point-to-point + isis authentication mode md5 + isis authentication key 7 $1c$sTNAlR6rKSw= +! +interface Ethernet5 + description MLAG_MLAG-ISIS-L3LEAF1A_Ethernet5 + no shutdown + channel-group 5 mode active +! +interface Ethernet6 + description MLAG_MLAG-ISIS-L3LEAF1A_Ethernet6 + no shutdown + channel-group 5 mode active +! +interface Loopback0 + description ROUTER_ID + no shutdown + ip address 192.168.255.37/32 + isis enable EVPN_UNDERLAY + isis passive +! +interface Loopback1 + description VXLAN_TUNNEL_SOURCE + no shutdown + ip address 192.168.254.36/32 + isis enable EVPN_UNDERLAY + isis passive +! +interface Management1 + description OOB_MANAGEMENT + no shutdown + vrf MGMT + ip address 192.168.201.117/24 +! +interface Vlan4094 + description MLAG + no shutdown + mtu 9214 + no autostate + ip address 10.10.255.7/31 + isis enable EVPN_UNDERLAY + isis metric 50 + isis network point-to-point + isis authentication mode md5 + isis authentication key 7 $1c$sTNAlR6rKSw= +! +interface Vxlan1 + description MLAG-ISIS-L3LEAF1B_VTEP + vxlan source-interface Loopback1 + vxlan virtual-router encapsulation mac-address mlag-system-id + vxlan udp-port 4789 +! +ip routing +no ip routing vrf MGMT +! +mlag configuration + domain-id MLAG_ISIS_L3LEAF1 + local-interface Vlan4094 + peer-address 10.10.255.6 + peer-link Port-Channel5 + reload-delay mlag 300 + reload-delay non-mlag 330 +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65161 + router-id 192.168.255.37 + update wait-install + no bgp default ipv4-unicast + maximum-paths 4 ecmp 4 + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor 10.10.10.1 peer group EVPN-OVERLAY-PEERS + neighbor 10.10.10.1 remote-as 65000 + neighbor 10.10.10.1 description MLAG-ISIS-SPINE_Loopback0 + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate +! +router isis EVPN_UNDERLAY + net 49.0001.1921.6825.5037.00 + router-id ipv4 192.168.255.37 + is-type level-2 + log-adjacency-changes + ! + address-family ipv4 unicast + maximum-paths 4 + ! +! +end diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-SPINE.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-SPINE.cfg new file mode 100644 index 00000000000..4ee8816c67f --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MLAG-ISIS-SPINE.cfg @@ -0,0 +1,98 @@ +! +no enable password +no aaa root +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname MLAG-ISIS-SPINE +! +spanning-tree mode none +! +vrf instance MGMT +! +management api http-commands + protocol https + no shutdown + ! + vrf MGMT + no shutdown +! +interface Ethernet30 + description P2P_MLAG-ISIS-L3LEAF1A_Ethernet1 + no shutdown + mtu 9214 + no switchport + ip address 10.10.101.6/31 + isis enable EVPN_UNDERLAY + isis circuit-type level-2 + isis metric 50 + isis network point-to-point + isis authentication mode md5 + isis authentication key 7 $1c$sTNAlR6rKSw= +! +interface Ethernet31 + description P2P_MLAG-ISIS-L3LEAF1B_Ethernet1 + no shutdown + mtu 9214 + no switchport + ip address 10.10.101.8/31 + isis enable EVPN_UNDERLAY + isis circuit-type level-2 + isis metric 50 + isis network point-to-point + isis authentication mode md5 + isis authentication key 7 $1c$sTNAlR6rKSw= +! +interface Loopback0 + description ROUTER_ID + no shutdown + ip address 10.10.10.1/32 + isis enable EVPN_UNDERLAY + isis passive +! +ip routing +no ip routing vrf MGMT +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65000 + router-id 10.10.10.1 + update wait-install + no bgp default ipv4-unicast + maximum-paths 4 ecmp 4 + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS next-hop-unchanged + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor 192.168.255.36 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.36 remote-as 65161 + neighbor 192.168.255.36 description MLAG-ISIS-L3LEAF1A_Loopback0 + neighbor 192.168.255.37 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.37 remote-as 65161 + neighbor 192.168.255.37 description MLAG-ISIS-L3LEAF1B_Loopback0 + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate +! +router isis EVPN_UNDERLAY + net 49.0001.0100.1001.0001.00 + router-id ipv4 10.10.10.1 + is-type level-2 + log-adjacency-changes + ! + address-family ipv4 unicast + maximum-paths 4 + ! +! +end diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/l3_edge_isis.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/l3_edge_isis.cfg index 031699c9115..c1ff76a9de2 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/l3_edge_isis.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/l3_edge_isis.cfg @@ -59,6 +59,8 @@ interface ethernet3 isis metric 50 isis hello padding isis network point-to-point + isis authentication mode text + isis authentication key 7 $1c$sTNAlR6rKSw= ! interface ethernet4 description P2P_peer4_ethernet4 @@ -72,6 +74,8 @@ interface ethernet4 isis metric 50 isis hello padding isis network point-to-point + isis authentication mode text + isis authentication key 7 $1c$sTNAlR6rKSw= ! interface Loopback0 description ROUTER_ID diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-L3LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-L3LEAF1A.yml new file mode 100644 index 00000000000..ea39ff3bd0a --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-L3LEAF1A.yml @@ -0,0 +1,179 @@ +hostname: MLAG-ISIS-L3LEAF1A +is_deployed: true +router_bgp: + as: '65161' + router_id: 192.168.255.36 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + updates: + wait_install: true + peer_groups: + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_ipv4: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: false + neighbors: + - ip_address: 10.10.10.1 + peer_group: EVPN-OVERLAY-PEERS + peer: MLAG-ISIS-SPINE + description: MLAG-ISIS-SPINE_Loopback0 + remote_as: '65000' +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +aaa_root: + disabled: true +config_end: true +enable_password: + disabled: true +transceiver_qsfp_default_mode_4x10: true +vrfs: +- name: MGMT + ip_routing: false +management_interfaces: +- name: Management1 + description: OOB_MANAGEMENT + shutdown: false + vrf: MGMT + ip_address: 192.168.201.116/24 + gateway: null + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true +spanning_tree: + no_spanning_tree_vlan: '4094' +vlans: +- id: 4094 + tenant: system + name: MLAG + trunk_groups: + - MLAG +vlan_interfaces: +- name: Vlan4094 + description: MLAG + shutdown: false + no_autostate: true + mtu: 9214 + ip_address: 10.10.255.6/31 + isis_enable: EVPN_UNDERLAY + isis_metric: 50 + isis_network_point_to_point: true + isis_authentication: + both: + mode: md5 + key: $1c$sTNAlR6rKSw= + key_type: '7' +port_channel_interfaces: +- name: Port-Channel5 + description: MLAG_MLAG-ISIS-L3LEAF1B_Port-Channel5 + switchport: + enabled: true + mode: trunk + trunk: + groups: + - MLAG + shutdown: false +ethernet_interfaces: +- name: Ethernet5 + peer: MLAG-ISIS-L3LEAF1B + peer_interface: Ethernet5 + peer_type: mlag_peer + description: MLAG_MLAG-ISIS-L3LEAF1B_Ethernet5 + shutdown: false + channel_group: + id: 5 + mode: active +- name: Ethernet6 + peer: MLAG-ISIS-L3LEAF1B + peer_interface: Ethernet6 + peer_type: mlag_peer + description: MLAG_MLAG-ISIS-L3LEAF1B_Ethernet6 + shutdown: false + channel_group: + id: 5 + mode: active +- name: Ethernet1 + peer: MLAG-ISIS-SPINE + peer_interface: Ethernet30 + peer_type: spine + description: P2P_MLAG-ISIS-SPINE_Ethernet30 + shutdown: false + mtu: 9214 + switchport: + enabled: false + ip_address: 10.10.101.7/31 + isis_enable: EVPN_UNDERLAY + isis_metric: 50 + isis_network_point_to_point: true + isis_circuit_type: level-2 + isis_authentication: + both: + mode: md5 + key: $1c$sTNAlR6rKSw= + key_type: '7' +mlag_configuration: + domain_id: MLAG_ISIS_L3LEAF1 + local_interface: Vlan4094 + peer_address: 10.10.255.7 + peer_link: Port-Channel5 + reload_delay_mlag: '300' + reload_delay_non_mlag: '330' +loopback_interfaces: +- name: Loopback0 + description: ROUTER_ID + shutdown: false + ip_address: 192.168.255.36/32 + isis_enable: EVPN_UNDERLAY + isis_passive: true +- name: Loopback1 + description: VXLAN_TUNNEL_SOURCE + shutdown: false + ip_address: 192.168.254.36/32 + isis_enable: EVPN_UNDERLAY + isis_passive: true +router_isis: + instance: EVPN_UNDERLAY + log_adjacency_changes: true + net: 49.0001.1921.6825.5036.00 + router_id: 192.168.255.36 + is_type: level-2 + address_family_ipv4: + enabled: true + maximum_paths: 4 +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +ip_igmp_snooping: + globally_enabled: true +vxlan_interface: + vxlan1: + description: MLAG-ISIS-L3LEAF1A_VTEP + vxlan: + udp_port: 4789 + source_interface: Loopback1 + virtual_router_encapsulation_mac_address: mlag-system-id +metadata: + platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-L3LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-L3LEAF1B.yml new file mode 100644 index 00000000000..051f55cb771 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-L3LEAF1B.yml @@ -0,0 +1,179 @@ +hostname: MLAG-ISIS-L3LEAF1B +is_deployed: true +router_bgp: + as: '65161' + router_id: 192.168.255.37 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + updates: + wait_install: true + peer_groups: + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_ipv4: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: false + neighbors: + - ip_address: 10.10.10.1 + peer_group: EVPN-OVERLAY-PEERS + peer: MLAG-ISIS-SPINE + description: MLAG-ISIS-SPINE_Loopback0 + remote_as: '65000' +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +aaa_root: + disabled: true +config_end: true +enable_password: + disabled: true +transceiver_qsfp_default_mode_4x10: true +vrfs: +- name: MGMT + ip_routing: false +management_interfaces: +- name: Management1 + description: OOB_MANAGEMENT + shutdown: false + vrf: MGMT + ip_address: 192.168.201.117/24 + gateway: null + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true +spanning_tree: + no_spanning_tree_vlan: '4094' +vlans: +- id: 4094 + tenant: system + name: MLAG + trunk_groups: + - MLAG +vlan_interfaces: +- name: Vlan4094 + description: MLAG + shutdown: false + no_autostate: true + mtu: 9214 + ip_address: 10.10.255.7/31 + isis_enable: EVPN_UNDERLAY + isis_metric: 50 + isis_network_point_to_point: true + isis_authentication: + both: + mode: md5 + key: $1c$sTNAlR6rKSw= + key_type: '7' +port_channel_interfaces: +- name: Port-Channel5 + description: MLAG_MLAG-ISIS-L3LEAF1A_Port-Channel5 + switchport: + enabled: true + mode: trunk + trunk: + groups: + - MLAG + shutdown: false +ethernet_interfaces: +- name: Ethernet5 + peer: MLAG-ISIS-L3LEAF1A + peer_interface: Ethernet5 + peer_type: mlag_peer + description: MLAG_MLAG-ISIS-L3LEAF1A_Ethernet5 + shutdown: false + channel_group: + id: 5 + mode: active +- name: Ethernet6 + peer: MLAG-ISIS-L3LEAF1A + peer_interface: Ethernet6 + peer_type: mlag_peer + description: MLAG_MLAG-ISIS-L3LEAF1A_Ethernet6 + shutdown: false + channel_group: + id: 5 + mode: active +- name: Ethernet1 + peer: MLAG-ISIS-SPINE + peer_interface: Ethernet31 + peer_type: spine + description: P2P_MLAG-ISIS-SPINE_Ethernet31 + shutdown: false + mtu: 9214 + switchport: + enabled: false + ip_address: 10.10.101.9/31 + isis_enable: EVPN_UNDERLAY + isis_metric: 50 + isis_network_point_to_point: true + isis_circuit_type: level-2 + isis_authentication: + both: + mode: md5 + key: $1c$sTNAlR6rKSw= + key_type: '7' +mlag_configuration: + domain_id: MLAG_ISIS_L3LEAF1 + local_interface: Vlan4094 + peer_address: 10.10.255.6 + peer_link: Port-Channel5 + reload_delay_mlag: '300' + reload_delay_non_mlag: '330' +loopback_interfaces: +- name: Loopback0 + description: ROUTER_ID + shutdown: false + ip_address: 192.168.255.37/32 + isis_enable: EVPN_UNDERLAY + isis_passive: true +- name: Loopback1 + description: VXLAN_TUNNEL_SOURCE + shutdown: false + ip_address: 192.168.254.36/32 + isis_enable: EVPN_UNDERLAY + isis_passive: true +router_isis: + instance: EVPN_UNDERLAY + log_adjacency_changes: true + net: 49.0001.1921.6825.5037.00 + router_id: 192.168.255.37 + is_type: level-2 + address_family_ipv4: + enabled: true + maximum_paths: 4 +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +ip_igmp_snooping: + globally_enabled: true +vxlan_interface: + vxlan1: + description: MLAG-ISIS-L3LEAF1B_VTEP + vxlan: + udp_port: 4789 + source_interface: Loopback1 + virtual_router_encapsulation_mac_address: mlag-system-id +metadata: + platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-SPINE.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-SPINE.yml new file mode 100644 index 00000000000..4a257751f26 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MLAG-ISIS-SPINE.yml @@ -0,0 +1,123 @@ +hostname: MLAG-ISIS-SPINE +is_deployed: true +router_bgp: + as: '65000' + router_id: 10.10.10.1 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + updates: + wait_install: true + peer_groups: + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + next_hop_unchanged: true + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_ipv4: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: false + neighbors: + - ip_address: 192.168.255.36 + peer_group: EVPN-OVERLAY-PEERS + peer: MLAG-ISIS-L3LEAF1A + description: MLAG-ISIS-L3LEAF1A_Loopback0 + remote_as: '65161' + - ip_address: 192.168.255.37 + peer_group: EVPN-OVERLAY-PEERS + peer: MLAG-ISIS-L3LEAF1B + description: MLAG-ISIS-L3LEAF1B_Loopback0 + remote_as: '65161' +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +aaa_root: + disabled: true +config_end: true +enable_password: + disabled: true +transceiver_qsfp_default_mode_4x10: true +spanning_tree: + mode: none +vrfs: +- name: MGMT + ip_routing: false +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true +ethernet_interfaces: +- name: Ethernet30 + peer: MLAG-ISIS-L3LEAF1A + peer_interface: Ethernet1 + peer_type: l3leaf + description: P2P_MLAG-ISIS-L3LEAF1A_Ethernet1 + shutdown: false + mtu: 9214 + switchport: + enabled: false + ip_address: 10.10.101.6/31 + isis_enable: EVPN_UNDERLAY + isis_metric: 50 + isis_network_point_to_point: true + isis_circuit_type: level-2 + isis_authentication: + both: + mode: md5 + key: $1c$sTNAlR6rKSw= + key_type: '7' +- name: Ethernet31 + peer: MLAG-ISIS-L3LEAF1B + peer_interface: Ethernet1 + peer_type: l3leaf + description: P2P_MLAG-ISIS-L3LEAF1B_Ethernet1 + shutdown: false + mtu: 9214 + switchport: + enabled: false + ip_address: 10.10.101.8/31 + isis_enable: EVPN_UNDERLAY + isis_metric: 50 + isis_network_point_to_point: true + isis_circuit_type: level-2 + isis_authentication: + both: + mode: md5 + key: $1c$sTNAlR6rKSw= + key_type: '7' +loopback_interfaces: +- name: Loopback0 + description: ROUTER_ID + shutdown: false + ip_address: 10.10.10.1/32 + isis_enable: EVPN_UNDERLAY + isis_passive: true +router_isis: + instance: EVPN_UNDERLAY + log_adjacency_changes: true + net: 49.0001.0100.1001.0001.00 + router_id: 10.10.10.1 + is_type: level-2 + address_family_ipv4: + enabled: true + maximum_paths: 4 +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/l3_edge_isis.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/l3_edge_isis.yml index 88f3557bda9..207a4a9a407 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/l3_edge_isis.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/l3_edge_isis.yml @@ -91,6 +91,11 @@ ethernet_interfaces: isis_network_point_to_point: true isis_hello_padding: true isis_circuit_type: level-2 + isis_authentication: + both: + mode: text + key: $1c$sTNAlR6rKSw= + key_type: '7' description: P2P_peer3_ethernet3 - name: ethernet4 peer: peer4 @@ -107,4 +112,9 @@ ethernet_interfaces: isis_network_point_to_point: true isis_hello_padding: true isis_circuit_type: level-2 + isis_authentication: + both: + mode: text + key: $1c$sTNAlR6rKSw= + key_type: '7' description: P2P_peer4_ethernet4 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/MLAG_ISIS_TESTS.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/MLAG_ISIS_TESTS.yml new file mode 100644 index 00000000000..e45d5785a55 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/MLAG_ISIS_TESTS.yml @@ -0,0 +1,34 @@ +--- +underlay_routing_protocol: isis +underlay_isis_authentication_mode: md5 +underlay_isis_authentication_key: $1c$sTNAlR6rKSw= + +type: l3leaf + +l3leaf: + defaults: + mlag_peer_vlan: 4094 + mlag_peer_l3_vlan: 4094 + mlag_peer_ipv4_pool: 10.10.255.0/24 + uplink_ipv4_pool: 10.10.101.0/24 + loopback_ipv4_pool: 192.168.255.0/24 + loopback_ipv4_offset: 32 + vtep_loopback_ipv4_pool: 192.168.254.0/24 + platform: vEOS-LAB + uplink_switches: ["MLAG-ISIS-SPINE"] + uplink_interfaces: ["Ethernet1"] + node_groups: + - group: MLAG_ISIS_L3LEAF1 + nodes: + - name: MLAG-ISIS-L3LEAF1A + id: 4 + bgp_as: 65161 + mgmt_ip: 192.168.201.116/24 + uplink_switch_interfaces: [Ethernet30] + mlag_interfaces: [Ethernet5, Ethernet6] + - name: MLAG-ISIS-L3LEAF1B + id: 5 + bgp_as: 65161 + mgmt_ip: 192.168.201.117/24 + uplink_switch_interfaces: [Ethernet31] + mlag_interfaces: [Ethernet5, Ethernet6] diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/MLAG-ISIS-SPINE.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/MLAG-ISIS-SPINE.yml new file mode 100644 index 00000000000..6438c7503d5 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/MLAG-ISIS-SPINE.yml @@ -0,0 +1,13 @@ +--- +underlay_routing_protocol: isis +underlay_isis_authentication_mode: md5 +underlay_isis_authentication_key: $1c$sTNAlR6rKSw= + +type: spine + +spine: + nodes: + - name: MLAG-ISIS-SPINE + bgp_as: 65000 + loopback_ipv4_pool: 10.10.10.0/24 + id: 1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/l3_edge_isis.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/l3_edge_isis.yml index 819143c3b5f..4d9c4718363 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/l3_edge_isis.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/l3_edge_isis.yml @@ -1,5 +1,7 @@ underlay_routing_protocol: isis underlay_isis_bfd: true +underlay_isis_authentication_mode: text +underlay_isis_authentication_key: $1c$sTNAlR6rKSw= isis_area_id: "49.0001" type: spine 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 3e2d17e6fbc..abdd40c76a3 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 @@ -54,6 +54,7 @@ all: platform_settings: varpv6: custom-structured-configuration: + MLAG-ISIS-SPINE: OVERRIDE_UPLINK_TYPE: hosts: override_uplink_type-d: @@ -594,3 +595,9 @@ all: hosts: 7010TX-LEAF1: 7010TX-LEAF2: + MLAG_ISIS_TESTS: + children: + MLAG_ISIS_L3LEAF1: + hosts: + MLAG-ISIS-L3LEAF1A: + MLAG-ISIS-L3LEAF1B: diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/isis-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/isis-settings.md index 54efbd73e01..76cd8eed7f5 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/isis-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/isis-settings.md @@ -18,6 +18,8 @@ | [  enabled](## "isis_ti_lfa.enabled") | Boolean | | `False` | | | | [  protection](## "isis_ti_lfa.protection") | String | | | Valid Values:
- link
- node | | | [  local_convergence_delay](## "isis_ti_lfa.local_convergence_delay") | Integer | | `10000` | | Local convergence delay in milliseconds. | + | [underlay_isis_authentication_key](## "underlay_isis_authentication_key") | String | | | | Type-7 encrypted password. | + | [underlay_isis_authentication_mode](## "underlay_isis_authentication_mode") | String | | | Valid Values:
- md5
- text | Underlay ISIS authentication mode. | | [underlay_isis_bfd](## "underlay_isis_bfd") | Boolean | | `False` | | Enable BFD for ISIS on all underlay links. | | [underlay_isis_instance_name](## "underlay_isis_instance_name") | String | | | | Default -> "EVPN_UNDERLAY" for l3ls, "CORE" for mpls. | @@ -48,6 +50,12 @@ # Local convergence delay in milliseconds. local_convergence_delay: + # Type-7 encrypted password. + underlay_isis_authentication_key: + + # Underlay ISIS authentication mode. + underlay_isis_authentication_mode: + # Enable BFD for ISIS on all underlay links. underlay_isis_bfd: diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index 11d2dfe4a2b..53c3e99fee2 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -4268,6 +4268,19 @@ keys: ' type: bool default: false + underlay_isis_authentication_key: + documentation_options: + table: isis-settings + type: str + description: Type-7 encrypted password. + underlay_isis_authentication_mode: + documentation_options: + table: isis-settings + type: str + description: Underlay ISIS authentication mode. + valid_values: + - md5 + - text underlay_isis_bfd: documentation_options: table: isis-settings diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/underlay_isis_authentication_key.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/underlay_isis_authentication_key.schema.yml new file mode 100644 index 00000000000..8455b1a9637 --- /dev/null +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/underlay_isis_authentication_key.schema.yml @@ -0,0 +1,13 @@ +# 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. +# yaml-language-server: $schema=../../../../plugins/plugin_utils/schema/avd_meta_schema.json +# Line above is used by RedHat's YAML Schema vscode extension +# Use Ctrl + Space to get suggestions for every field. Autocomplete will pop up after typing 2 letters. +type: dict +keys: + underlay_isis_authentication_key: + documentation_options: + table: isis-settings + type: str + description: Type-7 encrypted password. diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/underlay_isis_authentication_mode.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/underlay_isis_authentication_mode.schema.yml new file mode 100644 index 00000000000..e256e24acc9 --- /dev/null +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/underlay_isis_authentication_mode.schema.yml @@ -0,0 +1,16 @@ +# 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. +# yaml-language-server: $schema=../../../../plugins/plugin_utils/schema/avd_meta_schema.json +# Line above is used by RedHat's YAML Schema vscode extension +# Use Ctrl + Space to get suggestions for every field. Autocomplete will pop up after typing 2 letters. +type: dict +keys: + underlay_isis_authentication_mode: + documentation_options: + table: isis-settings + type: str + description: Underlay ISIS authentication mode. + valid_values: + - md5 + - text diff --git a/python-avd/pyavd/_eos_designs/structured_config/core_interfaces_and_l3_edge/utils.py b/python-avd/pyavd/_eos_designs/structured_config/core_interfaces_and_l3_edge/utils.py index 16009f159f7..f81576c0faf 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/core_interfaces_and_l3_edge/utils.py +++ b/python-avd/pyavd/_eos_designs/structured_config/core_interfaces_and_l3_edge/utils.py @@ -253,10 +253,14 @@ def _get_common_interface_cfg(self: AvdStructuredConfigCoreInterfacesAndL3Edge, "isis_circuit_type": default(p2p_link.get("isis_circuit_type"), self.shared_utils.isis_default_circuit_type), }, ) - if (isis_authentication_mode := p2p_link.get("isis_authentication_mode")) is not None: + if ( + isis_authentication_mode := default(p2p_link.get("isis_authentication_mode"), get(self._hostvars, "underlay_isis_authentication_mode")) + ) is not None: interface_cfg.setdefault("isis_authentication", {}).setdefault("both", {})["mode"] = isis_authentication_mode - if (isis_authentication_key := p2p_link.get("isis_authentication_key")) is not None: + if ( + isis_authentication_key := default(p2p_link.get("isis_authentication_key"), get(self._hostvars, "underlay_isis_authentication_key")) + ) is not None: interface_cfg.setdefault("isis_authentication", {}).setdefault("both", {}).update( { "key": isis_authentication_key, diff --git a/python-avd/pyavd/_eos_designs/structured_config/mlag/__init__.py b/python-avd/pyavd/_eos_designs/structured_config/mlag/__init__.py index cd2f0669e11..34e0cba7b66 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/mlag/__init__.py +++ b/python-avd/pyavd/_eos_designs/structured_config/mlag/__init__.py @@ -108,9 +108,18 @@ def vlan_interfaces(self) -> list | None: "isis_bfd": get(self._hostvars, "underlay_isis_bfd"), "isis_metric": 50, "isis_network_point_to_point": True, - }, + } ) + if (isis_authentication_mode := get(self._hostvars, "underlay_isis_authentication_mode")) is not None: + l3_cfg.setdefault("isis_authentication", {}).setdefault("both", {})["mode"] = isis_authentication_mode + if (isis_authentication_key := get(self._hostvars, "underlay_isis_authentication_key")) is not None: + l3_cfg.setdefault("isis_authentication", {}).setdefault("both", {}).update( + { + "key": isis_authentication_key, + "key_type": "7", + } + ) if self.shared_utils.underlay_multicast: l3_cfg["pim"] = {"ipv4": {"sparse_mode": True}} diff --git a/python-avd/pyavd/_eos_designs/structured_config/underlay/ethernet_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/underlay/ethernet_interfaces.py index 896941c93d7..2167353f6ac 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/underlay/ethernet_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/underlay/ethernet_interfaces.py @@ -137,8 +137,18 @@ def ethernet_interfaces(self: AvdStructuredConfigUnderlay) -> list | None: "isis_metric": self.shared_utils.isis_default_metric, "isis_network_point_to_point": True, "isis_circuit_type": self.shared_utils.isis_default_circuit_type, - }, + } ) + if (isis_authentication_mode := get(self._hostvars, "underlay_isis_authentication_mode")) is not None: + ethernet_interface.setdefault("isis_authentication", {}).setdefault("both", {})["mode"] = isis_authentication_mode + + if (isis_authentication_key := get(self._hostvars, "underlay_isis_authentication_key")) is not None: + ethernet_interface.setdefault("isis_authentication", {}).setdefault("both", {}).update( + { + "key": isis_authentication_key, + "key_type": "7", + } + ) if link.get("underlay_multicast") is True: ethernet_interface["pim"] = {"ipv4": {"sparse_mode": True}} From 71a101e7f722c855354d09e85578528ad5a368ad Mon Sep 17 00:00:00 2001 From: Carl Buchmann Date: Tue, 19 Nov 2024 09:44:12 -0500 Subject: [PATCH 9/9] Fix(eos_designs): Explicitly extend SVI or L2VLAN to remote EVPN domains (#4736) Co-authored-by: Claus Holbech --- .../intended/configs/evpn_l2_multi_domain.cfg | 336 ++++++++++++ .../evpn_l2_multi_domain.yml | 492 ++++++++++++++++++ .../host_vars/evpn_l2_multi_domain.yml | 111 ++++ .../inventory/hosts.yml | 1 + .../roles/eos_designs/docs/input-variables.md | 5 +- .../docs/tables/evpn-vlan-bundles.md | 4 +- .../network-services-l2vlans-settings.md | 5 + .../network-services-multicast-settings.md | 13 +- .../network-services-vrfs-ospf-settings.md | 8 +- .../tables/network-services-vrfs-settings.md | 5 + .../network-services-vrfs-svis-settings.md | 16 +- .../eos_designs/docs/tables/svi-profiles.md | 16 +- .../schema/eos_designs.schema.yml | 25 +- .../defs_network_services.schema.yml | 9 +- .../schema_fragments/defs_svi.schema.yml | 2 +- .../defs_svi_settings.schema.yml | 6 + .../evpn_vlan_bundles.schema.yml | 2 +- 17 files changed, 1026 insertions(+), 30 deletions(-) create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_l2_multi_domain.cfg create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_l2_multi_domain.yml create mode 100644 ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/evpn_l2_multi_domain.yml diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_l2_multi_domain.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_l2_multi_domain.cfg new file mode 100644 index 00000000000..9130f7e6642 --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_l2_multi_domain.cfg @@ -0,0 +1,336 @@ +! +no enable password +no aaa root +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname evpn_l2_multi_domain +! +vlan 110 + name L2_MULTI_DOMAIN_NEUTRAL +! +vlan 111 + name L2_MULTI_DOMAIN_ENABLED +! +vlan 150 + name L2_MULTI_DOMAIN_NEUTRAL +! +vlan 160 + name L2_MULTI_DOMAIN_NEUTRAL +! +vlan 170 + name L2_MULTI_DOMAIN_DISABLED +! +vlan 180 + name L2_MULTI_DOMAIN_NEUTRAL +! +vlan 190 + name L2_MULTI_DOMAIN_ENABLED +! +vlan 210 + name L2_MULTI_DOMAIN_NEUTRAL +! +vlan 211 + name L2_MULTI_DOMAIN_DISABLED +! +vlan 250 + name L2_MULTI_DOMAIN_NEUTRAL +! +vlan 260 + name L2_MULTI_DOMAIN_NEUTRAL +! +vlan 270 + name L2_MULTI_DOMAIN_ENABLED +! +vlan 280 + name L2_MULTI_DOMAIN_NEUTRAL +! +vlan 290 + name L2_MULTI_DOMAIN_DISABLED +! +vrf instance L2_MULTI_DOMAIN_DISBLED +! +vrf instance L2_MULTI_DOMAIN_ENABLED +! +vrf instance L2_MULTI_DOMAIN_NEUTRAL_1 +! +vrf instance L2_MULTI_DOMAIN_NEUTRAL_2 +! +vrf instance MGMT +! +management api http-commands + protocol https + no shutdown + ! + vrf MGMT + no shutdown +! +interface Loopback0 + description ROUTER_ID + no shutdown + ip address 192.168.255.1/32 +! +interface Loopback1 + description VXLAN_TUNNEL_SOURCE + no shutdown + ip address 192.168.254.1/32 +! +interface Management1 + description OOB_MANAGEMENT + no shutdown + vrf MGMT + ip address 192.168.100.101/24 +! +interface Vlan110 + description L2_MULTI_DOMAIN_NEUTRAL + no shutdown + vrf L2_MULTI_DOMAIN_NEUTRAL_1 + ip address virtual 10.1.10.1/24 +! +interface Vlan111 + description L2_MULTI_DOMAIN_ENABLED + no shutdown + vrf L2_MULTI_DOMAIN_NEUTRAL_1 + ip address virtual 10.1.11.1/24 +! +interface Vlan150 + description L2_MULTI_DOMAIN_NEUTRAL + no shutdown + vrf L2_MULTI_DOMAIN_ENABLED + ip address virtual 10.1.50.1/24 +! +interface Vlan160 + description L2_MULTI_DOMAIN_NEUTRAL + no shutdown + vrf L2_MULTI_DOMAIN_ENABLED + ip address virtual 10.1.60.1/24 +! +interface Vlan170 + description L2_MULTI_DOMAIN_DISABLED + no shutdown + vrf L2_MULTI_DOMAIN_ENABLED + ip address virtual 10.1.70.1/24 +! +interface Vlan210 + description L2_MULTI_DOMAIN_NEUTRAL + no shutdown + vrf L2_MULTI_DOMAIN_NEUTRAL_2 + ip address virtual 10.2.10.1/24 +! +interface Vlan211 + description L2_MULTI_DOMAIN_DISABLED + no shutdown + vrf L2_MULTI_DOMAIN_NEUTRAL_2 + ip address virtual 10.2.11.1/24 +! +interface Vlan250 + description L2_MULTI_DOMAIN_NEUTRAL + no shutdown + vrf L2_MULTI_DOMAIN_DISBLED + ip address virtual 10.2.50.1/24 +! +interface Vlan260 + description L2_MULTI_DOMAIN_NEUTRAL + no shutdown + vrf L2_MULTI_DOMAIN_DISBLED + ip address virtual 10.2.60.1/24 +! +interface Vlan270 + description L2_MULTI_DOMAIN_ENABLED + no shutdown + vrf L2_MULTI_DOMAIN_DISBLED + ip address virtual 10.2.70.1/24 +! +interface Vxlan1 + description evpn_l2_multi_domain_VTEP + vxlan source-interface Loopback1 + vxlan udp-port 4789 + vxlan vlan 110 vni 10110 + vxlan vlan 111 vni 10111 + vxlan vlan 150 vni 10150 + vxlan vlan 160 vni 10160 + vxlan vlan 170 vni 10170 + vxlan vlan 180 vni 10180 + vxlan vlan 190 vni 10190 + vxlan vlan 210 vni 20210 + vxlan vlan 211 vni 20211 + vxlan vlan 250 vni 20250 + vxlan vlan 260 vni 20260 + vxlan vlan 270 vni 20270 + vxlan vlan 280 vni 20280 + vxlan vlan 290 vni 20290 + vxlan vrf L2_MULTI_DOMAIN_DISBLED vni 21 + vxlan vrf L2_MULTI_DOMAIN_ENABLED vni 11 + vxlan vrf L2_MULTI_DOMAIN_NEUTRAL_1 vni 10 + vxlan vrf L2_MULTI_DOMAIN_NEUTRAL_2 vni 20 +! +ip virtual-router mac-address 00:dc:00:00:00:0a +! +ip routing +ip routing vrf L2_MULTI_DOMAIN_DISBLED +ip routing vrf L2_MULTI_DOMAIN_ENABLED +ip routing vrf L2_MULTI_DOMAIN_NEUTRAL_1 +ip routing vrf L2_MULTI_DOMAIN_NEUTRAL_2 +no ip routing vrf MGMT +! +ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY + seq 10 permit 192.168.255.0/24 eq 32 + seq 20 permit 192.168.254.0/24 eq 32 +! +route-map RM-CONN-2-BGP permit 10 + match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65001 + router-id 192.168.255.1 + no bgp default ipv4-unicast + maximum-paths 4 ecmp 4 + neighbor EVPN-OVERLAY-CORE peer group + neighbor EVPN-OVERLAY-CORE update-source Loopback0 + neighbor EVPN-OVERLAY-CORE bfd + neighbor EVPN-OVERLAY-CORE ebgp-multihop 15 + neighbor EVPN-OVERLAY-CORE send-community + neighbor EVPN-OVERLAY-CORE maximum-routes 0 + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor IPv4-UNDERLAY-PEERS peer group + neighbor IPv4-UNDERLAY-PEERS send-community + neighbor IPv4-UNDERLAY-PEERS maximum-routes 12000 + neighbor 192.168.100.10 peer group EVPN-OVERLAY-CORE + neighbor 192.168.100.10 remote-as 65002 + neighbor 192.168.100.10 description DCI_TEST + redistribute connected route-map RM-CONN-2-BGP + ! + vlan 110 + rd 192.168.255.1:10110 + route-target both 10110:10110 + redistribute learned + ! + vlan 111 + rd 192.168.255.1:10111 + rd evpn domain remote 192.168.255.1:10111 + route-target both 10111:10111 + route-target import export evpn domain remote 10111:10111 + redistribute learned + ! + vlan 150 + rd 192.168.255.1:10150 + rd evpn domain remote 192.168.255.1:10150 + route-target both 10150:10150 + route-target import export evpn domain remote 10150:10150 + redistribute learned + ! + vlan 160 + rd 192.168.255.1:10160 + rd evpn domain remote 192.168.255.1:10160 + route-target both 10160:10160 + route-target import export evpn domain remote 10160:10160 + redistribute learned + ! + vlan 170 + rd 192.168.255.1:10170 + route-target both 10170:10170 + redistribute learned + ! + vlan 180 + rd 192.168.255.1:10180 + route-target both 10180:10180 + redistribute learned + ! + vlan 190 + rd 192.168.255.1:10190 + rd evpn domain remote 192.168.255.1:10190 + route-target both 10190:10190 + route-target import export evpn domain remote 10190:10190 + redistribute learned + ! + vlan 210 + rd 192.168.255.1:20210 + rd evpn domain remote 192.168.255.1:20210 + route-target both 20210:20210 + route-target import export evpn domain remote 20210:20210 + redistribute learned + ! + vlan 211 + rd 192.168.255.1:20211 + route-target both 20211:20211 + redistribute learned + ! + vlan 250 + rd 192.168.255.1:20250 + route-target both 20250:20250 + redistribute learned + ! + vlan 260 + rd 192.168.255.1:20260 + route-target both 20260:20260 + redistribute learned + ! + vlan 270 + rd 192.168.255.1:20270 + rd evpn domain remote 192.168.255.1:20270 + route-target both 20270:20270 + route-target import export evpn domain remote 20270:20270 + redistribute learned + ! + vlan 280 + rd 192.168.255.1:20280 + rd evpn domain remote 192.168.255.1:20280 + route-target both 20280:20280 + route-target import export evpn domain remote 20280:20280 + redistribute learned + ! + vlan 290 + rd 192.168.255.1:20290 + route-target both 20290:20290 + redistribute learned + ! + address-family evpn + neighbor EVPN-OVERLAY-CORE activate + neighbor EVPN-OVERLAY-CORE domain remote + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-CORE activate + no neighbor EVPN-OVERLAY-PEERS activate + neighbor IPv4-UNDERLAY-PEERS activate + ! + vrf L2_MULTI_DOMAIN_DISBLED + rd 192.168.255.1:21 + route-target import evpn 21:21 + route-target export evpn 21:21 + router-id 192.168.255.1 + redistribute connected + ! + vrf L2_MULTI_DOMAIN_ENABLED + rd 192.168.255.1:11 + route-target import evpn 11:11 + route-target export evpn 11:11 + router-id 192.168.255.1 + redistribute connected + ! + vrf L2_MULTI_DOMAIN_NEUTRAL_1 + rd 192.168.255.1:10 + route-target import evpn 10:10 + route-target export evpn 10:10 + router-id 192.168.255.1 + redistribute connected + ! + vrf L2_MULTI_DOMAIN_NEUTRAL_2 + rd 192.168.255.1:20 + route-target import evpn 20:20 + route-target export evpn 20:20 + router-id 192.168.255.1 + redistribute connected +! +end diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_l2_multi_domain.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_l2_multi_domain.yml new file mode 100644 index 00000000000..c0a7eeb913d --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_l2_multi_domain.yml @@ -0,0 +1,492 @@ +hostname: evpn_l2_multi_domain +is_deployed: true +router_bgp: + as: '65001' + router_id: 192.168.255.1 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + redistribute: + connected: + enabled: true + route_map: RM-CONN-2-BGP + peer_groups: + - name: IPv4-UNDERLAY-PEERS + type: ipv4 + maximum_routes: 12000 + send_community: all + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + - name: EVPN-OVERLAY-CORE + type: evpn + update_source: Loopback0 + bfd: true + send_community: all + maximum_routes: 0 + ebgp_multihop: 15 + address_family_ipv4: + peer_groups: + - name: IPv4-UNDERLAY-PEERS + activate: true + - name: EVPN-OVERLAY-PEERS + activate: false + - name: EVPN-OVERLAY-CORE + activate: false + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-CORE + domain_remote: true + activate: true + - name: EVPN-OVERLAY-PEERS + activate: true + neighbors: + - ip_address: 192.168.100.10 + peer_group: EVPN-OVERLAY-CORE + peer: DCI_TEST + description: DCI_TEST + remote_as: '65002' + vrfs: + - name: L2_MULTI_DOMAIN_ENABLED + rd: 192.168.255.1:11 + route_targets: + import: + - address_family: evpn + route_targets: + - '11:11' + export: + - address_family: evpn + route_targets: + - '11:11' + router_id: 192.168.255.1 + redistribute: + connected: + enabled: true + - name: L2_MULTI_DOMAIN_NEUTRAL_1 + rd: 192.168.255.1:10 + route_targets: + import: + - address_family: evpn + route_targets: + - '10:10' + export: + - address_family: evpn + route_targets: + - '10:10' + router_id: 192.168.255.1 + redistribute: + connected: + enabled: true + - name: L2_MULTI_DOMAIN_DISBLED + rd: 192.168.255.1:21 + route_targets: + import: + - address_family: evpn + route_targets: + - '21:21' + export: + - address_family: evpn + route_targets: + - '21:21' + router_id: 192.168.255.1 + redistribute: + connected: + enabled: true + - name: L2_MULTI_DOMAIN_NEUTRAL_2 + rd: 192.168.255.1:20 + route_targets: + import: + - address_family: evpn + route_targets: + - '20:20' + export: + - address_family: evpn + route_targets: + - '20:20' + router_id: 192.168.255.1 + redistribute: + connected: + enabled: true + vlans: + - id: 150 + tenant: L2_MULTI_DOMAIN_DISABLED + rd: 192.168.255.1:10150 + route_targets: + both: + - 10150:10150 + import_export_evpn_domains: + - domain: remote + route_target: 10150:10150 + redistribute_routes: + - learned + rd_evpn_domain: + domain: remote + rd: 192.168.255.1:10150 + - id: 160 + tenant: L2_MULTI_DOMAIN_DISABLED + rd: 192.168.255.1:10160 + route_targets: + both: + - 10160:10160 + import_export_evpn_domains: + - domain: remote + route_target: 10160:10160 + redistribute_routes: + - learned + rd_evpn_domain: + domain: remote + rd: 192.168.255.1:10160 + - id: 170 + tenant: L2_MULTI_DOMAIN_DISABLED + rd: 192.168.255.1:10170 + route_targets: + both: + - 10170:10170 + redistribute_routes: + - learned + - id: 110 + tenant: L2_MULTI_DOMAIN_DISABLED + rd: 192.168.255.1:10110 + route_targets: + both: + - 10110:10110 + redistribute_routes: + - learned + - id: 111 + tenant: L2_MULTI_DOMAIN_DISABLED + rd: 192.168.255.1:10111 + route_targets: + both: + - 10111:10111 + import_export_evpn_domains: + - domain: remote + route_target: 10111:10111 + redistribute_routes: + - learned + rd_evpn_domain: + domain: remote + rd: 192.168.255.1:10111 + - id: 190 + tenant: L2_MULTI_DOMAIN_DISABLED + rd: 192.168.255.1:10190 + route_targets: + both: + - 10190:10190 + import_export_evpn_domains: + - domain: remote + route_target: 10190:10190 + redistribute_routes: + - learned + rd_evpn_domain: + domain: remote + rd: 192.168.255.1:10190 + - id: 180 + tenant: L2_MULTI_DOMAIN_DISABLED + rd: 192.168.255.1:10180 + route_targets: + both: + - 10180:10180 + redistribute_routes: + - learned + - id: 250 + tenant: L2_MULTI_DOMAIN_ENABLED + rd: 192.168.255.1:20250 + route_targets: + both: + - 20250:20250 + redistribute_routes: + - learned + - id: 260 + tenant: L2_MULTI_DOMAIN_ENABLED + rd: 192.168.255.1:20260 + route_targets: + both: + - 20260:20260 + redistribute_routes: + - learned + - id: 270 + tenant: L2_MULTI_DOMAIN_ENABLED + rd: 192.168.255.1:20270 + route_targets: + both: + - 20270:20270 + import_export_evpn_domains: + - domain: remote + route_target: 20270:20270 + redistribute_routes: + - learned + rd_evpn_domain: + domain: remote + rd: 192.168.255.1:20270 + - id: 210 + tenant: L2_MULTI_DOMAIN_ENABLED + rd: 192.168.255.1:20210 + route_targets: + both: + - 20210:20210 + import_export_evpn_domains: + - domain: remote + route_target: 20210:20210 + redistribute_routes: + - learned + rd_evpn_domain: + domain: remote + rd: 192.168.255.1:20210 + - id: 211 + tenant: L2_MULTI_DOMAIN_ENABLED + rd: 192.168.255.1:20211 + route_targets: + both: + - 20211:20211 + redistribute_routes: + - learned + - id: 290 + tenant: L2_MULTI_DOMAIN_ENABLED + rd: 192.168.255.1:20290 + route_targets: + both: + - 20290:20290 + redistribute_routes: + - learned + - id: 280 + tenant: L2_MULTI_DOMAIN_ENABLED + rd: 192.168.255.1:20280 + route_targets: + both: + - 20280:20280 + import_export_evpn_domains: + - domain: remote + route_target: 20280:20280 + redistribute_routes: + - learned + rd_evpn_domain: + domain: remote + rd: 192.168.255.1:20280 +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +aaa_root: + disabled: true +config_end: true +enable_password: + disabled: true +transceiver_qsfp_default_mode_4x10: true +vrfs: +- name: MGMT + ip_routing: false +- name: L2_MULTI_DOMAIN_ENABLED + tenant: L2_MULTI_DOMAIN_DISABLED + ip_routing: true +- name: L2_MULTI_DOMAIN_NEUTRAL_1 + tenant: L2_MULTI_DOMAIN_DISABLED + ip_routing: true +- name: L2_MULTI_DOMAIN_DISBLED + tenant: L2_MULTI_DOMAIN_ENABLED + ip_routing: true +- name: L2_MULTI_DOMAIN_NEUTRAL_2 + tenant: L2_MULTI_DOMAIN_ENABLED + ip_routing: true +management_interfaces: +- name: Management1 + description: OOB_MANAGEMENT + shutdown: false + vrf: MGMT + ip_address: 192.168.100.101/24 + gateway: null + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true +loopback_interfaces: +- name: Loopback0 + description: ROUTER_ID + shutdown: false + ip_address: 192.168.255.1/32 +- name: Loopback1 + description: VXLAN_TUNNEL_SOURCE + shutdown: false + ip_address: 192.168.254.1/32 +prefix_lists: +- name: PL-LOOPBACKS-EVPN-OVERLAY + sequence_numbers: + - sequence: 10 + action: permit 192.168.255.0/24 eq 32 + - sequence: 20 + action: permit 192.168.254.0/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 +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +vlans: +- id: 150 + name: L2_MULTI_DOMAIN_NEUTRAL + tenant: L2_MULTI_DOMAIN_DISABLED +- id: 160 + name: L2_MULTI_DOMAIN_NEUTRAL + tenant: L2_MULTI_DOMAIN_DISABLED +- id: 170 + name: L2_MULTI_DOMAIN_DISABLED + tenant: L2_MULTI_DOMAIN_DISABLED +- id: 110 + name: L2_MULTI_DOMAIN_NEUTRAL + tenant: L2_MULTI_DOMAIN_DISABLED +- id: 111 + name: L2_MULTI_DOMAIN_ENABLED + tenant: L2_MULTI_DOMAIN_DISABLED +- id: 180 + name: L2_MULTI_DOMAIN_NEUTRAL + tenant: L2_MULTI_DOMAIN_DISABLED +- id: 190 + name: L2_MULTI_DOMAIN_ENABLED + tenant: L2_MULTI_DOMAIN_DISABLED +- id: 250 + name: L2_MULTI_DOMAIN_NEUTRAL + tenant: L2_MULTI_DOMAIN_ENABLED +- id: 260 + name: L2_MULTI_DOMAIN_NEUTRAL + tenant: L2_MULTI_DOMAIN_ENABLED +- id: 270 + name: L2_MULTI_DOMAIN_ENABLED + tenant: L2_MULTI_DOMAIN_ENABLED +- id: 210 + name: L2_MULTI_DOMAIN_NEUTRAL + tenant: L2_MULTI_DOMAIN_ENABLED +- id: 211 + name: L2_MULTI_DOMAIN_DISABLED + tenant: L2_MULTI_DOMAIN_ENABLED +- id: 280 + name: L2_MULTI_DOMAIN_NEUTRAL + tenant: L2_MULTI_DOMAIN_ENABLED +- id: 290 + name: L2_MULTI_DOMAIN_DISABLED + tenant: L2_MULTI_DOMAIN_ENABLED +ip_igmp_snooping: + globally_enabled: true +ip_virtual_router_mac_address: 00:dc:00:00:00:0a +vlan_interfaces: +- name: Vlan150 + tenant: L2_MULTI_DOMAIN_DISABLED + description: L2_MULTI_DOMAIN_NEUTRAL + shutdown: false + ip_address_virtual: 10.1.50.1/24 + vrf: L2_MULTI_DOMAIN_ENABLED +- name: Vlan160 + tenant: L2_MULTI_DOMAIN_DISABLED + description: L2_MULTI_DOMAIN_NEUTRAL + shutdown: false + ip_address_virtual: 10.1.60.1/24 + vrf: L2_MULTI_DOMAIN_ENABLED +- name: Vlan170 + tenant: L2_MULTI_DOMAIN_DISABLED + description: L2_MULTI_DOMAIN_DISABLED + shutdown: false + ip_address_virtual: 10.1.70.1/24 + vrf: L2_MULTI_DOMAIN_ENABLED +- name: Vlan110 + tenant: L2_MULTI_DOMAIN_DISABLED + description: L2_MULTI_DOMAIN_NEUTRAL + shutdown: false + ip_address_virtual: 10.1.10.1/24 + vrf: L2_MULTI_DOMAIN_NEUTRAL_1 +- name: Vlan111 + tenant: L2_MULTI_DOMAIN_DISABLED + description: L2_MULTI_DOMAIN_ENABLED + shutdown: false + ip_address_virtual: 10.1.11.1/24 + vrf: L2_MULTI_DOMAIN_NEUTRAL_1 +- name: Vlan250 + tenant: L2_MULTI_DOMAIN_ENABLED + description: L2_MULTI_DOMAIN_NEUTRAL + shutdown: false + ip_address_virtual: 10.2.50.1/24 + vrf: L2_MULTI_DOMAIN_DISBLED +- name: Vlan260 + tenant: L2_MULTI_DOMAIN_ENABLED + description: L2_MULTI_DOMAIN_NEUTRAL + shutdown: false + ip_address_virtual: 10.2.60.1/24 + vrf: L2_MULTI_DOMAIN_DISBLED +- name: Vlan270 + tenant: L2_MULTI_DOMAIN_ENABLED + description: L2_MULTI_DOMAIN_ENABLED + shutdown: false + ip_address_virtual: 10.2.70.1/24 + vrf: L2_MULTI_DOMAIN_DISBLED +- name: Vlan210 + tenant: L2_MULTI_DOMAIN_ENABLED + description: L2_MULTI_DOMAIN_NEUTRAL + shutdown: false + ip_address_virtual: 10.2.10.1/24 + vrf: L2_MULTI_DOMAIN_NEUTRAL_2 +- name: Vlan211 + tenant: L2_MULTI_DOMAIN_ENABLED + description: L2_MULTI_DOMAIN_DISABLED + shutdown: false + ip_address_virtual: 10.2.11.1/24 + vrf: L2_MULTI_DOMAIN_NEUTRAL_2 +vxlan_interface: + vxlan1: + description: evpn_l2_multi_domain_VTEP + vxlan: + udp_port: 4789 + source_interface: Loopback1 + vlans: + - id: 150 + vni: 10150 + - id: 160 + vni: 10160 + - id: 170 + vni: 10170 + - id: 110 + vni: 10110 + - id: 111 + vni: 10111 + - id: 180 + vni: 10180 + - id: 190 + vni: 10190 + - id: 250 + vni: 20250 + - id: 260 + vni: 20260 + - id: 270 + vni: 20270 + - id: 210 + vni: 20210 + - id: 211 + vni: 20211 + - id: 280 + vni: 20280 + - id: 290 + vni: 20290 + vrfs: + - name: L2_MULTI_DOMAIN_ENABLED + vni: 11 + - name: L2_MULTI_DOMAIN_NEUTRAL_1 + vni: 10 + - name: L2_MULTI_DOMAIN_DISBLED + vni: 21 + - name: L2_MULTI_DOMAIN_NEUTRAL_2 + vni: 20 +metadata: + platform: vEOS diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/evpn_l2_multi_domain.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/evpn_l2_multi_domain.yml new file mode 100644 index 00000000000..0d4853f732f --- /dev/null +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/evpn_l2_multi_domain.yml @@ -0,0 +1,111 @@ +type: l3leaf + +l3leaf: + defaults: + loopback_ipv4_pool: 192.168.255.0/24 + vtep_loopback_ipv4_pool: 192.168.254.0/24 + virtual_router_mac_address: 00:dc:00:00:00:0a + platform: vEOS + nodes: + - name: evpn_l2_multi_domain + id: 1 + mgmt_ip: 192.168.100.101/24 + bgp_as: 65001 + evpn_gateway: + remote_peers: + - hostname: DCI_TEST + ip_address: 192.168.100.10 + bgp_as: 65002 + evpn_l2: + enabled: true + +tenants: + - name: L2_MULTI_DOMAIN_DISABLED + mac_vrf_vni_base: 10000 + # Test to disable all vlans in Tenant for l2 multi-domain + evpn_l2_multi_domain: false + vrfs: + - name: L2_MULTI_DOMAIN_NEUTRAL_1 + vrf_vni: 10 + svis: + - id: 110 + name: L2_MULTI_DOMAIN_NEUTRAL + enabled: true + ip_address_virtual: 10.1.10.1/24 + - id: 111 + name: L2_MULTI_DOMAIN_ENABLED + enabled: true + ip_address_virtual: 10.1.11.1/24 + # Test to enable specific VLAN for l2 multi-domain when disabled on Tenant + evpn_l2_multi_domain: true + - name: L2_MULTI_DOMAIN_ENABLED + vrf_vni: 11 + # Test to enable all vlans in VRF for l2 multi-domain when disabled on Tenant + evpn_l2_multi_domain: true + svis: + - id: 150 + name: L2_MULTI_DOMAIN_NEUTRAL + enabled: true + ip_address_virtual: 10.1.50.1/24 + - id: 160 + name: L2_MULTI_DOMAIN_NEUTRAL + enabled: true + ip_address_virtual: 10.1.60.1/24 + - id: 170 + name: L2_MULTI_DOMAIN_DISABLED + enabled: true + ip_address_virtual: 10.1.70.1/24 + # Test to disable specific VLAN for l2 multi-domain when enabled on VRF + evpn_l2_multi_domain: false + l2vlans: + - id: 180 + name: L2_MULTI_DOMAIN_NEUTRAL + - id: 190 + name: L2_MULTI_DOMAIN_ENABLED + # Test to enable specific VLAN for l2 multi-domain when disabled on Tenant + evpn_l2_multi_domain: true + + - name: L2_MULTI_DOMAIN_ENABLED + mac_vrf_vni_base: 20000 + # Test to enable all vlans in Tenant for l2 multi-domain + evpn_l2_multi_domain: true + vrfs: + - name: L2_MULTI_DOMAIN_NEUTRAL_2 + vrf_vni: 20 + svis: + - id: 210 + name: L2_MULTI_DOMAIN_NEUTRAL + enabled: true + ip_address_virtual: 10.2.10.1/24 + - id: 211 + name: L2_MULTI_DOMAIN_DISABLED + enabled: true + ip_address_virtual: 10.2.11.1/24 + # Test to disable specific VLAN for l2 multi-domain when enabled on Tenant + evpn_l2_multi_domain: false + - name: L2_MULTI_DOMAIN_DISBLED + vrf_vni: 21 + # Test to disable all vlans in VRF for l2 multi-domain when enabled on Tenant + evpn_l2_multi_domain: false + svis: + - id: 250 + name: L2_MULTI_DOMAIN_NEUTRAL + enabled: true + ip_address_virtual: 10.2.50.1/24 + - id: 260 + name: L2_MULTI_DOMAIN_NEUTRAL + enabled: true + ip_address_virtual: 10.2.60.1/24 + - id: 270 + name: L2_MULTI_DOMAIN_ENABLED + enabled: true + ip_address_virtual: 10.2.70.1/24 + # Test to enable specific VLAN in VRF for l2 multi-domain when disabled on VRF + evpn_l2_multi_domain: true + l2vlans: + - id: 280 + name: L2_MULTI_DOMAIN_NEUTRAL + - id: 290 + name: L2_MULTI_DOMAIN_DISABLED + # Test to disable specific VLAN for l2 multi-domain when enabled on Tenant + evpn_l2_multi_domain: false 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 abdd40c76a3..0757f50ecbd 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 @@ -40,6 +40,7 @@ all: mgmt_interface_dualstack: default_overlay_protocol_cvx: default_overlay_protocol_her: + evpn_l2_multi_domain: evpn_vlan_bundle: evpn_vlan_bundle_svi_l2vlan: default_interface_mtu_hostvars: diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md b/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md index 171a981e41c..e2b0f2da452 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md @@ -1396,7 +1396,10 @@ roles/eos_designs/docs/tables/svi-profiles.md ### EVPN VLAN aware bundles settings -Optional VLAN aware bundles to share common settings for l2vlans which are supposed to use the same vlan-aware-bundle. +EVPN VLAN aware bundles referenced by name in `[].evpn_vlan_bundle` or `[].vrfs[].evpn_vlan_bundle` +or `[].vrfs[].svis[].evpn_vlan_bundle` or `[].l2vlans[].evpn_vlan_bundle`. + +An EVPN VLAN aware bundle will only be configured if at least one VLAN is associated with it. --8<-- roles/eos_designs/docs/tables/evpn-vlan-bundles.md diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-vlan-bundles.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-vlan-bundles.md index 4c246c4e0d1..ecb47e548b9 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-vlan-bundles.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-vlan-bundles.md @@ -8,7 +8,7 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | | [evpn_vlan_bundles](## "evpn_vlan_bundles") | List, items: Dictionary | | | | | - | [  - name](## "evpn_vlan_bundles.[].name") | String | Required, Unique | | | Specify an EVPN vlan-aware-bundle name.
EVPN vlan-aware-bundles group L2 VLANs and define common settings.
| + | [  - name](## "evpn_vlan_bundles.[].name") | String | Required, Unique | | | Specify an EVPN vlan-aware-bundle name.
EVPN vlan-aware-bundles group VLANs and define common settings.
| | [    id](## "evpn_vlan_bundles.[].id") | Integer | Required | | | "id" may be used for vlan-aware-bundle RD/RT ID so it should not overlap with l2vlan IDs which are not part of this bundle.
See "overlay_rd_type" and "overlay_rt_type" for details.
| | [    rt_override](## "evpn_vlan_bundles.[].rt_override") | String | | | | By default the MAC VRF bundle RT will be derived from mac_vrf_id_base + bundle_id.
The rt_override allows us to override this value and statically define it.
rt_override will default to vni_override if set.

rt_override supports two formats:
- A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).
- A full RT string with colon separator which will override the full RT.
| | [    rd_override](## "evpn_vlan_bundles.[].rd_override") | String | | | | By default the MAC VRF bundle RD will be derived from mac_vrf_id_base + bundle_id.
The rt_override allows us to override this value and statically define it.
rd_override will default to rt_override or vni_override if set.

rd_override supports two formats:
- A single number which will be used in the RD assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type' for details).
- A full RD string with colon separator which will override the full RD.
| @@ -22,7 +22,7 @@ evpn_vlan_bundles: # Specify an EVPN vlan-aware-bundle name. - # EVPN vlan-aware-bundles group L2 VLANs and define common settings. + # EVPN vlan-aware-bundles group VLANs and define common settings. - name: # "id" may be used for vlan-aware-bundle RD/RT ID so it should not overlap with l2vlan IDs which are not part of this bundle. diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-l2vlans-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-l2vlans-settings.md index d74a701e474..655b5732e10 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-l2vlans-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-l2vlans-settings.md @@ -22,6 +22,7 @@ | [        evpn_vlan_bundle](## ".[].l2vlans.[].evpn_vlan_bundle") | String | | | | Name of a bundle defined under 'evpn_vlan_bundles' to inherit configuration.
This setting overrides "evpn_vlan_bundle" set at tenant level.
The common option "evpn_vlan_aware_bundles" is disregarded for this option.
| | [        trunk_groups](## ".[].l2vlans.[].trunk_groups") | List, items: String | | | | | | [          - <str>](## ".[].l2vlans.[].trunk_groups.[]") | String | | | | Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.
Requires enable_trunk_groups: true.
| + | [        evpn_l2_multi_domain](## ".[].l2vlans.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend this VLAN to remote EVPN domains.
Overrides `[].evpn_l2_multi_domain`.
| | [        bgp](## ".[].l2vlans.[].bgp") | Dictionary | | | | | | [          structured_config](## ".[].l2vlans.[].bgp.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.vlans.[id=] for eos_cli_config_gen.
This configuration will not be applied to vlan aware bundles.
| | [          raw_eos_cli](## ".[].l2vlans.[].bgp.raw_eos_cli") | String | | | | EOS cli commands rendered on router_bgp.vlans.
This configuration will not be applied to vlan aware bundles.
| @@ -89,6 +90,10 @@ # Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group. # Requires enable_trunk_groups: true. - + + # Explicitly extend this VLAN to remote EVPN domains. + # Overrides `[].evpn_l2_multi_domain`. + evpn_l2_multi_domain: bgp: # Custom structured config added under router_bgp.vlans.[id=] for eos_cli_config_gen. diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md index 46548a3035e..030c606ac02 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md @@ -52,11 +52,10 @@ | [            groups](## ".[].vrfs.[].pim_rp_addresses.[].groups") | List, items: String | | | | | | [              - <str>](## ".[].vrfs.[].pim_rp_addresses.[].groups.[]") | String | | | | Group_prefix/mask. | | [            access_list_name](## ".[].vrfs.[].pim_rp_addresses.[].access_list_name") | String | | | | List of groups to associate with the RP addresses set in 'rps'.
If access_list_name is set, a standard access-list will be configured matching these groups.
Otherwise the groups are configured directly on the RP command.
| - | [        evpn_l2_multi_domain](## ".[].vrfs.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains.
Overrides `.[].evpn_l2_multi_domain`.
| | [        svis](## ".[].vrfs.[].svis") | List, items: Dictionary | | | | List of SVIs.
This will create both the L3 SVI and L2 VLAN based on filters applied to the node.
| | [          - id](## ".[].vrfs.[].svis.[].id") | Integer | Required | | Min: 1
Max: 4096 | SVI interface id and VLAN id. | | [            nodes](## ".[].vrfs.[].svis.[].nodes") | List, items: Dictionary | | | | Define node specific configuration, such as unique IP addresses.
Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.
| - | [              - node](## ".[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname. | + | [              - node](## ".[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | Node inventory hostname. | | [                evpn_l2_multicast](## ".[].vrfs.[].svis.[].nodes.[].evpn_l2_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.
When evpn_l2_multicast.enabled is set to true for a vlan or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled, overriding those individual settings.
Requires `evpn_multicast` to also be set to `true`.
| | [                  enabled](## ".[].vrfs.[].svis.[].nodes.[].evpn_l2_multicast.enabled") | Boolean | | | | | | [                  always_redistribute_igmp](## ".[].vrfs.[].svis.[].nodes.[].evpn_l2_multicast.always_redistribute_igmp") | Boolean | | | | Always configure `redistribute igmp` under BGP for the VLAN. Overrides the setting of `.[].evpn_l2_multicast.always_redistribute_igmp`.
By default `redistribute igmp` is only configured when `evpn_l2_multicast` is True and `evpn_l3_multicast` for the VRF is False.
Configuring `redistribute igmp` when both L2 and L3 EVPN Multicast is enabled will take up additional control-plane and data-plane resources,
but it is required to support forwarding of TTL=1 multicast traffic within the VLAN. | @@ -92,7 +91,7 @@ | [svi_profiles](## "svi_profiles") | List, items: Dictionary | | | | Profiles to share common settings for SVIs under `.[].vrfs.svis`.
Keys are the same used under SVIs. Keys defined under SVIs take precedence.
Note: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:
1. svi.nodes[inventory_hostname].structured_config
2. svi_profile.nodes[inventory_hostname].structured_config
3. svi_parent_profile.nodes[inventory_hostname].structured_config
4. svi.structured_config
5. svi_profile.structured_config
6. svi_parent_profile.structured_config
| | [  - profile](## "svi_profiles.[].profile") | String | Required, Unique | | | Profile name. | | [    nodes](## "svi_profiles.[].nodes") | List, items: Dictionary | | | | Define node specific configuration, such as unique IP addresses.
Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.
| - | [      - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname. | + | [      - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | Node inventory hostname. | | [        evpn_l2_multicast](## "svi_profiles.[].nodes.[].evpn_l2_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.
When evpn_l2_multicast.enabled is set to true for a vlan or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled, overriding those individual settings.
Requires `evpn_multicast` to also be set to `true`.
| | [          enabled](## "svi_profiles.[].nodes.[].evpn_l2_multicast.enabled") | Boolean | | | | | | [          always_redistribute_igmp](## "svi_profiles.[].nodes.[].evpn_l2_multicast.always_redistribute_igmp") | Boolean | | | | Always configure `redistribute igmp` under BGP for the VLAN. Overrides the setting of `.[].evpn_l2_multicast.always_redistribute_igmp`.
By default `redistribute igmp` is only configured when `evpn_l2_multicast` is True and `evpn_l3_multicast` for the VRF is False.
Configuring `redistribute igmp` when both L2 and L3 EVPN Multicast is enabled will take up additional control-plane and data-plane resources,
but it is required to support forwarding of TTL=1 multicast traffic within the VLAN. | @@ -273,10 +272,6 @@ # Otherwise the groups are configured directly on the RP command. access_list_name: - # Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains. - # Overrides `.[].evpn_l2_multi_domain`. - evpn_l2_multi_domain: - # List of SVIs. # This will create both the L3 SVI and L2 VLAN based on filters applied to the node. svis: @@ -288,7 +283,7 @@ # Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level. nodes: - # l3_leaf inventory hostname. + # Node inventory hostname. - node: # Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`. @@ -409,7 +404,7 @@ # Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level. nodes: - # l3_leaf inventory hostname. + # Node inventory hostname. - node: # Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`. diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-ospf-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-ospf-settings.md index 347987134d2..57226ba70df 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-ospf-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-ospf-settings.md @@ -29,7 +29,7 @@ | [        svis](## ".[].vrfs.[].svis") | List, items: Dictionary | | | | List of SVIs.
This will create both the L3 SVI and L2 VLAN based on filters applied to the node.
| | [          - id](## ".[].vrfs.[].svis.[].id") | Integer | Required | | Min: 1
Max: 4096 | SVI interface id and VLAN id. | | [            nodes](## ".[].vrfs.[].svis.[].nodes") | List, items: Dictionary | | | | Define node specific configuration, such as unique IP addresses.
Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.
| - | [              - node](## ".[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname. | + | [              - node](## ".[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | Node inventory hostname. | | [                ospf](## ".[].vrfs.[].svis.[].nodes.[].ospf") | Dictionary | | | | OSPF interface configuration. | | [                  enabled](## ".[].vrfs.[].svis.[].nodes.[].ospf.enabled") | Boolean | | | | | | [                  point_to_point](## ".[].vrfs.[].svis.[].nodes.[].ospf.point_to_point") | Boolean | | `False` | | | @@ -55,7 +55,7 @@ | [svi_profiles](## "svi_profiles") | List, items: Dictionary | | | | Profiles to share common settings for SVIs under `.[].vrfs.svis`.
Keys are the same used under SVIs. Keys defined under SVIs take precedence.
Note: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:
1. svi.nodes[inventory_hostname].structured_config
2. svi_profile.nodes[inventory_hostname].structured_config
3. svi_parent_profile.nodes[inventory_hostname].structured_config
4. svi.structured_config
5. svi_profile.structured_config
6. svi_parent_profile.structured_config
| | [  - profile](## "svi_profiles.[].profile") | String | Required, Unique | | | Profile name. | | [    nodes](## "svi_profiles.[].nodes") | List, items: Dictionary | | | | Define node specific configuration, such as unique IP addresses.
Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.
| - | [      - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname. | + | [      - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | Node inventory hostname. | | [        ospf](## "svi_profiles.[].nodes.[].ospf") | Dictionary | | | | OSPF interface configuration. | | [          enabled](## "svi_profiles.[].nodes.[].ospf.enabled") | Boolean | | | | | | [          point_to_point](## "svi_profiles.[].nodes.[].ospf.point_to_point") | Boolean | | `False` | | | @@ -143,7 +143,7 @@ # Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level. nodes: - # l3_leaf inventory hostname. + # Node inventory hostname. - node: # OSPF interface configuration. @@ -206,7 +206,7 @@ # Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level. nodes: - # l3_leaf inventory hostname. + # Node inventory hostname. - node: # OSPF interface configuration. diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md index 597d8c31dda..f8f1874624c 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md @@ -37,6 +37,7 @@ | [            - pod](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].pod") | String | Required, Unique | | | POD name. | | [              ipv4_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv4_pool") | String | | | | IPv4_address/Mask. | | [              ipv6_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv6_pool") | String | | | | IPv6_address/Mask. | + | [        evpn_l2_multi_domain](## ".[].vrfs.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains.
Overrides `[].evpn_l2_multi_domain`.
| | [        static_routes](## ".[].vrfs.[].static_routes") | List, items: Dictionary | | | | List of static routes for v4 and/or v6.
This will create static routes inside the tenant VRF.
If nodes are not specified, all l3leafs that carry the VRF will also be applied the static routes.
If a node has a static route in the VRF, redistribute static will be automatically enabled in that VRF.
This automatic behavior can be overridden non-selectively with the redistribute_static knob for the VRF.
| | [          - destination_address_prefix](## ".[].vrfs.[].static_routes.[].destination_address_prefix") | String | | | | IPv4_address. | | [            gateway](## ".[].vrfs.[].static_routes.[].gateway") | String | | | | IPv4_address. | @@ -217,6 +218,10 @@ # IPv6_address/Mask. ipv6_pool: + # Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains. + # Overrides `[].evpn_l2_multi_domain`. + evpn_l2_multi_domain: + # List of static routes for v4 and/or v6. # This will create static routes inside the tenant VRF. # If nodes are not specified, all l3leafs that carry the VRF will also be applied the static routes. diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-svis-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-svis-settings.md index e7119249ed0..509c70b01e0 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-svis-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-svis-settings.md @@ -19,7 +19,7 @@ | [              - <str>](## ".[].vrfs.[].svis.[].tags.[]") | String | | | | Tag value. | | [            evpn_vlan_bundle](## ".[].vrfs.[].svis.[].evpn_vlan_bundle") | String | | | | Name of a bundle defined under 'evpn_vlan_bundles' to inherit configuration.
This setting overrides "evpn_vlan_bundle" set at tenant level.
The common option "evpn_vlan_aware_bundles" is disregarded for this option.
| | [            nodes](## ".[].vrfs.[].svis.[].nodes") | List, items: Dictionary | | | | Define node specific configuration, such as unique IP addresses.
Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.
| - | [              - node](## ".[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname. | + | [              - node](## ".[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | Node inventory hostname. | | [                tags](## ".[].vrfs.[].svis.[].nodes.[].tags") | List, items: String | | `['all']` | | Tags leveraged for networks services filtering.
Tags are matched against "filter.tags" defined under node type settings.
Tags are also matched against the "node_group" name under node type settings.
| | [                  - <str>](## ".[].vrfs.[].svis.[].nodes.[].tags.[]") | String | | | | Tag value. | | [                name](## ".[].vrfs.[].svis.[].nodes.[].name") | String | | | | VLAN name. | @@ -57,6 +57,7 @@ | [                raw_eos_cli](## ".[].vrfs.[].svis.[].nodes.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the VLAN interface in the final EOS configuration.
| | [                structured_config](## ".[].vrfs.[].svis.[].nodes.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
| | [                ipv6_address_virtual](## ".[].vrfs.[].svis.[].nodes.[].ipv6_address_virtual") removed | String | | | | IPv6_address/Mask.
ipv6 address virtuals to configure VXLAN Anycast IP address (Optional).
This key was removed. Support was removed in AVD version 5.0.0. Use ipv6_address_virtuals instead. | + | [                evpn_l2_multi_domain](## ".[].vrfs.[].svis.[].nodes.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend SVI to remote EVPN domains.
Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`.
Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`.
| | [            enabled](## ".[].vrfs.[].svis.[].enabled") | Boolean | | | | Enable or disable interface. | | [            description](## ".[].vrfs.[].svis.[].description") | String | | | | SVI description. By default set to VLAN name.
| | [            ip_address](## ".[].vrfs.[].svis.[].ip_address") | String | | | | IPv4_address/Mask. Usually set under "nodes" to have unique IPv4 addresses per node. | @@ -91,6 +92,7 @@ | [            raw_eos_cli](## ".[].vrfs.[].svis.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the VLAN interface in the final EOS configuration.
| | [            structured_config](## ".[].vrfs.[].svis.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
| | [            ipv6_address_virtual](## ".[].vrfs.[].svis.[].ipv6_address_virtual") removed | String | | | | IPv6_address/Mask.
ipv6 address virtuals to configure VXLAN Anycast IP address (Optional).
This key was removed. Support was removed in AVD version 5.0.0. Use ipv6_address_virtuals instead. | + | [            evpn_l2_multi_domain](## ".[].vrfs.[].svis.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend SVI to remote EVPN domains.
Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`.
Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`.
| === "YAML" @@ -144,7 +146,7 @@ # Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level. nodes: - # l3_leaf inventory hostname. + # Node inventory hostname. - node: # Tags leveraged for networks services filtering. @@ -281,6 +283,11 @@ # Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen. structured_config: + # Explicitly extend SVI to remote EVPN domains. + # Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`. + # Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`. + evpn_l2_multi_domain: + # Enable or disable interface. enabled: @@ -403,4 +410,9 @@ # Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen. structured_config: + + # Explicitly extend SVI to remote EVPN domains. + # Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`. + # Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`. + evpn_l2_multi_domain: ``` diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/svi-profiles.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/svi-profiles.md index 39c0825c6f7..e0f91575171 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/svi-profiles.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/svi-profiles.md @@ -11,7 +11,7 @@ | [  - profile](## "svi_profiles.[].profile") | String | Required, Unique | | | Profile name. | | [    parent_profile](## "svi_profiles.[].parent_profile") | String | | | | Parent SVI profile name to apply.
svi_profiles can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile).
| | [    nodes](## "svi_profiles.[].nodes") | List, items: Dictionary | | | | Define node specific configuration, such as unique IP addresses.
Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.
| - | [      - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname. | + | [      - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | Node inventory hostname. | | [        name](## "svi_profiles.[].nodes.[].name") | String | | | | VLAN name. | | [        enabled](## "svi_profiles.[].nodes.[].enabled") | Boolean | | | | Enable or disable interface. | | [        description](## "svi_profiles.[].nodes.[].description") | String | | | | SVI description. By default set to VLAN name.
| @@ -47,6 +47,7 @@ | [        raw_eos_cli](## "svi_profiles.[].nodes.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the VLAN interface in the final EOS configuration.
| | [        structured_config](## "svi_profiles.[].nodes.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
| | [        ipv6_address_virtual](## "svi_profiles.[].nodes.[].ipv6_address_virtual") removed | String | | | | IPv6_address/Mask.
ipv6 address virtuals to configure VXLAN Anycast IP address (Optional).
This key was removed. Support was removed in AVD version 5.0.0. Use ipv6_address_virtuals instead. | + | [        evpn_l2_multi_domain](## "svi_profiles.[].nodes.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend SVI to remote EVPN domains.
Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`.
Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`.
| | [    name](## "svi_profiles.[].name") | String | | | | VLAN name. | | [    enabled](## "svi_profiles.[].enabled") | Boolean | | | | Enable or disable interface. | | [    description](## "svi_profiles.[].description") | String | | | | SVI description. By default set to VLAN name.
| @@ -82,6 +83,7 @@ | [    raw_eos_cli](## "svi_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the VLAN interface in the final EOS configuration.
| | [    structured_config](## "svi_profiles.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
| | [    ipv6_address_virtual](## "svi_profiles.[].ipv6_address_virtual") removed | String | | | | IPv6_address/Mask.
ipv6 address virtuals to configure VXLAN Anycast IP address (Optional).
This key was removed. Support was removed in AVD version 5.0.0. Use ipv6_address_virtuals instead. | + | [    evpn_l2_multi_domain](## "svi_profiles.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend SVI to remote EVPN domains.
Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`.
Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`.
| === "YAML" @@ -108,7 +110,7 @@ # Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level. nodes: - # l3_leaf inventory hostname. + # Node inventory hostname. - node: # VLAN name. @@ -237,6 +239,11 @@ # Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen. structured_config: + # Explicitly extend SVI to remote EVPN domains. + # Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`. + # Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`. + evpn_l2_multi_domain: + # VLAN name. name: @@ -362,4 +369,9 @@ # Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen. structured_config: + + # Explicitly extend SVI to remote EVPN domains. + # Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`. + # Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`. + evpn_l2_multi_domain: ``` diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index 53c3e99fee2..7976fbf3581 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -1327,7 +1327,7 @@ keys: - int description: 'Specify an EVPN vlan-aware-bundle name. - EVPN vlan-aware-bundles group L2 VLANs and define common settings. + EVPN vlan-aware-bundles group VLANs and define common settings. ' id: @@ -6590,13 +6590,11 @@ $defs: ' evpn_l2_multi_domain: - documentation_options: - table: network-services-multicast-settings type: bool description: 'Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains. - Overrides `.[].evpn_l2_multi_domain`. + Overrides `[].evpn_l2_multi_domain`. ' svis: @@ -7372,6 +7370,13 @@ $defs: Requires enable_trunk_groups: true. ' + evpn_l2_multi_domain: + type: bool + description: 'Explicitly extend this VLAN to remote EVPN domains. + + Overrides `[].evpn_l2_multi_domain`. + + ' evpn_l2_multicast: documentation_options: table: network-services-multicast-settings @@ -9735,7 +9740,7 @@ $defs: keys: node: type: str - description: l3_leaf inventory hostname. + description: Node inventory hostname. svi_settings: type: dict keys: @@ -10094,6 +10099,16 @@ $defs: warning: true remove_in_version: 5.0.0 new_key: ipv6_address_virtuals + evpn_l2_multi_domain: + type: bool + description: 'Explicitly extend SVI to remote EVPN domains. + + Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`. + + Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: + true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`. + + ' virtual_topology: type: dict keys: diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index 061a6f6feda..708d07ba2cd 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -593,12 +593,10 @@ $defs: If access_list_name is set, a standard access-list will be configured matching these groups. Otherwise the groups are configured directly on the RP command. evpn_l2_multi_domain: - documentation_options: - table: network-services-multicast-settings type: bool description: | Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains. - Overrides `.[].evpn_l2_multi_domain`. + Overrides `[].evpn_l2_multi_domain`. svis: documentation_options: table: network-services-vrfs-svis-settings @@ -1251,6 +1249,11 @@ $defs: description: | Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group. Requires enable_trunk_groups: true. + evpn_l2_multi_domain: + type: bool + description: | + Explicitly extend this VLAN to remote EVPN domains. + Overrides `[].evpn_l2_multi_domain`. evpn_l2_multicast: documentation_options: table: network-services-multicast-settings diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi.schema.yml index 795387b9c27..7203749c113 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi.schema.yml @@ -22,4 +22,4 @@ $defs: keys: node: type: str - description: l3_leaf inventory hostname. + description: Node inventory hostname. diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi_settings.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi_settings.schema.yml index 72fe78e88d7..44af7d3e6e1 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi_settings.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi_settings.schema.yml @@ -303,3 +303,9 @@ $defs: warning: true remove_in_version: 5.0.0 new_key: ipv6_address_virtuals + evpn_l2_multi_domain: + type: bool + description: | + Explicitly extend SVI to remote EVPN domains. + Overrides `[].evpn_l2_multi_domain` and `[].vrfs[].evpn_l2_multi_domain`. + Not supported in conjuction with EVPN vlan aware bundles. i.e. `evpn_vlan_aware_bundles: true` or `[].evpn_vlan_bundle` or `[].vrfs[].svis[].evpn_vlan_bundle`. diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/evpn_vlan_bundles.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/evpn_vlan_bundles.schema.yml index 82f6b4b2473..1c976eba478 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/evpn_vlan_bundles.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/evpn_vlan_bundles.schema.yml @@ -20,7 +20,7 @@ keys: - int description: | Specify an EVPN vlan-aware-bundle name. - EVPN vlan-aware-bundles group L2 VLANs and define common settings. + EVPN vlan-aware-bundles group VLANs and define common settings. id: type: int required: true