diff --git a/python-avd/pyavd/__init__.py b/python-avd/pyavd/__init__.py index 5ccd53885f0..8b5862dd42b 100644 --- a/python-avd/pyavd/__init__.py +++ b/python-avd/pyavd/__init__.py @@ -17,7 +17,7 @@ __author__ = "Arista Networks" __copyright__ = "Copyright 2023 Arista Networks" __license__ = "Apache 2.0" -__version__ = "4.4.0b2" +__version__ = "4.5.0b2" __all__ = [ "get_avd_facts", diff --git a/python-avd/scripts/export_test_vars.yml b/python-avd/scripts/export_test_vars.yml index a491335335c..4e833876a5c 100644 --- a/python-avd/scripts/export_test_vars.yml +++ b/python-avd/scripts/export_test_vars.yml @@ -31,27 +31,29 @@ - vars - configs - structured_configs + - documentation delegate_to: localhost - name: Copy structured_configs ansible.builtin.shell: - cmd: "cp -rT {{ scenario_dir }}/intended/structured_configs/ {{ pyavd_test_artifacts_dir }}/{{ testdir }}/structured_configs/" + cmd: "cp {{ scenario_dir }}/intended/structured_configs/*.yml {{ pyavd_test_artifacts_dir }}/{{ testdir }}/structured_configs/" run_once: true delegate_to: localhost - when: lookup("ansible.builtin.first_found", scenario_dir ~ "/intended/structured_configs", skip=true) + when: lookup("ansible.builtin.fileglob", scenario_dir ~ "/intended/structured_configs/*.yml", skip=true) - name: Copy configs ansible.builtin.shell: - cmd: "cp -rT {{ scenario_dir }}/intended/configs/ {{ pyavd_test_artifacts_dir }}/{{ testdir }}/configs/" + cmd: "cp {{ scenario_dir }}/intended/configs/*.cfg {{ pyavd_test_artifacts_dir }}/{{ testdir }}/configs/" run_once: true delegate_to: localhost + when: lookup("ansible.builtin.fileglob", scenario_dir ~ "/intended/configs/*.cfg", skip=true) - name: Copy documentation ansible.builtin.shell: - cmd: "cp -rT {{ scenario_dir }}/documentation/devices/ {{ pyavd_test_artifacts_dir }}/{{ testdir }}/documentation/" + cmd: "cp {{ scenario_dir }}/documentation/devices/*.md {{ pyavd_test_artifacts_dir }}/{{ testdir }}/documentation/" run_once: true delegate_to: localhost - when: lookup("ansible.builtin.first_found", scenario_dir ~ "/documentation/devices", skip=true) + when: lookup("ansible.builtin.fileglob", scenario_dir ~ "/documentation/devices/*.md", skip=true) - name: Set fact with hostvars to force templating ansible.builtin.set_fact: diff --git a/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md b/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md index 695ea560c91..b41d732eccb 100644 --- a/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md +++ b/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md @@ -7,82 +7,82 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | - | [<network_services_keys.name>](## "<network_services_keys.name>") | List, items: Dictionary | | | | | - | [  - name](## "<network_services_keys.name>.[].name") | String | Required, Unique | | | Specify a tenant name.
Tenant provide a construct to group L3 VRFs and L2 VLANs.
Networks services can be filtered by tenant name.
| - | [    evpn_l2_multicast](## "<network_services_keys.name>.[].evpn_l2_multicast") | Dictionary | | | | Enable EVPN L2 Multicast for all SVIs and l2vlans within Tenant.
- Multicast group binding is created only for Multicast traffic. BULL traffic will use ingress-replication.
- Configures binding between VXLAN, VLAN, and multicast group IPv4 address using the following formula:
< evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool > + < vlan_id - 1 > + < evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset >.
- The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range.
- Enables `redistribute igmp` on the router bgp MAC VRF.
- When evpn_l2_multicast.enabled is true for a VLAN or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled - overriding those individual settings.
| - | [      enabled](## "<network_services_keys.name>.[].evpn_l2_multicast.enabled") | Boolean | | | | | - | [      underlay_l2_multicast_group_ipv4_pool](## "<network_services_keys.name>.[].evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool") | String | | | | IPv4_address/Mask | - | [      underlay_l2_multicast_group_ipv4_pool_offset](## "<network_services_keys.name>.[].evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset") | Integer | | | | | - | [    evpn_l3_multicast](## "<network_services_keys.name>.[].evpn_l3_multicast") | Dictionary | | | | Enable L3 Multicast for all SVIs and l3vlans within Tenant.
- In the evpn-l3ls design type, this enables L3 EVPN Multicast (aka OISM)'.
- Multicast group binding for VRF is created only for Multicast traffic. BULL traffic will use ingress-replication.
- Configures binding between VXLAN, VLAN, and multicast group IPv4 address using the following formula:
< l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool > + < vrf_vni - 1 > + < l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool_offset >.
- The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range.
- If enabled on an SVI using the anycast default gateway feature, a diagnostic loopback (see below) MUST be configured to source IGMP traffic.
- Enables `evpn multicast` on the router bgp VRF.
- When enabled on an SVI:
- If switch is part of an MLAG pair, enables "pim ipv4 sparse-mode" on the SVI.
- If switch is standalone or A-A MH, enables "ip igmp" on the SVI.
- If "ip address virtual" is configured, enables "pim ipv4 local-interface" and uses the diagnostic Loopback defined in the VRF
| - | [      enabled](## "<network_services_keys.name>.[].evpn_l3_multicast.enabled") | Boolean | | | | | - | [      evpn_underlay_l3_multicast_group_ipv4_pool](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool") | String | Required | | | IPv4_address/Mask | - | [      evpn_underlay_l3_multicast_group_ipv4_pool_offset](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool_offset") | Integer | | | | | - | [      evpn_peg](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_peg") | List, items: Dictionary | | | | For each group of nodes, allow configuration of EVPN PEG options.
The first group of settings where the device's hostname is present in the 'nodes' list will be used.
| - | [        - nodes](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_peg.[].nodes") | List, items: String | | | | A description will be applied to all nodes with RP addresses configured if not set. | - | [            - <str>](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_peg.[].nodes.[].<str>") | String | | | | | - | [          transit](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_peg.[].transit") | Boolean | | | | Enable EVPN PEG transit mode. | - | [    pim_rp_addresses](## "<network_services_keys.name>.[].pim_rp_addresses") | List, items: Dictionary | | | | For each group of nodes, allow configuration of RP Addresses & associated groups.
| - | [      - rps](## "<network_services_keys.name>.[].pim_rp_addresses.[].rps") | List, items: String | | | Min Length: 1 | List of Rendevouz Points. | - | [          - <str>](## "<network_services_keys.name>.[].pim_rp_addresses.[].rps.[].<str>") | String | | | | RP address. | - | [        nodes](## "<network_services_keys.name>.[].pim_rp_addresses.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Configuration Will be applied to all nodes if not set.
| - | [          - <str>](## "<network_services_keys.name>.[].pim_rp_addresses.[].nodes.[].<str>") | String | | | | | - | [        groups](## "<network_services_keys.name>.[].pim_rp_addresses.[].groups") | List, items: String | | | | | - | [          - <str>](## "<network_services_keys.name>.[].pim_rp_addresses.[].groups.[].<str>") | String | | | | Group_prefix/mask. | - | [    igmp_snooping_querier](## "<network_services_keys.name>.[].igmp_snooping_querier") | Dictionary | | | | Enable IGMP snooping querier for each SVI/l2vlan within tenant, by default using IP address of Loopback 0.
When enabled, IGMP snooping querier will only be configured on L3 devices, i.e., uplink_type: p2p.
| - | [      enabled](## "<network_services_keys.name>.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if "evpn_l2_multicast" is enabled. | - | [      source_address](## "<network_services_keys.name>.[].igmp_snooping_querier.source_address") | String | | | Format: ipv4 | Default IP address of Loopback0 | - | [      version](## "<network_services_keys.name>.[].igmp_snooping_querier.version") | Integer | | `2` | Valid Values:
- 1
- 2
- 3 | | - | [    vrfs](## "<network_services_keys.name>.[].vrfs") | List, items: Dictionary | | | | VRFs will only be configured on a node if any of the underlying objects like `svis` or `l3_interfaces` apply to the node.

It is recommended to only define a VRF in one Tenant. If the same VRF name is used across multiple tenants and those tenants
are accepted by `filter.tenants` on the node, any object set under the duplicate VRFs must either be unique or be an exact match.

VRF "default" is partially supported under network-services. Currently the supported options for "default" vrf are route-target,
route-distinguisher settings, structured_config, raw_eos_cli in bgp and SVIs are the only supported interface type.
Vlan-aware-bundles are supported as well inside default vrf. OSPF is not supported currently.
| - | [      - name](## "<network_services_keys.name>.[].vrfs.[].name") | String | Required, Unique | | | | - | [        evpn_l3_multicast](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled`.
Allow override of `.[].evpn_l3_multicast` node_settings.
Requires `evpn_multicast` to also be set to `true`.
| - | [          enabled](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.enabled") | Boolean | | | | | - | [          evpn_peg](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.evpn_peg") | List, items: Dictionary | | | | For each group of nodes, allow configuration of EVPN PEG features. | - | [            - nodes](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.evpn_peg.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Will apply to all nodes with RP addresses configured if not set.
| - | [                - <str>](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.evpn_peg.[].nodes.[].<str>") | String | | | | | - | [              transit](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.evpn_peg.[].transit") | Boolean | | `False` | | Enable EVPN PEG transit mode. | - | [        pim_rp_addresses](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses") | List, items: Dictionary | | | | For each group of nodes, allow configuration of RP Addresses & associated groups.
| - | [          - rps](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].rps") | List, items: String | | | | A minimum of one RP must be specified. | - | [              - <str>](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].rps.[].<str>") | String | | | | RP address. | - | [            nodes](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Configuration Will be applied to all nodes if not set.
| - | [              - <str>](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].nodes.[].<str>") | String | | | | | - | [            groups](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].groups") | List, items: String | | | | | - | [              - <str>](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].groups.[].<str>") | String | | | | Group_prefix/mask. | - | [        evpn_l2_multi_domain](## "<network_services_keys.name>.[].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](## "<network_services_keys.name>.[].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](## "<network_services_keys.name>.[].vrfs.[].svis.[].id") | Integer | Required, Unique | | Min: 1
Max: 4096 | SVI interface id and VLAN id. | - | [            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 | - | [                evpn_l2_multicast](## "<network_services_keys.name>.[].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](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].evpn_l2_multicast.enabled") | Boolean | | | | | - | [                evpn_l3_multicast](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.
Requires `evpn_multicast` to also be set to `true`.
| - | [                  enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].evpn_l3_multicast.enabled") | Boolean | | | | | - | [                igmp_snooping_enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_enabled") | Boolean | | | | Enable IGMP Snooping (Enabled by default on EOS). | - | [                igmp_snooping_querier](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier") | Dictionary | | | | | - | [                  enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. | - | [                  source_address](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
| - | [                  version](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). | - | [            evpn_l2_multicast](## "<network_services_keys.name>.[].vrfs.[].svis.[].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](## "<network_services_keys.name>.[].vrfs.[].svis.[].evpn_l2_multicast.enabled") | Boolean | | | | | - | [            evpn_l3_multicast](## "<network_services_keys.name>.[].vrfs.[].svis.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.
Requires `evpn_multicast` to also be set to `true`.
| - | [              enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].evpn_l3_multicast.enabled") | Boolean | | | | | - | [            igmp_snooping_enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_enabled") | Boolean | | | | Enable IGMP Snooping (Enabled by default on EOS). | - | [            igmp_snooping_querier](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_querier") | Dictionary | | | | | - | [              enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. | - | [              source_address](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
| - | [              version](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). | - | [    l2vlans](## "<network_services_keys.name>.[].l2vlans") | List, items: Dictionary | | | | Define L2 network services organized by vlan id. | - | [      - id](## "<network_services_keys.name>.[].l2vlans.[].id") | Integer | Required, Unique | | Min: 1
Max: 4094 | VLAN ID | - | [        evpn_l2_multicast](## "<network_services_keys.name>.[].l2vlans.[].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](## "<network_services_keys.name>.[].l2vlans.[].evpn_l2_multicast.enabled") | Boolean | | | | | - | [        igmp_snooping_enabled](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_enabled") | Boolean | | `True` | | Activate or deactivate IGMP snooping. | - | [        igmp_snooping_querier](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_querier") | Dictionary | | | | Enable igmp snooping querier, by default using IP address of Loopback 0.
When enabled, igmp snooping querier will only be configured on l3 devices, i.e., uplink_type: p2p.
| - | [          enabled](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. | - | [          source_address](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
| - | [          version](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_querier.version") | Integer | | `2` | Valid Values:
- 1
- 2
- 3 | | + | [<network_services_keys.name>](## "") | List, items: Dictionary | | | | | + | [  - name](## ".[].name") | String | Required, Unique | | | Specify a tenant name.
Tenant provide a construct to group L3 VRFs and L2 VLANs.
Networks services can be filtered by tenant name.
| + | [    evpn_l2_multicast](## ".[].evpn_l2_multicast") | Dictionary | | | | Enable EVPN L2 Multicast for all SVIs and l2vlans within Tenant.
- Multicast group binding is created only for Multicast traffic. BULL traffic will use ingress-replication.
- Configures binding between VXLAN, VLAN, and multicast group IPv4 address using the following formula:
< evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool > + < vlan_id - 1 > + < evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset >.
- The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range.
- Enables `redistribute igmp` on the router bgp MAC VRF.
- When evpn_l2_multicast.enabled is true for a VLAN or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled - overriding those individual settings.
| + | [      enabled](## ".[].evpn_l2_multicast.enabled") | Boolean | | | | | + | [      underlay_l2_multicast_group_ipv4_pool](## ".[].evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool") | String | | | | IPv4_address/Mask | + | [      underlay_l2_multicast_group_ipv4_pool_offset](## ".[].evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset") | Integer | | | | | + | [    evpn_l3_multicast](## ".[].evpn_l3_multicast") | Dictionary | | | | Enable L3 Multicast for all SVIs and l3vlans within Tenant.
- In the evpn-l3ls design type, this enables L3 EVPN Multicast (aka OISM)'.
- Multicast group binding for VRF is created only for Multicast traffic. BULL traffic will use ingress-replication.
- Configures binding between VXLAN, VLAN, and multicast group IPv4 address using the following formula:
< l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool > + < vrf_vni - 1 > + < l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool_offset >.
- The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range.
- If enabled on an SVI using the anycast default gateway feature, a diagnostic loopback (see below) MUST be configured to source IGMP traffic.
- Enables `evpn multicast` on the router bgp VRF.
- When enabled on an SVI:
- If switch is part of an MLAG pair, enables "pim ipv4 sparse-mode" on the SVI.
- If switch is standalone or A-A MH, enables "ip igmp" on the SVI.
- If "ip address virtual" is configured, enables "pim ipv4 local-interface" and uses the diagnostic Loopback defined in the VRF
| + | [      enabled](## ".[].evpn_l3_multicast.enabled") | Boolean | | | | | + | [      evpn_underlay_l3_multicast_group_ipv4_pool](## ".[].evpn_l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool") | String | Required | | | IPv4_address/Mask | + | [      evpn_underlay_l3_multicast_group_ipv4_pool_offset](## ".[].evpn_l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool_offset") | Integer | | | | | + | [      evpn_peg](## ".[].evpn_l3_multicast.evpn_peg") | List, items: Dictionary | | | | For each group of nodes, allow configuration of EVPN PEG options.
The first group of settings where the device's hostname is present in the 'nodes' list will be used.
| + | [        - nodes](## ".[].evpn_l3_multicast.evpn_peg.[].nodes") | List, items: String | | | | A description will be applied to all nodes with RP addresses configured if not set. | + | [            - <str>](## ".[].evpn_l3_multicast.evpn_peg.[].nodes.[]") | String | | | | | + | [          transit](## ".[].evpn_l3_multicast.evpn_peg.[].transit") | Boolean | | | | Enable EVPN PEG transit mode. | + | [    pim_rp_addresses](## ".[].pim_rp_addresses") | List, items: Dictionary | | | | For each group of nodes, allow configuration of RP Addresses & associated groups.
| + | [      - rps](## ".[].pim_rp_addresses.[].rps") | List, items: String | | | Min Length: 1 | List of Rendevouz Points. | + | [          - <str>](## ".[].pim_rp_addresses.[].rps.[]") | String | | | | RP address. | + | [        nodes](## ".[].pim_rp_addresses.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Configuration Will be applied to all nodes if not set.
| + | [          - <str>](## ".[].pim_rp_addresses.[].nodes.[]") | String | | | | | + | [        groups](## ".[].pim_rp_addresses.[].groups") | List, items: String | | | | | + | [          - <str>](## ".[].pim_rp_addresses.[].groups.[]") | String | | | | Group_prefix/mask. | + | [    igmp_snooping_querier](## ".[].igmp_snooping_querier") | Dictionary | | | | Enable IGMP snooping querier for each SVI/l2vlan within tenant, by default using IP address of Loopback 0.
When enabled, IGMP snooping querier will only be configured on L3 devices, i.e., uplink_type: p2p.
| + | [      enabled](## ".[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if "evpn_l2_multicast" is enabled. | + | [      source_address](## ".[].igmp_snooping_querier.source_address") | String | | | Format: ipv4 | Default IP address of Loopback0 | + | [      version](## ".[].igmp_snooping_querier.version") | Integer | | `2` | Valid Values:
- 1
- 2
- 3 | | + | [    vrfs](## ".[].vrfs") | List, items: Dictionary | | | | VRFs will only be configured on a node if any of the underlying objects like `svis` or `l3_interfaces` apply to the node.

It is recommended to only define a VRF in one Tenant. If the same VRF name is used across multiple tenants and those tenants
are accepted by `filter.tenants` on the node, any object set under the duplicate VRFs must either be unique or be an exact match.

VRF "default" is partially supported under network-services. Currently the supported options for "default" vrf are route-target,
route-distinguisher settings, structured_config, raw_eos_cli in bgp and SVIs are the only supported interface type.
Vlan-aware-bundles are supported as well inside default vrf. OSPF is not supported currently.
| + | [      - name](## ".[].vrfs.[].name") | String | Required, Unique | | | | + | [        evpn_l3_multicast](## ".[].vrfs.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled`.
Allow override of `.[].evpn_l3_multicast` node_settings.
Requires `evpn_multicast` to also be set to `true`.
| + | [          enabled](## ".[].vrfs.[].evpn_l3_multicast.enabled") | Boolean | | | | | + | [          evpn_peg](## ".[].vrfs.[].evpn_l3_multicast.evpn_peg") | List, items: Dictionary | | | | For each group of nodes, allow configuration of EVPN PEG features. | + | [            - nodes](## ".[].vrfs.[].evpn_l3_multicast.evpn_peg.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Will apply to all nodes with RP addresses configured if not set.
| + | [                - <str>](## ".[].vrfs.[].evpn_l3_multicast.evpn_peg.[].nodes.[]") | String | | | | | + | [              transit](## ".[].vrfs.[].evpn_l3_multicast.evpn_peg.[].transit") | Boolean | | `False` | | Enable EVPN PEG transit mode. | + | [        pim_rp_addresses](## ".[].vrfs.[].pim_rp_addresses") | List, items: Dictionary | | | | For each group of nodes, allow configuration of RP Addresses & associated groups.
| + | [          - rps](## ".[].vrfs.[].pim_rp_addresses.[].rps") | List, items: String | | | | A minimum of one RP must be specified. | + | [              - <str>](## ".[].vrfs.[].pim_rp_addresses.[].rps.[]") | String | | | | RP address. | + | [            nodes](## ".[].vrfs.[].pim_rp_addresses.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Configuration Will be applied to all nodes if not set.
| + | [              - <str>](## ".[].vrfs.[].pim_rp_addresses.[].nodes.[]") | String | | | | | + | [            groups](## ".[].vrfs.[].pim_rp_addresses.[].groups") | List, items: String | | | | | + | [              - <str>](## ".[].vrfs.[].pim_rp_addresses.[].groups.[]") | String | | | | Group_prefix/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`.
| + | [        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, Unique | | 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 | + | [                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 | | | | | + | [                evpn_l3_multicast](## ".[].vrfs.[].svis.[].nodes.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.
Requires `evpn_multicast` to also be set to `true`.
| + | [                  enabled](## ".[].vrfs.[].svis.[].nodes.[].evpn_l3_multicast.enabled") | Boolean | | | | | + | [                igmp_snooping_enabled](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_enabled") | Boolean | | | | Enable IGMP Snooping (Enabled by default on EOS). | + | [                igmp_snooping_querier](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier") | Dictionary | | | | | + | [                  enabled](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. | + | [                  source_address](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
| + | [                  version](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). | + | [            evpn_l2_multicast](## ".[].vrfs.[].svis.[].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.[].evpn_l2_multicast.enabled") | Boolean | | | | | + | [            evpn_l3_multicast](## ".[].vrfs.[].svis.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.
Requires `evpn_multicast` to also be set to `true`.
| + | [              enabled](## ".[].vrfs.[].svis.[].evpn_l3_multicast.enabled") | Boolean | | | | | + | [            igmp_snooping_enabled](## ".[].vrfs.[].svis.[].igmp_snooping_enabled") | Boolean | | | | Enable IGMP Snooping (Enabled by default on EOS). | + | [            igmp_snooping_querier](## ".[].vrfs.[].svis.[].igmp_snooping_querier") | Dictionary | | | | | + | [              enabled](## ".[].vrfs.[].svis.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. | + | [              source_address](## ".[].vrfs.[].svis.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
| + | [              version](## ".[].vrfs.[].svis.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). | + | [    l2vlans](## ".[].l2vlans") | List, items: Dictionary | | | | Define L2 network services organized by vlan id. | + | [      - id](## ".[].l2vlans.[].id") | Integer | Required, Unique | | Min: 1
Max: 4094 | VLAN ID | + | [        evpn_l2_multicast](## ".[].l2vlans.[].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](## ".[].l2vlans.[].evpn_l2_multicast.enabled") | Boolean | | | | | + | [        igmp_snooping_enabled](## ".[].l2vlans.[].igmp_snooping_enabled") | Boolean | | `True` | | Activate or deactivate IGMP snooping. | + | [        igmp_snooping_querier](## ".[].l2vlans.[].igmp_snooping_querier") | Dictionary | | | | Enable igmp snooping querier, by default using IP address of Loopback 0.
When enabled, igmp snooping querier will only be configured on l3 devices, i.e., uplink_type: p2p.
| + | [          enabled](## ".[].l2vlans.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. | + | [          source_address](## ".[].l2vlans.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
| + | [          version](## ".[].l2vlans.[].igmp_snooping_querier.version") | Integer | | `2` | Valid Values:
- 1
- 2
- 3 | | | [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 | + | [  - 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 | | | l3_leaf 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 | | | | | | [        evpn_l3_multicast](## "svi_profiles.[].nodes.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.
Requires `evpn_multicast` to also be set to `true`.
| @@ -91,7 +91,7 @@ | [        igmp_snooping_querier](## "svi_profiles.[].nodes.[].igmp_snooping_querier") | Dictionary | | | | | | [          enabled](## "svi_profiles.[].nodes.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. | | [          source_address](## "svi_profiles.[].nodes.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
| - | [          version](## "svi_profiles.[].nodes.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). | + | [          version](## "svi_profiles.[].nodes.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). | | [    evpn_l2_multicast](## "svi_profiles.[].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.[].evpn_l2_multicast.enabled") | Boolean | | | | | | [    evpn_l3_multicast](## "svi_profiles.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.
Requires `evpn_multicast` to also be set to `true`.
| @@ -100,103 +100,300 @@ | [    igmp_snooping_querier](## "svi_profiles.[].igmp_snooping_querier") | Dictionary | | | | | | [      enabled](## "svi_profiles.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. | | [      source_address](## "svi_profiles.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
| - | [      version](## "svi_profiles.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). | + | [      version](## "svi_profiles.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). | === "YAML" ```yaml : - - name: + + # Specify a tenant name. + # Tenant provide a construct to group L3 VRFs and L2 VLANs. + # Networks services can be filtered by tenant name. + - name: + + # Enable EVPN L2 Multicast for all SVIs and l2vlans within Tenant. + # - Multicast group binding is created only for Multicast traffic. BULL traffic will use ingress-replication. + # - Configures binding between VXLAN, VLAN, and multicast group IPv4 address using the following formula: + # < evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool > + < vlan_id - 1 > + < evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset >. + # - The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range. + # - Enables `redistribute igmp` on the router bgp MAC VRF. + # - When evpn_l2_multicast.enabled is true for a VLAN or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled - overriding those individual settings. evpn_l2_multicast: enabled: + + # IPv4_address/Mask underlay_l2_multicast_group_ipv4_pool: underlay_l2_multicast_group_ipv4_pool_offset: + + # Enable L3 Multicast for all SVIs and l3vlans within Tenant. + # - In the evpn-l3ls design type, this enables L3 EVPN Multicast (aka OISM)'. + # - Multicast group binding for VRF is created only for Multicast traffic. BULL traffic will use ingress-replication. + # - Configures binding between VXLAN, VLAN, and multicast group IPv4 address using the following formula: + # < l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool > + < vrf_vni - 1 > + < l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool_offset >. + # - The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range. + # - If enabled on an SVI using the anycast default gateway feature, a diagnostic loopback (see below) MUST be configured to source IGMP traffic. + # - Enables `evpn multicast` on the router bgp VRF. + # - When enabled on an SVI: + # - If switch is part of an MLAG pair, enables "pim ipv4 sparse-mode" on the SVI. + # - If switch is standalone or A-A MH, enables "ip igmp" on the SVI. + # - If "ip address virtual" is configured, enables "pim ipv4 local-interface" and uses the diagnostic Loopback defined in the VRF evpn_l3_multicast: enabled: - evpn_underlay_l3_multicast_group_ipv4_pool: + + # IPv4_address/Mask + evpn_underlay_l3_multicast_group_ipv4_pool: evpn_underlay_l3_multicast_group_ipv4_pool_offset: + + # For each group of nodes, allow configuration of EVPN PEG options. + # The first group of settings where the device's hostname is present in the 'nodes' list will be used. evpn_peg: + + # A description will be applied to all nodes with RP addresses configured if not set. - nodes: - + + # Enable EVPN PEG transit mode. transit: + + # For each group of nodes, allow configuration of RP Addresses & associated groups. pim_rp_addresses: - - rps: + + # List of Rendevouz Points. + - rps: # >=1 items + + # RP address. - + + # Restrict configuration to specific nodes. + # Configuration Will be applied to all nodes if not set. nodes: - groups: + + # Group_prefix/mask. - + + # Enable IGMP snooping querier for each SVI/l2vlan within tenant, by default using IP address of Loopback 0. + # When enabled, IGMP snooping querier will only be configured on L3 devices, i.e., uplink_type: p2p. igmp_snooping_querier: + + # Will be enabled automatically if "evpn_l2_multicast" is enabled. enabled: + + # Default IP address of Loopback0 source_address: - version: + version: + + # VRFs will only be configured on a node if any of the underlying objects like `svis` or `l3_interfaces` apply to the node. + + # It is recommended to only define a VRF in one Tenant. If the same VRF name is used across multiple tenants and those tenants + # are accepted by `filter.tenants` on the node, any object set under the duplicate VRFs must either be unique or be an exact match. + + # VRF "default" is partially supported under network-services. Currently the supported options for "default" vrf are route-target, + # route-distinguisher settings, structured_config, raw_eos_cli in bgp and SVIs are the only supported interface type. + # Vlan-aware-bundles are supported as well inside default vrf. OSPF is not supported currently. vrfs: - - name: + - name: + + # Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled`. + # Allow override of `.[].evpn_l3_multicast` node_settings. + # Requires `evpn_multicast` to also be set to `true`. evpn_l3_multicast: enabled: + + # For each group of nodes, allow configuration of EVPN PEG features. evpn_peg: + + # Restrict configuration to specific nodes. + # Will apply to all nodes with RP addresses configured if not set. - nodes: - - transit: + + # Enable EVPN PEG transit mode. + transit: + + # For each group of nodes, allow configuration of RP Addresses & associated groups. pim_rp_addresses: + + # A minimum of one RP must be specified. - rps: + + # RP address. - + + # Restrict configuration to specific nodes. + # Configuration Will be applied to all nodes if not set. nodes: - groups: + + # Group_prefix/mask. - + + # 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: - - id: + + # SVI interface id and VLAN id. + - id: + + # 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. nodes: - - node: + + # l3_leaf inventory hostname + - node: + + # 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`. evpn_l2_multicast: enabled: + + # Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`. + # Requires `evpn_multicast` to also be set to `true`. evpn_l3_multicast: enabled: + + # Enable IGMP Snooping (Enabled by default on EOS). igmp_snooping_enabled: igmp_snooping_querier: + + # Will be enabled automatically if evpn_l2_multicast is enabled. enabled: + + # IPv4_address + # If not set, IP address of "Loopback0" will be used. source_address: - version: + + # IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). + version: + + # 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`. evpn_l2_multicast: enabled: + + # Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`. + # Requires `evpn_multicast` to also be set to `true`. evpn_l3_multicast: enabled: + + # Enable IGMP Snooping (Enabled by default on EOS). igmp_snooping_enabled: igmp_snooping_querier: + + # Will be enabled automatically if evpn_l2_multicast is enabled. enabled: + + # IPv4_address + # If not set, IP address of "Loopback0" will be used. source_address: - version: + + # IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). + version: + + # Define L2 network services organized by vlan id. l2vlans: - - id: + + # VLAN ID + - id: + + # 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`. evpn_l2_multicast: enabled: - igmp_snooping_enabled: + + # Activate or deactivate IGMP snooping. + igmp_snooping_enabled: + + # Enable igmp snooping querier, by default using IP address of Loopback 0. + # When enabled, igmp snooping querier will only be configured on l3 devices, i.e., uplink_type: p2p. igmp_snooping_querier: + + # Will be enabled automatically if evpn_l2_multicast is enabled. enabled: + + # IPv4_address + # If not set, IP address of "Loopback0" will be used. source_address: - version: + version: + + # 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 svi_profiles: - - profile: + + # Profile name + - profile: + + # 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. nodes: - - node: + + # l3_leaf inventory hostname + - node: + + # 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`. evpn_l2_multicast: enabled: + + # Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`. + # Requires `evpn_multicast` to also be set to `true`. evpn_l3_multicast: enabled: + + # Enable IGMP Snooping (Enabled by default on EOS). igmp_snooping_enabled: igmp_snooping_querier: + + # Will be enabled automatically if evpn_l2_multicast is enabled. enabled: + + # IPv4_address + # If not set, IP address of "Loopback0" will be used. source_address: - version: + + # IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). + version: + + # 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`. evpn_l2_multicast: enabled: + + # Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`. + # Requires `evpn_multicast` to also be set to `true`. evpn_l3_multicast: enabled: + + # Enable IGMP Snooping (Enabled by default on EOS). igmp_snooping_enabled: igmp_snooping_querier: + + # Will be enabled automatically if evpn_l2_multicast is enabled. enabled: + + # IPv4_address + # If not set, IP address of "Loopback0" will be used. source_address: - version: + + # IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). + version: ```