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 a1b4b68b8bd..c2730ef193c 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
@@ -1129,18 +1129,18 @@ roles/eos_designs/docs/tables/network-services-multicast-settings.md
### SVI profiles settings
-Optional profiles to share common settings for SVIs
-
-Keys are the same as 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
+SVI profiles can be leveraged to share common settings between SVIs.
+
+- Keys are the same as those used under SVI settings, except for the `tags` key.
+- Keys defined under SVIs take precedence.
+- 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
--8<--
roles/eos_designs/docs/tables/svi-profiles.md
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 53f1f23fb46..2ca669aadef 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
@@ -15,8 +15,12 @@
| [ - id](## "<network_services_keys.name>.[].vrfs.[].svis.[].id") | Integer | Required, Unique | | Min: 1
Max: 4096 | SVI interface id and VLAN id. |
| [ name](## "<network_services_keys.name>.[].vrfs.[].svis.[].name") | String | Required | | | VLAN name. |
| [ profile](## "<network_services_keys.name>.[].vrfs.[].svis.[].profile") | String | | | | SVI profile name to apply.
SVI can refer to one svi_profile which again can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile).
|
+ | [ tags](## "<network_services_keys.name>.[].vrfs.[].svis.[].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>](## "<network_services_keys.name>.[].vrfs.[].svis.[].tags.[].<str>") | String | | | | Tag value. |
| [ nodes](## "<network_services_keys.name>.[].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](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname |
+ | [ tags](## "<network_services_keys.name>.[].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>](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].tags.[].<str>") | String | | | | Tag value. |
| [ name](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].name") | String | | | | VLAN name |
| [ enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].enabled") | Boolean | | | | Enable or disable interface |
| [ description](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].description") | String | | | | SVI description. By default set to VLAN name.
|
@@ -40,8 +44,6 @@
| [ vni_override](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].vni_override") | Integer | | | Min: 1
Max: 16777215 | By default the VNI will be derived from "mac_vrf_vni_base".
The vni_override allows us to override this value and statically define it (optional).
|
| [ rt_override](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].rt_override") | String | | | | By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_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 seperator which will override the full RT.
|
| [ rd_override](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].rd_override") | String | | | | By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_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 seperator which will override the full RD.
|
- | [ tags](## "<network_services_keys.name>.[].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>](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].tags.[].<str>") | String | | | | Tag value. |
| [ trunk_groups](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].trunk_groups") | List, items: String | | | | |
| [ - <str>](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].trunk_groups.[].<str>") | String | | | | Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.
Requires "enable_trunk_groups: true".
|
| [ vxlan](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].vxlan") | Boolean | | `True` | | Extend this SVI over VXLAN. |
@@ -73,8 +75,6 @@
| [ vni_override](## "<network_services_keys.name>.[].vrfs.[].svis.[].vni_override") | Integer | | | Min: 1
Max: 16777215 | By default the VNI will be derived from "mac_vrf_vni_base".
The vni_override allows us to override this value and statically define it (optional).
|
| [ rt_override](## "<network_services_keys.name>.[].vrfs.[].svis.[].rt_override") | String | | | | By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_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 seperator which will override the full RT.
|
| [ rd_override](## "<network_services_keys.name>.[].vrfs.[].svis.[].rd_override") | String | | | | By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_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 seperator which will override the full RD.
|
- | [ tags](## "<network_services_keys.name>.[].vrfs.[].svis.[].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>](## "<network_services_keys.name>.[].vrfs.[].svis.[].tags.[].<str>") | String | | | | Tag value. |
| [ trunk_groups](## "<network_services_keys.name>.[].vrfs.[].svis.[].trunk_groups") | List, items: String | | | | |
| [ - <str>](## "<network_services_keys.name>.[].vrfs.[].svis.[].trunk_groups.[].<str>") | String | | | | Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.
Requires "enable_trunk_groups: true".
|
| [ vxlan](## "<network_services_keys.name>.[].vrfs.[].svis.[].vxlan") | Boolean | | `True` | | Extend this SVI over VXLAN. |
@@ -96,8 +96,12 @@
- id:
name:
profile:
+ tags:
+ -
nodes:
- node:
+ tags:
+ -
name:
enabled:
description:
@@ -121,8 +125,6 @@
vni_override:
rt_override:
rd_override:
- tags:
- -
trunk_groups:
-
vxlan:
@@ -154,8 +156,6 @@
vni_override:
rt_override:
rd_override:
- tags:
- -
trunk_groups:
-
vxlan:
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 b1d944ee5df..26f8919a7a9 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
@@ -35,8 +35,6 @@
| [ vni_override](## "svi_profiles.[].nodes.[].vni_override") | Integer | | | Min: 1
Max: 16777215 | By default the VNI will be derived from "mac_vrf_vni_base".
The vni_override allows us to override this value and statically define it (optional).
|
| [ rt_override](## "svi_profiles.[].nodes.[].rt_override") | String | | | | By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_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 seperator which will override the full RT.
|
| [ rd_override](## "svi_profiles.[].nodes.[].rd_override") | String | | | | By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_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 seperator which will override the full RD.
|
- | [ tags](## "svi_profiles.[].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>](## "svi_profiles.[].nodes.[].tags.[].<str>") | String | | | | Tag value. |
| [ trunk_groups](## "svi_profiles.[].nodes.[].trunk_groups") | List, items: String | | | | |
| [ - <str>](## "svi_profiles.[].nodes.[].trunk_groups.[].<str>") | String | | | | Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.
Requires "enable_trunk_groups: true".
|
| [ vxlan](## "svi_profiles.[].nodes.[].vxlan") | Boolean | | `True` | | Extend this SVI over VXLAN. |
@@ -69,8 +67,6 @@
| [ vni_override](## "svi_profiles.[].vni_override") | Integer | | | Min: 1
Max: 16777215 | By default the VNI will be derived from "mac_vrf_vni_base".
The vni_override allows us to override this value and statically define it (optional).
|
| [ rt_override](## "svi_profiles.[].rt_override") | String | | | | By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_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 seperator which will override the full RT.
|
| [ rd_override](## "svi_profiles.[].rd_override") | String | | | | By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_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 seperator which will override the full RD.
|
- | [ tags](## "svi_profiles.[].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>](## "svi_profiles.[].tags.[].<str>") | String | | | | Tag value. |
| [ trunk_groups](## "svi_profiles.[].trunk_groups") | List, items: String | | | | |
| [ - <str>](## "svi_profiles.[].trunk_groups.[].<str>") | String | | | | Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.
Requires "enable_trunk_groups: true".
|
| [ vxlan](## "svi_profiles.[].vxlan") | Boolean | | `True` | | Extend this SVI over VXLAN. |
@@ -112,8 +108,6 @@
vni_override:
rt_override:
rd_override:
- tags:
- -
trunk_groups:
-
vxlan:
@@ -146,8 +140,6 @@
vni_override:
rt_override:
rd_override:
- tags:
- -
trunk_groups:
-
vxlan:
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json
index a8d941d7865..c8c57600e94 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json
@@ -15748,18 +15748,6 @@
"description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - 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).\n - A full RD string with colon seperator which will override the full RD.\n",
"title": "Rd Override"
},
- "tags": {
- "type": "array",
- "description": "Tags leveraged for networks services filtering.\nTags are matched against \"filter.tags\" defined under node type settings.\nTags are also matched against the \"node_group\" name under node type settings.\n",
- "default": [
- "all"
- ],
- "items": {
- "type": "string",
- "description": "Tag value."
- },
- "title": "Tags"
- },
"trunk_groups": {
"type": "array",
"items": {
@@ -17382,18 +17370,6 @@
"description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - 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).\n - A full RD string with colon seperator which will override the full RD.\n",
"title": "Rd Override"
},
- "tags": {
- "type": "array",
- "description": "Tags leveraged for networks services filtering.\nTags are matched against \"filter.tags\" defined under node type settings.\nTags are also matched against the \"node_group\" name under node type settings.\n",
- "default": [
- "all"
- ],
- "items": {
- "type": "string",
- "description": "Tag value."
- },
- "title": "Tags"
- },
"trunk_groups": {
"type": "array",
"items": {
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml
index fbef3895559..ce24a2f3370 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml
@@ -4434,6 +4434,53 @@ $defs:
(svi -> svi_profile -> svi_parent_profile).
'
+ tags:
+ type: list
+ description: '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.
+
+ '
+ default:
+ - all
+ items:
+ type: str
+ convert_types:
+ - int
+ description: Tag value.
+ nodes:
+ type: list
+ primary_key: node
+ convert_types:
+ - dict
+ items:
+ type: dict
+ $ref: eos_designs#/$defs/svi_settings
+ keys:
+ node:
+ type: str
+ tags:
+ type: list
+ description: '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.
+
+ '
+ default:
+ - all
+ items:
+ type: str
+ convert_types:
+ - int
+ description: Tag value.
l3_interfaces:
documentation_options:
table: network-services-vrfs-l3-interfaces-settings
@@ -6806,22 +6853,6 @@ $defs:
assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type'
for details).\n - A full RD string with colon seperator which will override
the full RD.\n"
- tags:
- type: list
- description: '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.
-
- '
- default:
- - all
- items:
- type: str
- convert_types:
- - int
- description: Tag value.
trunk_groups:
type: list
items:
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_network_services.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_network_services.schema.yml
index 2b0176d8969..51f3e4fbc7c 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_network_services.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_network_services.schema.yml
@@ -528,6 +528,41 @@ $defs:
description: |
SVI profile name to apply.
SVI can refer to one svi_profile which again can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile).
+ tags:
+ type: list
+ description: |
+ 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.
+ default: ["all"]
+ items:
+ type: str
+ convert_types:
+ - int
+ description: Tag value.
+ nodes:
+ type: list
+ primary_key: node
+ convert_types:
+ - dict
+ items:
+ type: dict
+ $ref: "eos_designs#/$defs/svi_settings"
+ keys:
+ node:
+ type: str
+ tags:
+ type: list
+ description: |
+ 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.
+ default: ["all"]
+ items:
+ type: str
+ convert_types:
+ - int
+ description: Tag value.
l3_interfaces:
documentation_options:
table: network-services-vrfs-l3-interfaces-settings
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_svi_settings.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_svi_settings.schema.yml
index 52de0307e95..e5d854bf549 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_svi_settings.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_svi_settings.schema.yml
@@ -133,18 +133,6 @@ $defs:
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 seperator which will override the full RD.
- tags:
- type: list
- description: |
- 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.
- default: ["all"]
- items:
- type: str
- convert_types:
- - int
- description: Tag value.
trunk_groups:
type: list
items: