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: