Skip to content

Input variables for eos_designs

This document describes the supported input variables for the role arista.avd.eos_designs.

Since several data models have changed between AVD versions 3.x and 4.x, it is recommended to study the Porting Guide for AVD 4.x.x for existing deployments.

The input variables are documented below in tables and YAML.

Note

All input variables are validated by a schema. If additional custom keys are desired, a key starting with an underscore _, will be ignored.

Warning

Available features and variables may vary by platforms, refer to documentation on arista.com for specifics.

Supported designs

eos_designs supports multiple options such as L3LS-EVPN with 3-stage or 5-stage, L2LS and MPLS. The sections below highlight these 3 topologies, but you can extend eos_designs to support your own topology by using node_type_keys to create your own node type.

Design type

By setting the design.type variable, the default node-types described in Node Type Variables will be used.

Variable Type Required Default Value Restrictions Description
design Dictionary
  type String l3ls-evpn Valid Values:
- l3ls-evpn
- mpls
- l2ls
By setting the design.type variable, the default node-types and templates described in these documents will be used.
design:

  # By setting the design.type variable, the default node-types and templates described in these documents will be used.
  type: <str; "l3ls-evpn" | "mpls" | "l2ls"; default="l3ls-evpn">

3-stage clos topology support (Leaf & Spine)

  • The eos_designs role support various deployments with layer 3 leaf and spine (3-stage Clos) and optionally, with dedicated overlay controllers.
  • 3 stage Clos fabric can be represented as spines, L3 leafs and L2 leafs, and also referred to as a “POD”.

See the following examples using the l3ls-evpn design:

5-stage clos topology support (Super Spine)

  • The eos_designs role support lager deployments with super-spines (5-stage Clos) and optionally, with dedicated overlay controllers.
  • 5 stage Clos fabric can be represented as multiple leaf-spine structures (called PODs - Point of Delivery) interconnected by super-spines.
  • The logic to deploy every leaf-spine POD fabric remains unchanged.
  • Super-spines can be deployed as a single plane (typically chassis switches) or multiple planes.

Layer 2 Leaf Spine

  • The eos_designs role support various deployments with layer 2 leaf and spine. For example, routing may terminate at the spine level or an external L3 device.
  • The Clos fabric can be represented as L3 spines, spines, and leafs.

See the following examples using the l2ls design:

MPLS

The eos_designs role with the mpls design type supports any arbitrary physical mesh topology by combining and interconnecting different node types with the core_interfaces settings.

The following underlay routing protocols are supported:

  • ISIS-SR (default)
  • ISIS + LDP
  • ISIS-SR + LDP
  • OSPF + LDP

The following overlay routing protocols are supported:

  • IBGP (default)

Any node group of 2 or more rr-routers will form a Route Reflector cluster.

The MPLS design supports most fabric topology variables already supported by l3ls-evpn, barring the exceptions outlined below:

  • Connectivity is defined with the core_interfaces settings instead of Node type uplink settings.
  • No MLAG support.
  • No VXLAN support.
  • EVPN overlay settings are set with mpls_overlay_role and mpls_route_reflectors instead of evpn_role and evpn_route_servers.
  • No Inband Management support.

See the following example using the mpls design:

Fabric topology hierarchy

As per the diagram above, the topology hierarchy is the following:

  • fabric_name
    • dc_name
      • pod_name

You must define the fabric_name variable and it must match the Ansible inventory group name covering all devices in scope of the fabric.

Variable Type Required Default Value Restrictions Description
dc_name String POD Name is used in:
- Fabric Documentation (Optional, falls back to fabric_name)
- SNMP Location: snmp_settings.location (Optional)
- HER Overlay DC scoped flood lists: overlay_her_flood_list_scope: dc (Required)
fabric_name String Required Fabric Name, required to match Ansible Group name covering all devices in the Fabric, must be an inventory group name.
pod_name String POD Name is used in:
- Fabric Documentation (Optional, falls back to dc_name and then to fabric_name)
- SNMP Location: snmp_settings.location (Optional)
- VRF Loopbacks: vtep_diagnostic.loopback_ip_pools.pod (Required)

Recommended to be common between Spines and Leafs within a POD (One l3ls topology).
# POD Name is used in:
# - Fabric Documentation (Optional, falls back to fabric_name)
# - SNMP Location: `snmp_settings.location` (Optional)
# - HER Overlay DC scoped flood lists: `overlay_her_flood_list_scope: dc` (Required)
dc_name: <str>

# Fabric Name, required to match Ansible Group name covering all devices in the Fabric, **must** be an inventory group name.
fabric_name: <str; required>

# POD Name is used in:
# - Fabric Documentation (Optional, falls back to dc_name and then to fabric_name)
# - SNMP Location: `snmp_settings.location` (Optional)
# - VRF Loopbacks: `vtep_diagnostic.loopback_ip_pools.pod` (Required)

# Recommended to be common between Spines and Leafs within a POD (One l3ls topology).
pod_name: <str>

Fabric IP Addressing

Variable Type Required Default Value Restrictions Description
fabric_ip_addressing Dictionary
  mlag Dictionary
    algorithm String first_id Valid Values:
- first_id
- odd_id
- same_subnet
This variable defines the Multi-chassis Link Aggregation (MLAG) algorithm used.
Each MLAG link will have a /31 subnet with each subnet allocated from the relevant MLAG pool via a calculated offset.
The offset is calculated using one of the following algorithms:
- first_id: (mlag_primary_id - 1) * 2 where mlag_primary_id is the ID of the first node defined under the node_group.
This allocation method will skip every other /31 subnet making it less space efficient than odd_id.
- odd_id: (odd_id - 1) / 2. Requires the node_group to have a node with an odd ID and a node with an even ID.
- same_subnet: the offset will always be zero.
This allocation method will cause every MLAG link to be addressed with the same /31 subnet.
fabric_ip_addressing:
  mlag:

    # This variable defines the Multi-chassis Link Aggregation (MLAG) algorithm used.
    # Each MLAG link will have a /31 subnet with each subnet allocated from the relevant MLAG pool via a calculated offset.
    # The offset is calculated using one of the following algorithms:
    #   - first_id: `(mlag_primary_id - 1) * 2` where `mlag_primary_id` is the ID of the first node defined under the node_group.
    #     This allocation method will skip every other /31 subnet making it less space efficient than `odd_id`.
    #   - odd_id: `(odd_id - 1) / 2`. Requires the node_group to have a node with an odd ID and a node with an even ID.
    #   - same_subnet: the offset will always be zero.
    #     This allocation method will cause every MLAG link to be addressed with the same /31 subnet.
    algorithm: <str; "first_id" | "odd_id" | "same_subnet"; default="first_id">

Node Type Variables

The following tables provide information on the default node types that have been pre-defined in eos_designs for each design type.

To customize or create new node types, please refer to node type customization section.

L3LS EVPN

Node Type Key Underlay Router Uplink Type Default EVPN Role L2 Network Services L3 Network Services VTEP MLAG Support Connected Endpoints
super_spine ✅ p2p none ✘ ✘ ✘ ✘ ✘
spine ✅ p2p server ✘ ✘ ✘ ✘ ✘
l3leaf ✅ p2p client ✅ ✅ ✅ ✅ ✅
l2leaf ✘ port-channel none ✅ ✘ ✘ ✅ ✅
overlay_controller ✅ p2p server ✘ ✘ ✘ ✘ ✘

L2LS

Node Type Key Underlay Router Uplink Type Default EVPN Role L2 Network Services L3 Network Services VTEP MLAG Support Connected Endpoints
l3spine ✅ p2p none ✅ ✅ ✘ ✅ ✅
spine ✘ port-channel none ✅ ✘ ✘ ✅ ✅
leaf ✘ port-channel none ✅ ✘ ✘ ✅ ✅

MPLS

Node Type Key Underlay Router Uplink Type Default Overlay Role L2 Network Services L3 Network Services VTEP MLAG Support Connected Endpoints
p ✅ p2p none ✘ ✘ ✘ ✘ ✘
rr ✅ p2p server ✘ ✘ ✘ ✘ ✘
pe ✅ p2p client ✅ ✅ ✅ ✘ ✅

Node type customization

AVD provides the capability to customize your node types, supporting a variety of designs.

Note

The default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.

Default value for design l3ls-evpn
node_type_keys:

  - key: spine
    type: spine
    default_evpn_role: server
    default_ptp_priority1: 20

  - key: l3leaf
    type: l3leaf
    connected_endpoints: true
    default_evpn_role: client
    default_ptp_priority1: 30
    mlag_support: true
    network_services:
      l2: true
      l3: true
    vtep: true

  - key: l2leaf
    type: l2leaf
    connected_endpoints: true
    mlag_support: true
    network_services:
      l2: true
    underlay_router: false
    uplink_type: port-channel

  - key: super_spine
    type: super-spine

  - key: overlay_controller
    type: overlay-controller
    default_evpn_role: server
Default value for design l2ls
node_type_keys:

  - key: l3spine
    type: l3spine
    connected_endpoints: true
    default_overlay_routing_protocol: none
    default_underlay_routing_protocol: none
    mlag_support: true
    network_services:
      l2: true
      l3: true

  - key: spine
    type: spine
    connected_endpoints: true
    mlag_support: true
    network_services:
      l2: true
    underlay_router: false
    uplink_type: port-channel

  - key: leaf
    type: leaf
    connected_endpoints: true
    mlag_support: true
    network_services:
      l2: true
    underlay_router: false
    uplink_type: port-channel
Default value for design mpls
node_type_keys:

  - key: p
    type: p
    default_mpls_overlay_role: none
    default_overlay_routing_protocol: ibgp
    default_underlay_routing_protocol: isis-sr
    mpls_lsr: true

  - key: pe
    type: pe
    connected_endpoints: true
    default_evpn_encapsulation: mpls
    default_evpn_role: client
    default_mpls_overlay_role: client
    default_overlay_address_families:
      - vpn-ipv4
    default_overlay_routing_protocol: ibgp
    default_underlay_routing_protocol: isis-sr
    mpls_lsr: true
    network_services:
      l1: true
      l2: true
      l3: true

  - key: rr
    type: rr
    default_evpn_encapsulation: mpls
    default_evpn_role: server
    default_mpls_overlay_role: server
    default_overlay_address_families:
      - vpn-ipv4
    default_overlay_routing_protocol: ibgp
    default_underlay_routing_protocol: isis-sr
    mpls_lsr: true
Variable Type Required Default Value Restrictions Description
node_type_keys List, items: Dictionary Define Node Type Keys, to specify the properties of each node type in the fabric.
This allows for complete customization of the fabric layout and functionality.
node_type_keys should be defined in top level group_var for the fabric.
The default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.
  - key String Required, Unique
    type String Type value matching this node_type_key.
    connected_endpoints Boolean False Are endpoints connected to this node type.
    default_evpn_role String none Valid Values:
- none
- client
- server
Default evpn_role. Can be overridden in topology vars.
    default_ptp_priority1 Integer 127 Min: 0
Max: 255
Default PTP priority 1
    default_underlay_routing_protocol String ebgp Value is converted to lower case.
Valid Values:
- ebgp
- ibgp
- ospf
- ospf-ldp
- isis
- isis-sr
- isis-ldp
- isis-sr-ldp
- none
Set the default underlay routing_protocol.
Can be overridden by setting “underlay_routing_protocol” host/group_vars.
    default_overlay_routing_protocol String ebgp Value is converted to lower case.
Valid Values:
- ebgp
- ibgp
- her
- cvx
- none
Set the default overlay routing_protocol.
Can be overridden by setting “overlay_routing_protocol” host/group_vars.
    default_mpls_overlay_role String Valid Values:
- client
- server
- none
Set the default mpls overlay role.
Acting role in overlay control plane.
    default_overlay_address_families List, items: String Set the default overlay address families.
      - <str> String Value is converted to lower case.
Valid Values:
- evpn
- vpn-ipv4
- vpn-ipv6
    default_evpn_encapsulation String Value is converted to lower case.
Valid Values:
- mpls
- vxlan
Set the default evpn encapsulation.
    mlag_support Boolean False Can this node type support mlag.
    network_services Dictionary Will network services be deployed on this node type.
      l1 Boolean False ??
      l2 Boolean False Vlans
      l3 Boolean False VRFs, SVIs (if l2 is true).
Only supported with underlay_router.
    underlay_router Boolean True Is this node type a L3 device.
    uplink_type String p2p Valid Values:
- p2p
- port-channel
uplink_type must be “p2p” if vtep or underlay_router is true.
    vtep Boolean False Is this switch an EVPN VTEP.
    mpls_lsr Boolean False Is this switch an MPLS LSR.
    ip_addressing Dictionary Override ip_addressing templates.
      python_module String Custom Python Module to import for IP addressing.
      python_class_name String Name of Custom Python Class to import for IP addressing.
      router_id String Path to Custom J2 template.
      router_id_ipv6 String Path to Custom J2 template.
      mlag_ip_primary String Path to Custom J2 template.
      mlag_ip_secondary String Path to Custom J2 template.
      mlag_l3_ip_primary String Path to Custom J2 template.
      mlag_l3_ip_secondary String Path to Custom J2 template.
      mlag_ibgp_peering_ip_primary String Path to Custom J2 template.
      mlag_ibgp_peering_ip_secondary String Path to Custom J2 template.
      p2p_uplinks_ip String Path to Custom J2 template.
      p2p_uplinks_peer_ip String Path to Custom J2 template.
      vtep_ip_mlag String Path to Custom J2 template.
      vtep_ip String Path to Custom J2 template.
    interface_descriptions Dictionary Override interface_descriptions templates
If description templates use Jinja2, they have to strip whitespaces using {%- -%} on any code blocks.
      python_module String Custom Python Module to import for interface descriptions.
      python_class_name String Name of Custom Python Class to import for interface descriptions.
      underlay_ethernet_interfaces String Path to Custom J2 template.
      underlay_port_channel_interfaces String Path to Custom J2 template.
      mlag_ethernet_interfaces String Path to Custom J2 template.
      mlag_port_channel_interfaces String Path to Custom J2 template.
      connected_endpoints_ethernet_interfaces String Path to Custom J2 template.
      connected_endpoints_port_channel_interfaces String Path to Custom J2 template.
      overlay_loopback_interface String Path to Custom J2 template.
      vtep_loopback_interface String Path to Custom J2 template.
# Define Node Type Keys, to specify the properties of each node type in the fabric.
# This allows for complete customization of the fabric layout and functionality.
# `node_type_keys` should be defined in top level group_var for the fabric.
# The default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.
node_type_keys:
  - key: <str; required; unique>

    # Type value matching this node_type_key.
    type: <str>

    # Are endpoints connected to this node type.
    connected_endpoints: <bool; default=False>

    # Default evpn_role. Can be overridden in topology vars.
    default_evpn_role: <str; "none" | "client" | "server"; default="none">

    # Default PTP priority 1
    default_ptp_priority1: <int; 0-255; default=127>

    # Set the default underlay routing_protocol.
    # Can be overridden by setting "underlay_routing_protocol" host/group_vars.
    default_underlay_routing_protocol: <str; "ebgp" | "ibgp" | "ospf" | "ospf-ldp" | "isis" | "isis-sr" | "isis-ldp" | "isis-sr-ldp" | "none"; default="ebgp">

    # Set the default overlay routing_protocol.
    # Can be overridden by setting "overlay_routing_protocol" host/group_vars.
    default_overlay_routing_protocol: <str; "ebgp" | "ibgp" | "her" | "cvx" | "none"; default="ebgp">

    # Set the default mpls overlay role.
    # Acting role in overlay control plane.
    default_mpls_overlay_role: <str; "client" | "server" | "none">

    # Set the default overlay address families.
    default_overlay_address_families:
      - <str; "evpn" | "vpn-ipv4" | "vpn-ipv6">

    # Set the default evpn encapsulation.
    default_evpn_encapsulation: <str; "mpls" | "vxlan">

    # Can this node type support mlag.
    mlag_support: <bool; default=False>

    # Will network services be deployed on this node type.
    network_services:

      # ??
      l1: <bool; default=False>

      # Vlans
      l2: <bool; default=False>

      # VRFs, SVIs (if l2 is true).
      # Only supported with underlay_router.
      l3: <bool; default=False>

    # Is this node type a L3 device.
    underlay_router: <bool; default=True>

    # `uplink_type` must be "p2p" if `vtep` or `underlay_router` is true.
    uplink_type: <str; "p2p" | "port-channel"; default="p2p">

    # Is this switch an EVPN VTEP.
    vtep: <bool; default=False>

    # Is this switch an MPLS LSR.
    mpls_lsr: <bool; default=False>

    # Override ip_addressing templates.
    ip_addressing:

      # Custom Python Module to import for IP addressing.
      python_module: <str>

      # Name of Custom Python Class to import for IP addressing.
      python_class_name: <str>

      # Path to Custom J2 template.
      router_id: <str>

      # Path to Custom J2 template.
      router_id_ipv6: <str>

      # Path to Custom J2 template.
      mlag_ip_primary: <str>

      # Path to Custom J2 template.
      mlag_ip_secondary: <str>

      # Path to Custom J2 template.
      mlag_l3_ip_primary: <str>

      # Path to Custom J2 template.
      mlag_l3_ip_secondary: <str>

      # Path to Custom J2 template.
      mlag_ibgp_peering_ip_primary: <str>

      # Path to Custom J2 template.
      mlag_ibgp_peering_ip_secondary: <str>

      # Path to Custom J2 template.
      p2p_uplinks_ip: <str>

      # Path to Custom J2 template.
      p2p_uplinks_peer_ip: <str>

      # Path to Custom J2 template.
      vtep_ip_mlag: <str>

      # Path to Custom J2 template.
      vtep_ip: <str>

    # Override interface_descriptions templates
    # If description templates use Jinja2, they have to strip whitespaces using {%- -%} on any code blocks.
    interface_descriptions:

      # Custom Python Module to import for interface descriptions.
      python_module: <str>

      # Name of Custom Python Class to import for interface descriptions.
      python_class_name: <str>

      # Path to Custom J2 template.
      underlay_ethernet_interfaces: <str>

      # Path to Custom J2 template.
      underlay_port_channel_interfaces: <str>

      # Path to Custom J2 template.
      mlag_ethernet_interfaces: <str>

      # Path to Custom J2 template.
      mlag_port_channel_interfaces: <str>

      # Path to Custom J2 template.
      connected_endpoints_ethernet_interfaces: <str>

      # Path to Custom J2 template.
      connected_endpoints_port_channel_interfaces: <str>

      # Path to Custom J2 template.
      overlay_loopback_interface: <str>

      # Path to Custom J2 template.
      vtep_loopback_interface: <str>

Context for ip_addressing templates

To help calculate the custom IP addressing, the following contextual variables are available to the custom templates:

router_id:

  • {{ switch_id }}
  • {{ loopback_ipv4_pool }}
  • {{ loopback_ipv4_offset }}
  • All group/hostvars

mlag_ip_primary & mlag_ip_secondary:

  • {{ mlag_primary_id }}
  • {{ mlag_secondary_id }}
  • {{ switch_data.combined.mlag_peer_ipv4_pool }}
  • All group/hostvars

mlag_l3_ip_primary & mlag_l3_ip_secondary:

  • {{ mlag_primary_id }}
  • {{ mlag_secondary_id }}
  • {{ switch_data.combined.mlag_peer_l3_ipv4_pool }}
  • All group/hostvars

p2p_uplinks_ip & p2p_uplinks_peer_ip:

  • {{ switch.uplink_ipv4_pool }}
  • {{ switch.id }}
  • {{ switch.max_uplink_switches }}
  • {{ switch.max_parallel_uplinks }}
  • {{ uplink_switch_index }}
  • All group/hostvars

vtep_ip_mlag:

  • {{ switch_vtep_loopback_ipv4_pool }}
  • {{ mlag_primary_id }}
  • {{ loopback_ipv4_offset }}
  • All group/hostvars

vtep_ip:

  • {{ switch_vtep_loopback_ipv4_pool }}
  • {{ switch_id }}
  • {{ loopback_ipv4_offset }}
  • All group/hostvars

While all templates can leverage the internal switch facts (switch.*) to customize the interface descriptions, the values are not part of the officially supported data models, and may change without notice.

Context for interface_descriptions templates

To help format the custom interface descriptions, the following contextual variables are available to the custom templates:

underlay_ethernet_interfaces:

  • {{ link.peer }}
  • {{ link.peer_interface }}
  • {{ link.type }} (underlay_p2p or underlay_l2)
  • All group/hostvars

underlay_port_channel_interfaces:

  • {{ link.channel_description }}
  • {{ link.channel_group_id }}
  • {{ link.peer_channel_group_id }}
  • All group/hostvars

mlag_ethernet_interfaces:

  • {{ mlag_interface }}
  • {{ mlag_peer }}
  • All group/hostvars

mlag_port_channel_interfaces:

  • {{ mlag_interfaces }}
  • {{ mlag_peer }}
  • All group/hostvars

connected_endpoints_ethernet_interfaces:

  • {{ peer }}
  • {{ peer_interface }}
  • All group/hostvars

connected_endpoints_port_channel_interfaces:

  • {{ peer }}
  • {{ adapter_port_channel_description }}
  • All group/hostvars

While all templates can leverage the internal switch facts (switch.*) to customize the interface descriptions, the values are not part of the officially supported data models and may change without notice.

Type setting

  • The type: variable needs to be defined for each device in the fabric.
  • This is leveraged to load the appropriate settings to generate the configuration.

Tip

The node type setting can be automatically derived from a switch name by defining the patterns in the default_node_types data model.

Type setting example
# Defined in SPINE.yml file
# Can also be set directly in your inventory file under spine group
type: spine

# Defined in L3LEAFS.yml
# Can also be set directly in your inventory file under l3leaf group
type: l3leaf

# Defined in L2LEAFS.yml
# Can also be set directly in your inventory file under l2leaf group
type: l2leaf

# Defined in SUPER-SPINES.yml
# Can also be set directly in your inventory file under super-spine group
type: super-spine

# Defined in ROUTE-SERVERS.yml
# Can also be set directly in your inventory file under route-server group
type: overlay-controller
Variable Type Required Default Value Restrictions Description
type String Valid Values:
-
The type: variable needs to be defined for each device in the fabric.
This is leveraged to load the appropriate template to generate the configuration.
# The `type:` variable needs to be defined for each device in the fabric.
# This is leveraged to load the appropriate template to generate the configuration.
type: <str; "<value(s) of node_type_keys.type>">

Default node types settings

Node types can be defined statically on each node or in each group of nodes. By leveraging default_node_types, regular expressions can be used to determine the node type based on the hostname.

Warning

Please note that using the default_node_types functionality will cause certain tests in the eos_validate_state role to not be executed. This functionality will be restored as part of a later update to eos_validate_state and this note will then be removed.

Variable Type Required Default Value Restrictions Description
default_node_types List, items: Dictionary Uses hostname matches against a regular expression to determine the node type.
  - node_type String Required, Unique Resulting node type when regex matches.
    match_hostnames List, items: String Required Regular expressions to match against hostnames.
      - <str> String Required Regex needs to match full hostname (i.e. is bounded by ^ and $ elements).
# Uses hostname matches against a regular expression to determine the node type.
default_node_types:

    # Resulting node type when regex matches.
  - node_type: <str; required; unique>

    # Regular expressions to match against hostnames.
    match_hostnames: # required

        # Regex needs to match full hostname (i.e. is bounded by ^ and $ elements).
      - <str; required>

Node type settings

Node type settings are defined under the node_type_keys.key i.e spine:, l3leaf:, l2leaf: to configure management, underlay, overlay functionality.

Node type structure

All node types have the same structure based on defaults, node_group, node_group.node, node and all variables can be defined in any section and support inheritance like this:

Under node_type_keys.key:

defaults <- node_group <- node_group.node <- node

Tip

Define common node settings under defaults. This reduces user input requirements, limiting errors.

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

Node type common configuration

Define your nodes, id, management and common configuration elements.

Tip

If a node is not deployed, leverage is_deployed: false to indicate the node as offline.

Info

A static unique identifier (id) is assigned to each device. This is leveraged to derive the IP address assignment from each summary defined in the Fabric Underlay and Overlay Topology Variables.

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    id Integer Unique identifier used for IP addressing and other algorithms.
    platform String Arista platform family.
    mac_address String Leverage to document management interface mac address.
    system_mac_address String System MAC Address in this following format: “xx:xx:xx:xx:xx:xx”.
Set to the same MAC address as available in “show version” on the device.
“system_mac_address” can also be set directly as a hostvar.
If both are set, the setting under node type settings takes precedence.
    serial_number String Set to the Serial Number of the device.
Only used for documentation purpose in the fabric documentation and part of the structured_config.
“serial_number” can also be set directly as a hostvar.
If both are set, the setting under node type settings takes precedence.
    rack String Rack that the switch is located in (only used in snmp_settings location).
    mgmt_ip String Format: cidr Node management interface IPv4 address.
    ipv6_mgmt_ip String Format: cidr Node management interface IPv6 address.
    mgmt_interface String Management Interface Name.
Default -> platform_management_interface -> mgmt_interface -> “Management1”.
    lacp_port_id_range Dictionary This will generate the “lacp port-id range”, “begin” and “end” values based on node “id” and the number of nodes in the “node_group”.
Unique LACP port-id ranges are recommended for EVPN Multihoming designs.
      enabled Boolean False
      size Integer 128 Recommended size > = number of ports in the switch.
      offset Integer 0 Offset is used to avoid overlapping port-id ranges of different switches.
Useful when a “connected-endpoint” is connected to switches in different “node_groups”.
    always_configure_ip_routing Boolean False Force configuration of “ip routing” even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
    raw_eos_cli String EOS CLI rendered directly on the root level of the final EOS configuration.
    structured_config Dictionary Custom structured config for eos_cli_config_gen.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          id Integer Unique identifier used for IP addressing and other algorithms.
          platform String Arista platform family.
          mac_address String Leverage to document management interface mac address.
          system_mac_address String System MAC Address in this following format: “xx:xx:xx:xx:xx:xx”.
Set to the same MAC address as available in “show version” on the device.
“system_mac_address” can also be set directly as a hostvar.
If both are set, the setting under node type settings takes precedence.
          serial_number String Set to the Serial Number of the device.
Only used for documentation purpose in the fabric documentation and part of the structured_config.
“serial_number” can also be set directly as a hostvar.
If both are set, the setting under node type settings takes precedence.
          rack String Rack that the switch is located in (only used in snmp_settings location).
          mgmt_ip String Format: cidr Node management interface IPv4 address.
          ipv6_mgmt_ip String Format: cidr Node management interface IPv6 address.
          mgmt_interface String Management Interface Name.
Default -> platform_management_interface -> mgmt_interface -> “Management1”.
          lacp_port_id_range Dictionary This will generate the “lacp port-id range”, “begin” and “end” values based on node “id” and the number of nodes in the “node_group”.
Unique LACP port-id ranges are recommended for EVPN Multihoming designs.
            enabled Boolean False
            size Integer 128 Recommended size > = number of ports in the switch.
            offset Integer 0 Offset is used to avoid overlapping port-id ranges of different switches.
Useful when a “connected-endpoint” is connected to switches in different “node_groups”.
          always_configure_ip_routing Boolean False Force configuration of “ip routing” even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
          raw_eos_cli String EOS CLI rendered directly on the root level of the final EOS configuration.
          structured_config Dictionary Custom structured config for eos_cli_config_gen.
      id Integer Unique identifier used for IP addressing and other algorithms.
      platform String Arista platform family.
      mac_address String Leverage to document management interface mac address.
      system_mac_address String System MAC Address in this following format: “xx:xx:xx:xx:xx:xx”.
Set to the same MAC address as available in “show version” on the device.
“system_mac_address” can also be set directly as a hostvar.
If both are set, the setting under node type settings takes precedence.
      serial_number String Set to the Serial Number of the device.
Only used for documentation purpose in the fabric documentation and part of the structured_config.
“serial_number” can also be set directly as a hostvar.
If both are set, the setting under node type settings takes precedence.
      rack String Rack that the switch is located in (only used in snmp_settings location).
      mgmt_ip String Format: cidr Node management interface IPv4 address.
      ipv6_mgmt_ip String Format: cidr Node management interface IPv6 address.
      mgmt_interface String Management Interface Name.
Default -> platform_management_interface -> mgmt_interface -> “Management1”.
      lacp_port_id_range Dictionary This will generate the “lacp port-id range”, “begin” and “end” values based on node “id” and the number of nodes in the “node_group”.
Unique LACP port-id ranges are recommended for EVPN Multihoming designs.
        enabled Boolean False
        size Integer 128 Recommended size > = number of ports in the switch.
        offset Integer 0 Offset is used to avoid overlapping port-id ranges of different switches.
Useful when a “connected-endpoint” is connected to switches in different “node_groups”.
      always_configure_ip_routing Boolean False Force configuration of “ip routing” even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
      raw_eos_cli String EOS CLI rendered directly on the root level of the final EOS configuration.
      structured_config Dictionary Custom structured config for eos_cli_config_gen.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      id Integer Unique identifier used for IP addressing and other algorithms.
      platform String Arista platform family.
      mac_address String Leverage to document management interface mac address.
      system_mac_address String System MAC Address in this following format: “xx:xx:xx:xx:xx:xx”.
Set to the same MAC address as available in “show version” on the device.
“system_mac_address” can also be set directly as a hostvar.
If both are set, the setting under node type settings takes precedence.
      serial_number String Set to the Serial Number of the device.
Only used for documentation purpose in the fabric documentation and part of the structured_config.
“serial_number” can also be set directly as a hostvar.
If both are set, the setting under node type settings takes precedence.
      rack String Rack that the switch is located in (only used in snmp_settings location).
      mgmt_ip String Format: cidr Node management interface IPv4 address.
      ipv6_mgmt_ip String Format: cidr Node management interface IPv6 address.
      mgmt_interface String Management Interface Name.
Default -> platform_management_interface -> mgmt_interface -> “Management1”.
      lacp_port_id_range Dictionary This will generate the “lacp port-id range”, “begin” and “end” values based on node “id” and the number of nodes in the “node_group”.
Unique LACP port-id ranges are recommended for EVPN Multihoming designs.
        enabled Boolean False
        size Integer 128 Recommended size > = number of ports in the switch.
        offset Integer 0 Offset is used to avoid overlapping port-id ranges of different switches.
Useful when a “connected-endpoint” is connected to switches in different “node_groups”.
      always_configure_ip_routing Boolean False Force configuration of “ip routing” even on L2 devices.
Use this to retain behavior of AVD versions below 4.0.0.
      raw_eos_cli String EOS CLI rendered directly on the root level of the final EOS configuration.
      structured_config Dictionary Custom structured config for eos_cli_config_gen.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # Unique identifier used for IP addressing and other algorithms.
    id: <int>

    # Arista platform family.
    platform: <str>

    # Leverage to document management interface mac address.
    mac_address: <str>

    # System MAC Address in this following format: "xx:xx:xx:xx:xx:xx".
    # Set to the same MAC address as available in "show version" on the device.
    # "system_mac_address" can also be set directly as a hostvar.
    # If both are set, the setting under node type settings takes precedence.
    system_mac_address: <str>

    # Set to the Serial Number of the device.
    # Only used for documentation purpose in the fabric documentation and part of the structured_config.
    # "serial_number" can also be set directly as a hostvar.
    # If both are set, the setting under node type settings takes precedence.
    serial_number: <str>

    # Rack that the switch is located in (only used in snmp_settings location).
    rack: <str>

    # Node management interface IPv4 address.
    mgmt_ip: <str>

    # Node management interface IPv6 address.
    ipv6_mgmt_ip: <str>

    # Management Interface Name.
    # Default -> platform_management_interface -> mgmt_interface -> "Management1".
    mgmt_interface: <str>

    # This will generate the "lacp port-id range", "begin" and "end" values based on node "id" and the number of nodes in the "node_group".
    # Unique LACP port-id ranges are recommended for EVPN Multihoming designs.
    lacp_port_id_range:
      enabled: <bool; default=False>

      # Recommended size > = number of ports in the switch.
      size: <int; default=128>

      # Offset is used to avoid overlapping port-id ranges of different switches.
      # Useful when a "connected-endpoint" is connected to switches in different "node_groups".
      offset: <int; default=0>

    # Force configuration of "ip routing" even on L2 devices.
    # Use this to retain behavior of AVD versions below 4.0.0.
    always_configure_ip_routing: <bool; default=False>

    # EOS CLI rendered directly on the root level of the final EOS configuration.
    raw_eos_cli: <str>

    # Custom structured config for eos_cli_config_gen.
    structured_config: <dict>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # Unique identifier used for IP addressing and other algorithms.
          id: <int>

          # Arista platform family.
          platform: <str>

          # Leverage to document management interface mac address.
          mac_address: <str>

          # System MAC Address in this following format: "xx:xx:xx:xx:xx:xx".
          # Set to the same MAC address as available in "show version" on the device.
          # "system_mac_address" can also be set directly as a hostvar.
          # If both are set, the setting under node type settings takes precedence.
          system_mac_address: <str>

          # Set to the Serial Number of the device.
          # Only used for documentation purpose in the fabric documentation and part of the structured_config.
          # "serial_number" can also be set directly as a hostvar.
          # If both are set, the setting under node type settings takes precedence.
          serial_number: <str>

          # Rack that the switch is located in (only used in snmp_settings location).
          rack: <str>

          # Node management interface IPv4 address.
          mgmt_ip: <str>

          # Node management interface IPv6 address.
          ipv6_mgmt_ip: <str>

          # Management Interface Name.
          # Default -> platform_management_interface -> mgmt_interface -> "Management1".
          mgmt_interface: <str>

          # This will generate the "lacp port-id range", "begin" and "end" values based on node "id" and the number of nodes in the "node_group".
          # Unique LACP port-id ranges are recommended for EVPN Multihoming designs.
          lacp_port_id_range:
            enabled: <bool; default=False>

            # Recommended size > = number of ports in the switch.
            size: <int; default=128>

            # Offset is used to avoid overlapping port-id ranges of different switches.
            # Useful when a "connected-endpoint" is connected to switches in different "node_groups".
            offset: <int; default=0>

          # Force configuration of "ip routing" even on L2 devices.
          # Use this to retain behavior of AVD versions below 4.0.0.
          always_configure_ip_routing: <bool; default=False>

          # EOS CLI rendered directly on the root level of the final EOS configuration.
          raw_eos_cli: <str>

          # Custom structured config for eos_cli_config_gen.
          structured_config: <dict>

      # Unique identifier used for IP addressing and other algorithms.
      id: <int>

      # Arista platform family.
      platform: <str>

      # Leverage to document management interface mac address.
      mac_address: <str>

      # System MAC Address in this following format: "xx:xx:xx:xx:xx:xx".
      # Set to the same MAC address as available in "show version" on the device.
      # "system_mac_address" can also be set directly as a hostvar.
      # If both are set, the setting under node type settings takes precedence.
      system_mac_address: <str>

      # Set to the Serial Number of the device.
      # Only used for documentation purpose in the fabric documentation and part of the structured_config.
      # "serial_number" can also be set directly as a hostvar.
      # If both are set, the setting under node type settings takes precedence.
      serial_number: <str>

      # Rack that the switch is located in (only used in snmp_settings location).
      rack: <str>

      # Node management interface IPv4 address.
      mgmt_ip: <str>

      # Node management interface IPv6 address.
      ipv6_mgmt_ip: <str>

      # Management Interface Name.
      # Default -> platform_management_interface -> mgmt_interface -> "Management1".
      mgmt_interface: <str>

      # This will generate the "lacp port-id range", "begin" and "end" values based on node "id" and the number of nodes in the "node_group".
      # Unique LACP port-id ranges are recommended for EVPN Multihoming designs.
      lacp_port_id_range:
        enabled: <bool; default=False>

        # Recommended size > = number of ports in the switch.
        size: <int; default=128>

        # Offset is used to avoid overlapping port-id ranges of different switches.
        # Useful when a "connected-endpoint" is connected to switches in different "node_groups".
        offset: <int; default=0>

      # Force configuration of "ip routing" even on L2 devices.
      # Use this to retain behavior of AVD versions below 4.0.0.
      always_configure_ip_routing: <bool; default=False>

      # EOS CLI rendered directly on the root level of the final EOS configuration.
      raw_eos_cli: <str>

      # Custom structured config for eos_cli_config_gen.
      structured_config: <dict>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # Unique identifier used for IP addressing and other algorithms.
      id: <int>

      # Arista platform family.
      platform: <str>

      # Leverage to document management interface mac address.
      mac_address: <str>

      # System MAC Address in this following format: "xx:xx:xx:xx:xx:xx".
      # Set to the same MAC address as available in "show version" on the device.
      # "system_mac_address" can also be set directly as a hostvar.
      # If both are set, the setting under node type settings takes precedence.
      system_mac_address: <str>

      # Set to the Serial Number of the device.
      # Only used for documentation purpose in the fabric documentation and part of the structured_config.
      # "serial_number" can also be set directly as a hostvar.
      # If both are set, the setting under node type settings takes precedence.
      serial_number: <str>

      # Rack that the switch is located in (only used in snmp_settings location).
      rack: <str>

      # Node management interface IPv4 address.
      mgmt_ip: <str>

      # Node management interface IPv6 address.
      ipv6_mgmt_ip: <str>

      # Management Interface Name.
      # Default -> platform_management_interface -> mgmt_interface -> "Management1".
      mgmt_interface: <str>

      # This will generate the "lacp port-id range", "begin" and "end" values based on node "id" and the number of nodes in the "node_group".
      # Unique LACP port-id ranges are recommended for EVPN Multihoming designs.
      lacp_port_id_range:
        enabled: <bool; default=False>

        # Recommended size > = number of ports in the switch.
        size: <int; default=128>

        # Offset is used to avoid overlapping port-id ranges of different switches.
        # Useful when a "connected-endpoint" is connected to switches in different "node_groups".
        offset: <int; default=0>

      # Force configuration of "ip routing" even on L2 devices.
      # Use this to retain behavior of AVD versions below 4.0.0.
      always_configure_ip_routing: <bool; default=False>

      # EOS CLI rendered directly on the root level of the final EOS configuration.
      raw_eos_cli: <str>

      # Custom structured config for eos_cli_config_gen.
      structured_config: <dict>

Node type inband management

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    inband_mgmt_interface String Pointer to interface used for inband management.
All configuration must be done using other data models like network services or structured_config.
‘inband_mgmt_interface’ is only used to refer to this interface as source in various management protocol settings (future feature).

On L2 switches, this defaults to Vlan if either ‘inband_mgmt_subnet’ or ‘inband_mgmt_ip’ is set.
    inband_mgmt_vlan Integer 4092 VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
When using ‘inband_mgmt_subnet’ the VLAN and SVIs will be created automatically on this switch as well as all ‘uplink_switches’.
When using ‘inband_mgmt_ip’ the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
    inband_mgmt_subnet String Format: ipv4_cidr Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
Parent l3leafs will have SVI with “ip virtual-router” and host-route injection based on ARP.
This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
SVI IP address will be assigned as follows:
virtual-router: + 1
l3leaf A : + 2 (same IP on all l3leaf A)
l3leaf B : + 3 (same IP on all l3leaf B)
l2leafs : + 3 +
GW on l2leafs : + 1
Assign range larger than total l2leafs + 5

Setting is ignored if ‘inband_mgmt_ip’ is set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
    inband_mgmt_ip String Format: ipv4_cidr IP address assigned to the inband management interface set with ‘inband_mgmt_vlan’.
This overrides ‘inband_mgmt_subnet’, hence all behavior of ‘inband_mgmt_subnet’ is removed.

If this is set the VLAN and SVI will only be created on the L2 switch and added to uplink trunk.
The VLAN and SVI on the parent switches must be created using network services data models.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
    inband_mgmt_gateway String Format: ipv4 Default gateway configured in the ‘inband_mgmt_vrf’ when using ‘inband_mgmt_ip’. Otherwise gateway is derived from ‘inband_mgmt_subnet’ if set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
    inband_mgmt_description String Inband Management Description configured on the Inband Management SVI.

This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
    inband_mgmt_vlan_name String Inband Management Name configured on the Inband Management VLAN.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
    inband_mgmt_vrf String default VRF configured on the Inband Management Interface.
The VRF is created if not already created by other means.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
    inband_mgmt_mtu Integer 1500 MTU configured on the Inband Management Interface.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
    inband_management_subnet deprecated String Format: ipv4_cidr Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
Parent l3leafs will have SVI with “ip virtual-router” and host-route injection based on ARP.
This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
SVI IP address will be assigned as follows:
virtual-router: + 1
l3leaf A : + 2 (same IP on all l3leaf A)
l3leaf B : + 3 (same IP on all l3leaf B)
l2leafs : + 3 +
GW on l2leafs : + 1
Assign range larger than total l2leafs + 5

Setting is ignored if ‘inband_mgmt_ip’ is set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
This key is deprecated. Support will be removed in AVD version 5.0.0. Use inband_mgmt_subnet instead.
    inband_management_vlan deprecated Integer 4092 VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
When using ‘inband_mgmt_subnet’ the VLAN and SVIs will be created automatically on this switch as well as all ‘uplink_switches’.
When using ‘inband_mgmt_ip’ the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.This key is deprecated. Support will be removed in AVD version 5.0.0. Use inband_mgmt_vlan instead.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          inband_mgmt_interface String Pointer to interface used for inband management.
All configuration must be done using other data models like network services or structured_config.
‘inband_mgmt_interface’ is only used to refer to this interface as source in various management protocol settings (future feature).

On L2 switches, this defaults to Vlan if either ‘inband_mgmt_subnet’ or ‘inband_mgmt_ip’ is set.
          inband_mgmt_vlan Integer 4092 VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
When using ‘inband_mgmt_subnet’ the VLAN and SVIs will be created automatically on this switch as well as all ‘uplink_switches’.
When using ‘inband_mgmt_ip’ the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
          inband_mgmt_subnet String Format: ipv4_cidr Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
Parent l3leafs will have SVI with “ip virtual-router” and host-route injection based on ARP.
This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
SVI IP address will be assigned as follows:
virtual-router: + 1
l3leaf A : + 2 (same IP on all l3leaf A)
l3leaf B : + 3 (same IP on all l3leaf B)
l2leafs : + 3 +
GW on l2leafs : + 1
Assign range larger than total l2leafs + 5

Setting is ignored if ‘inband_mgmt_ip’ is set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
          inband_mgmt_ip String Format: ipv4_cidr IP address assigned to the inband management interface set with ‘inband_mgmt_vlan’.
This overrides ‘inband_mgmt_subnet’, hence all behavior of ‘inband_mgmt_subnet’ is removed.

If this is set the VLAN and SVI will only be created on the L2 switch and added to uplink trunk.
The VLAN and SVI on the parent switches must be created using network services data models.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
          inband_mgmt_gateway String Format: ipv4 Default gateway configured in the ‘inband_mgmt_vrf’ when using ‘inband_mgmt_ip’. Otherwise gateway is derived from ‘inband_mgmt_subnet’ if set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
          inband_mgmt_description String Inband Management Description configured on the Inband Management SVI.

This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
          inband_mgmt_vlan_name String Inband Management Name configured on the Inband Management VLAN.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
          inband_mgmt_vrf String default VRF configured on the Inband Management Interface.
The VRF is created if not already created by other means.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
          inband_mgmt_mtu Integer 1500 MTU configured on the Inband Management Interface.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
          inband_management_subnet deprecated String Format: ipv4_cidr Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
Parent l3leafs will have SVI with “ip virtual-router” and host-route injection based on ARP.
This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
SVI IP address will be assigned as follows:
virtual-router: + 1
l3leaf A : + 2 (same IP on all l3leaf A)
l3leaf B : + 3 (same IP on all l3leaf B)
l2leafs : + 3 +
GW on l2leafs : + 1
Assign range larger than total l2leafs + 5

Setting is ignored if ‘inband_mgmt_ip’ is set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
This key is deprecated. Support will be removed in AVD version 5.0.0. Use inband_mgmt_subnet instead.
          inband_management_vlan deprecated Integer 4092 VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
When using ‘inband_mgmt_subnet’ the VLAN and SVIs will be created automatically on this switch as well as all ‘uplink_switches’.
When using ‘inband_mgmt_ip’ the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.This key is deprecated. Support will be removed in AVD version 5.0.0. Use inband_mgmt_vlan instead.
      inband_mgmt_interface String Pointer to interface used for inband management.
All configuration must be done using other data models like network services or structured_config.
‘inband_mgmt_interface’ is only used to refer to this interface as source in various management protocol settings (future feature).

On L2 switches, this defaults to Vlan if either ‘inband_mgmt_subnet’ or ‘inband_mgmt_ip’ is set.
      inband_mgmt_vlan Integer 4092 VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
When using ‘inband_mgmt_subnet’ the VLAN and SVIs will be created automatically on this switch as well as all ‘uplink_switches’.
When using ‘inband_mgmt_ip’ the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
      inband_mgmt_subnet String Format: ipv4_cidr Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
Parent l3leafs will have SVI with “ip virtual-router” and host-route injection based on ARP.
This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
SVI IP address will be assigned as follows:
virtual-router: + 1
l3leaf A : + 2 (same IP on all l3leaf A)
l3leaf B : + 3 (same IP on all l3leaf B)
l2leafs : + 3 +
GW on l2leafs : + 1
Assign range larger than total l2leafs + 5

Setting is ignored if ‘inband_mgmt_ip’ is set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_ip String Format: ipv4_cidr IP address assigned to the inband management interface set with ‘inband_mgmt_vlan’.
This overrides ‘inband_mgmt_subnet’, hence all behavior of ‘inband_mgmt_subnet’ is removed.

If this is set the VLAN and SVI will only be created on the L2 switch and added to uplink trunk.
The VLAN and SVI on the parent switches must be created using network services data models.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_gateway String Format: ipv4 Default gateway configured in the ‘inband_mgmt_vrf’ when using ‘inband_mgmt_ip’. Otherwise gateway is derived from ‘inband_mgmt_subnet’ if set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_description String Inband Management Description configured on the Inband Management SVI.

This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_vlan_name String Inband Management Name configured on the Inband Management VLAN.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_vrf String default VRF configured on the Inband Management Interface.
The VRF is created if not already created by other means.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_mtu Integer 1500 MTU configured on the Inband Management Interface.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_management_subnet deprecated String Format: ipv4_cidr Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
Parent l3leafs will have SVI with “ip virtual-router” and host-route injection based on ARP.
This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
SVI IP address will be assigned as follows:
virtual-router: + 1
l3leaf A : + 2 (same IP on all l3leaf A)
l3leaf B : + 3 (same IP on all l3leaf B)
l2leafs : + 3 +
GW on l2leafs : + 1
Assign range larger than total l2leafs + 5

Setting is ignored if ‘inband_mgmt_ip’ is set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
This key is deprecated. Support will be removed in AVD version 5.0.0. Use inband_mgmt_subnet instead.
      inband_management_vlan deprecated Integer 4092 VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
When using ‘inband_mgmt_subnet’ the VLAN and SVIs will be created automatically on this switch as well as all ‘uplink_switches’.
When using ‘inband_mgmt_ip’ the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.This key is deprecated. Support will be removed in AVD version 5.0.0. Use inband_mgmt_vlan instead.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      inband_mgmt_interface String Pointer to interface used for inband management.
All configuration must be done using other data models like network services or structured_config.
‘inband_mgmt_interface’ is only used to refer to this interface as source in various management protocol settings (future feature).

On L2 switches, this defaults to Vlan if either ‘inband_mgmt_subnet’ or ‘inband_mgmt_ip’ is set.
      inband_mgmt_vlan Integer 4092 VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
When using ‘inband_mgmt_subnet’ the VLAN and SVIs will be created automatically on this switch as well as all ‘uplink_switches’.
When using ‘inband_mgmt_ip’ the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
      inband_mgmt_subnet String Format: ipv4_cidr Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
Parent l3leafs will have SVI with “ip virtual-router” and host-route injection based on ARP.
This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
SVI IP address will be assigned as follows:
virtual-router: + 1
l3leaf A : + 2 (same IP on all l3leaf A)
l3leaf B : + 3 (same IP on all l3leaf B)
l2leafs : + 3 +
GW on l2leafs : + 1
Assign range larger than total l2leafs + 5

Setting is ignored if ‘inband_mgmt_ip’ is set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_ip String Format: ipv4_cidr IP address assigned to the inband management interface set with ‘inband_mgmt_vlan’.
This overrides ‘inband_mgmt_subnet’, hence all behavior of ‘inband_mgmt_subnet’ is removed.

If this is set the VLAN and SVI will only be created on the L2 switch and added to uplink trunk.
The VLAN and SVI on the parent switches must be created using network services data models.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_gateway String Format: ipv4 Default gateway configured in the ‘inband_mgmt_vrf’ when using ‘inband_mgmt_ip’. Otherwise gateway is derived from ‘inband_mgmt_subnet’ if set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_description String Inband Management Description configured on the Inband Management SVI.

This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_vlan_name String Inband Management Name configured on the Inband Management VLAN.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_vrf String default VRF configured on the Inband Management Interface.
The VRF is created if not already created by other means.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_mtu Integer 1500 MTU configured on the Inband Management Interface.
This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_management_subnet deprecated String Format: ipv4_cidr Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
Parent l3leafs will have SVI with “ip virtual-router” and host-route injection based on ARP.
This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
SVI IP address will be assigned as follows:
virtual-router: + 1
l3leaf A : + 2 (same IP on all l3leaf A)
l3leaf B : + 3 (same IP on all l3leaf B)
l2leafs : + 3 +
GW on l2leafs : + 1
Assign range larger than total l2leafs + 5

Setting is ignored if ‘inband_mgmt_ip’ is set.

This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
This key is deprecated. Support will be removed in AVD version 5.0.0. Use inband_mgmt_subnet instead.
      inband_management_vlan deprecated Integer 4092 VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
When using ‘inband_mgmt_subnet’ the VLAN and SVIs will be created automatically on this switch as well as all ‘uplink_switches’.
When using ‘inband_mgmt_ip’ the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.This key is deprecated. Support will be removed in AVD version 5.0.0. Use inband_mgmt_vlan instead.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # Pointer to interface used for inband management.
    # All configuration must be done using other data models like network services or structured_config.
    # 'inband_mgmt_interface' is only used to refer to this interface as source in various management protocol settings (future feature).

    # On L2 switches, this defaults to Vlan<inband_mgmt_vlan> if either 'inband_mgmt_subnet' or 'inband_mgmt_ip' is set.
    inband_mgmt_interface: <str>

    # VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
    # When using 'inband_mgmt_subnet' the VLAN and SVIs will be created automatically on this switch as well as all 'uplink_switches'.
    # When using 'inband_mgmt_ip' the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
    inband_mgmt_vlan: <int; default=4092>

    # Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
    # Parent l3leafs will have SVI with "ip virtual-router" and host-route injection based on ARP.
    # This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
    # SVI IP address will be assigned as follows:
    # virtual-router: <subnet> + 1
    # l3leaf A      : <subnet> + 2 (same IP on all l3leaf A)
    # l3leaf B      : <subnet> + 3 (same IP on all l3leaf B)
    # l2leafs       : <subnet> + 3 + <l2leaf id>
    # GW on l2leafs : <subnet> + 1
    # Assign range larger than total l2leafs + 5

    # Setting is ignored if 'inband_mgmt_ip' is set.

    # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
    inband_mgmt_subnet: <str>

    # IP address assigned to the inband management interface set with 'inband_mgmt_vlan'.
    # This overrides 'inband_mgmt_subnet', hence all behavior of 'inband_mgmt_subnet' is removed.

    # If this is set the VLAN and SVI will only be created on the L2 switch and added to uplink trunk.
    # The VLAN and SVI on the parent switches must be created using network services data models.

    # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
    inband_mgmt_ip: <str>

    # Default gateway configured in the 'inband_mgmt_vrf' when using 'inband_mgmt_ip'. Otherwise gateway is derived from 'inband_mgmt_subnet' if set.

    # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
    inband_mgmt_gateway: <str>

    # Description configured on the Inband Management SVI.

    # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
    inband_mgmt_description: <str; default="Inband Management">

    # Name configured on the Inband Management VLAN.
    # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
    inband_mgmt_vlan_name: <str; default="Inband Management">

    # VRF configured on the Inband Management Interface.
    # The VRF is created if not already created by other means.
    # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
    inband_mgmt_vrf: <str; default="default">

    # MTU configured on the Inband Management Interface.
    # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
    inband_mgmt_mtu: <int; default=1500>

    # Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
    # Parent l3leafs will have SVI with "ip virtual-router" and host-route injection based on ARP.
    # This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
    # SVI IP address will be assigned as follows:
    # virtual-router: <subnet> + 1
    # l3leaf A      : <subnet> + 2 (same IP on all l3leaf A)
    # l3leaf B      : <subnet> + 3 (same IP on all l3leaf B)
    # l2leafs       : <subnet> + 3 + <l2leaf id>
    # GW on l2leafs : <subnet> + 1
    # Assign range larger than total l2leafs + 5

    # Setting is ignored if 'inband_mgmt_ip' is set.

    # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
    # This key is deprecated.
    # Support will be removed in AVD version 5.0.0.
    # Use <samp>inband_mgmt_subnet</samp> instead.
    inband_management_subnet: <str>

    # VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
    # When using 'inband_mgmt_subnet' the VLAN and SVIs will be created automatically on this switch as well as all 'uplink_switches'.
    # When using 'inband_mgmt_ip' the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
    # This key is deprecated.
    # Support will be removed in AVD version 5.0.0.
    # Use <samp>inband_mgmt_vlan</samp> instead.
    inband_management_vlan: <int; default=4092>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # Pointer to interface used for inband management.
          # All configuration must be done using other data models like network services or structured_config.
          # 'inband_mgmt_interface' is only used to refer to this interface as source in various management protocol settings (future feature).

          # On L2 switches, this defaults to Vlan<inband_mgmt_vlan> if either 'inband_mgmt_subnet' or 'inband_mgmt_ip' is set.
          inband_mgmt_interface: <str>

          # VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
          # When using 'inband_mgmt_subnet' the VLAN and SVIs will be created automatically on this switch as well as all 'uplink_switches'.
          # When using 'inband_mgmt_ip' the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
          inband_mgmt_vlan: <int; default=4092>

          # Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
          # Parent l3leafs will have SVI with "ip virtual-router" and host-route injection based on ARP.
          # This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
          # SVI IP address will be assigned as follows:
          # virtual-router: <subnet> + 1
          # l3leaf A      : <subnet> + 2 (same IP on all l3leaf A)
          # l3leaf B      : <subnet> + 3 (same IP on all l3leaf B)
          # l2leafs       : <subnet> + 3 + <l2leaf id>
          # GW on l2leafs : <subnet> + 1
          # Assign range larger than total l2leafs + 5

          # Setting is ignored if 'inband_mgmt_ip' is set.

          # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
          inband_mgmt_subnet: <str>

          # IP address assigned to the inband management interface set with 'inband_mgmt_vlan'.
          # This overrides 'inband_mgmt_subnet', hence all behavior of 'inband_mgmt_subnet' is removed.

          # If this is set the VLAN and SVI will only be created on the L2 switch and added to uplink trunk.
          # The VLAN and SVI on the parent switches must be created using network services data models.

          # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
          inband_mgmt_ip: <str>

          # Default gateway configured in the 'inband_mgmt_vrf' when using 'inband_mgmt_ip'. Otherwise gateway is derived from 'inband_mgmt_subnet' if set.

          # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
          inband_mgmt_gateway: <str>

          # Description configured on the Inband Management SVI.

          # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
          inband_mgmt_description: <str; default="Inband Management">

          # Name configured on the Inband Management VLAN.
          # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
          inband_mgmt_vlan_name: <str; default="Inband Management">

          # VRF configured on the Inband Management Interface.
          # The VRF is created if not already created by other means.
          # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
          inband_mgmt_vrf: <str; default="default">

          # MTU configured on the Inband Management Interface.
          # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
          inband_mgmt_mtu: <int; default=1500>

          # Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
          # Parent l3leafs will have SVI with "ip virtual-router" and host-route injection based on ARP.
          # This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
          # SVI IP address will be assigned as follows:
          # virtual-router: <subnet> + 1
          # l3leaf A      : <subnet> + 2 (same IP on all l3leaf A)
          # l3leaf B      : <subnet> + 3 (same IP on all l3leaf B)
          # l2leafs       : <subnet> + 3 + <l2leaf id>
          # GW on l2leafs : <subnet> + 1
          # Assign range larger than total l2leafs + 5

          # Setting is ignored if 'inband_mgmt_ip' is set.

          # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
          # This key is deprecated.
          # Support will be removed in AVD version 5.0.0.
          # Use <samp>inband_mgmt_subnet</samp> instead.
          inband_management_subnet: <str>

          # VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
          # When using 'inband_mgmt_subnet' the VLAN and SVIs will be created automatically on this switch as well as all 'uplink_switches'.
          # When using 'inband_mgmt_ip' the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
          # This key is deprecated.
          # Support will be removed in AVD version 5.0.0.
          # Use <samp>inband_mgmt_vlan</samp> instead.
          inband_management_vlan: <int; default=4092>

      # Pointer to interface used for inband management.
      # All configuration must be done using other data models like network services or structured_config.
      # 'inband_mgmt_interface' is only used to refer to this interface as source in various management protocol settings (future feature).

      # On L2 switches, this defaults to Vlan<inband_mgmt_vlan> if either 'inband_mgmt_subnet' or 'inband_mgmt_ip' is set.
      inband_mgmt_interface: <str>

      # VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
      # When using 'inband_mgmt_subnet' the VLAN and SVIs will be created automatically on this switch as well as all 'uplink_switches'.
      # When using 'inband_mgmt_ip' the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
      inband_mgmt_vlan: <int; default=4092>

      # Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
      # Parent l3leafs will have SVI with "ip virtual-router" and host-route injection based on ARP.
      # This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
      # SVI IP address will be assigned as follows:
      # virtual-router: <subnet> + 1
      # l3leaf A      : <subnet> + 2 (same IP on all l3leaf A)
      # l3leaf B      : <subnet> + 3 (same IP on all l3leaf B)
      # l2leafs       : <subnet> + 3 + <l2leaf id>
      # GW on l2leafs : <subnet> + 1
      # Assign range larger than total l2leafs + 5

      # Setting is ignored if 'inband_mgmt_ip' is set.

      # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_subnet: <str>

      # IP address assigned to the inband management interface set with 'inband_mgmt_vlan'.
      # This overrides 'inband_mgmt_subnet', hence all behavior of 'inband_mgmt_subnet' is removed.

      # If this is set the VLAN and SVI will only be created on the L2 switch and added to uplink trunk.
      # The VLAN and SVI on the parent switches must be created using network services data models.

      # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_ip: <str>

      # Default gateway configured in the 'inband_mgmt_vrf' when using 'inband_mgmt_ip'. Otherwise gateway is derived from 'inband_mgmt_subnet' if set.

      # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_gateway: <str>

      # Description configured on the Inband Management SVI.

      # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_description: <str; default="Inband Management">

      # Name configured on the Inband Management VLAN.
      # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_vlan_name: <str; default="Inband Management">

      # VRF configured on the Inband Management Interface.
      # The VRF is created if not already created by other means.
      # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_vrf: <str; default="default">

      # MTU configured on the Inband Management Interface.
      # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_mtu: <int; default=1500>

      # Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
      # Parent l3leafs will have SVI with "ip virtual-router" and host-route injection based on ARP.
      # This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
      # SVI IP address will be assigned as follows:
      # virtual-router: <subnet> + 1
      # l3leaf A      : <subnet> + 2 (same IP on all l3leaf A)
      # l3leaf B      : <subnet> + 3 (same IP on all l3leaf B)
      # l2leafs       : <subnet> + 3 + <l2leaf id>
      # GW on l2leafs : <subnet> + 1
      # Assign range larger than total l2leafs + 5

      # Setting is ignored if 'inband_mgmt_ip' is set.

      # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      # This key is deprecated.
      # Support will be removed in AVD version 5.0.0.
      # Use <samp>inband_mgmt_subnet</samp> instead.
      inband_management_subnet: <str>

      # VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
      # When using 'inband_mgmt_subnet' the VLAN and SVIs will be created automatically on this switch as well as all 'uplink_switches'.
      # When using 'inband_mgmt_ip' the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
      # This key is deprecated.
      # Support will be removed in AVD version 5.0.0.
      # Use <samp>inband_mgmt_vlan</samp> instead.
      inband_management_vlan: <int; default=4092>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # Pointer to interface used for inband management.
      # All configuration must be done using other data models like network services or structured_config.
      # 'inband_mgmt_interface' is only used to refer to this interface as source in various management protocol settings (future feature).

      # On L2 switches, this defaults to Vlan<inband_mgmt_vlan> if either 'inband_mgmt_subnet' or 'inband_mgmt_ip' is set.
      inband_mgmt_interface: <str>

      # VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
      # When using 'inband_mgmt_subnet' the VLAN and SVIs will be created automatically on this switch as well as all 'uplink_switches'.
      # When using 'inband_mgmt_ip' the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
      inband_mgmt_vlan: <int; default=4092>

      # Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
      # Parent l3leafs will have SVI with "ip virtual-router" and host-route injection based on ARP.
      # This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
      # SVI IP address will be assigned as follows:
      # virtual-router: <subnet> + 1
      # l3leaf A      : <subnet> + 2 (same IP on all l3leaf A)
      # l3leaf B      : <subnet> + 3 (same IP on all l3leaf B)
      # l2leafs       : <subnet> + 3 + <l2leaf id>
      # GW on l2leafs : <subnet> + 1
      # Assign range larger than total l2leafs + 5

      # Setting is ignored if 'inband_mgmt_ip' is set.

      # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_subnet: <str>

      # IP address assigned to the inband management interface set with 'inband_mgmt_vlan'.
      # This overrides 'inband_mgmt_subnet', hence all behavior of 'inband_mgmt_subnet' is removed.

      # If this is set the VLAN and SVI will only be created on the L2 switch and added to uplink trunk.
      # The VLAN and SVI on the parent switches must be created using network services data models.

      # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_ip: <str>

      # Default gateway configured in the 'inband_mgmt_vrf' when using 'inband_mgmt_ip'. Otherwise gateway is derived from 'inband_mgmt_subnet' if set.

      # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      inband_mgmt_gateway: <str>

      # Description configured on the Inband Management SVI.

      # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_description: <str; default="Inband Management">

      # Name configured on the Inband Management VLAN.
      # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_vlan_name: <str; default="Inband Management">

      # VRF configured on the Inband Management Interface.
      # The VRF is created if not already created by other means.
      # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_vrf: <str; default="default">

      # MTU configured on the Inband Management Interface.
      # This setting is only applied on the devices where it is set, it does not automatically affect any parent/child devices configuration, so it must be set on each applicable node/node-group/node-type as needed.
      inband_mgmt_mtu: <int; default=1500>

      # Optional IP subnet assigned to inband management SVIs on L2 switches (switches using port-channels as uplinks).
      # Parent l3leafs will have SVI with "ip virtual-router" and host-route injection based on ARP.
      # This allows all l3leafs to reuse the same subnet across multiple racks without VXLAN extension.
      # SVI IP address will be assigned as follows:
      # virtual-router: <subnet> + 1
      # l3leaf A      : <subnet> + 2 (same IP on all l3leaf A)
      # l3leaf B      : <subnet> + 3 (same IP on all l3leaf B)
      # l2leafs       : <subnet> + 3 + <l2leaf id>
      # GW on l2leafs : <subnet> + 1
      # Assign range larger than total l2leafs + 5

      # Setting is ignored if 'inband_mgmt_ip' is set.

      # This setting is applicable to L2 switches (switches using port-channel trunks as uplinks).
      # This key is deprecated.
      # Support will be removed in AVD version 5.0.0.
      # Use <samp>inband_mgmt_subnet</samp> instead.
      inband_management_subnet: <str>

      # VLAN number used for inband management on L2 switches (switches using port-channel trunks as uplinks).
      # When using 'inband_mgmt_subnet' the VLAN and SVIs will be created automatically on this switch as well as all 'uplink_switches'.
      # When using 'inband_mgmt_ip' the VLAN and SVI will only be created on this device and added to uplink trunk. The VLAN and SVI on the parent switches must be created using network services data models.
      # This key is deprecated.
      # Support will be removed in AVD version 5.0.0.
      # Use <samp>inband_mgmt_vlan</samp> instead.
      inband_management_vlan: <int; default=4092>

Connectivity is defined from the child’s device perspective. Source uplink interfaces and parent interfaces are defined on the child.

Tip

Leverage default_interfaces data model to auto define uplink and downlink interfaces based on the node id.

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    link_tracking Dictionary This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
Useful in EVPN multhoming designs.
      enabled Boolean False
      groups List, items: Dictionary [{'name': 'LT_GROUP1'}] Link Tracking Groups.
By default a single group named “LT_GROUP1” is defined with default values.
Any groups defined under “groups” will replace the default.
        - name String Tracking group name.
          recovery_delay Integer Min: 0
Max: 3600
default -> platform_settings_mlag_reload_delay -> 300.
          links_minimum Integer Min: 1
Max: 100000
    uplink_type String p2p Valid Values:
- p2p
- port-channel
Override the default uplink_type set at the node_type_key level.
uplink_type must be “p2p” if vtep or underlay_router is true for the node_type_key definition.
    uplink_ipv4_pool String Format: ipv4_cidr IPv4 subnet to use to connect to uplink switches.
    uplink_interfaces List, items: String Local uplink interfaces
Each list item supports range syntax that can be expanded into a list of interfaces.
If uplink_interfaces is not defined, platform-specific defaults (defined under default_interfaces) will be used instead.
Please note that default_interfaces are not defined by default, you should define these yourself.
      - <str> String Pattern: Ethernet[\d/]+
    uplink_switch_interfaces List, items: String Interfaces located on uplink switches.
      - <str> String Pattern: Ethernet[\d/]+
    uplink_switches List, items: String
      - <str> String Required Hostname of uplink switch.
If parallel uplinks are in use, update max_parallel_uplinks below and specify each uplink switch multiple times.
e.g. uplink_switches: [ ‘DC1-SPINE1’, ‘DC1-SPINE1’, ‘DC1-SPINE2’, ‘DC1-SPINE2’ ].
    uplink_interface_speed String Set point-to-Point interface speed and will apply to uplink interfaces on both ends.
(Uplink switch interface speed can be overridden with uplink_switch_interface_speed).
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
    uplink_switch_interface_speed String Set point-to-Point interface speed for the uplink switch interface only.
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
    max_uplink_switches Integer Maximum number of uplink switches.
Changing this value may change IP Addressing on uplinks.
Can be used to reserve IP space for future expansions.
    max_parallel_uplinks Integer Number of parallel links towards uplink switches.
Changing this value may change interface naming on uplinks (and corresponding downlinks).
Can be used to reserve interfaces for future parallel uplinks.
    uplink_bfd Boolean False Enable bfd on uplink interfaces.
    uplink_native_vlan Integer Min: 1
Max: 4094
Only applicable to switches with layer-2 port-channel uplinks.
A suspended (disabled) vlan will be created in both ends of the link unless the vlan is defined under network services.
By default the uplink will not have a native_vlan configured, so EOS defaults to vlan 1.
    uplink_ptp Dictionary Enable PTP on all infrastructure links.
      enable Boolean False
    uplink_macsec Dictionary Enable MacSec on all uplinks.
      profile String
    uplink_port_channel_id Integer Min: 1
Max: 999999
Only applicable for L2 switches with uplink_type: port-channel.
By default the uplink Port-channel ID will be set to the number of the lowest member interface defined under uplink_interfaces.
For example:
member ports [ Eth22, Eth23 ] -> ID 22
member ports [ Eth11/1, Eth22/1 ] -> ID 111
For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
This option overrides the default behavior and statically sets the local Port-channel ID.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
    uplink_switch_port_channel_id Integer Min: 1
Max: 999999
Only applicable for L2 switches with uplink_type: port-channel.
By default the uplink switch Port-channel ID will be set to the number of the first interface defined under uplink_switch_interfaces.
For example:
member ports [ Eth22, Eth23 ] -> ID 22
member ports [ Eth11/1, Eth22/1 ] -> ID 111
For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
    uplink_structured_config Dictionary Custom structured config applied to “uplink_interfaces”, and “uplink_switch_interfaces”.
When uplink_type == “p2p”, custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == “port-channel”, custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
“uplink_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
Note! The content of this dictionary is not validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
    short_esi String short_esi only valid for l2leaf devices using port-channel uplink.
Setting short_esi to “auto” generates the short_esi automatically using a hash of configuration elements.
< 0000:0000:0000
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          link_tracking Dictionary This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
Useful in EVPN multhoming designs.
            enabled Boolean False
            groups List, items: Dictionary [{'name': 'LT_GROUP1'}] Link Tracking Groups.
By default a single group named “LT_GROUP1” is defined with default values.
Any groups defined under “groups” will replace the default.
              - name String Tracking group name.
                recovery_delay Integer Min: 0
Max: 3600
default -> platform_settings_mlag_reload_delay -> 300.
                links_minimum Integer Min: 1
Max: 100000
          uplink_type String p2p Valid Values:
- p2p
- port-channel
Override the default uplink_type set at the node_type_key level.
uplink_type must be “p2p” if vtep or underlay_router is true for the node_type_key definition.
          uplink_ipv4_pool String Format: ipv4_cidr IPv4 subnet to use to connect to uplink switches.
          uplink_interfaces List, items: String Local uplink interfaces
Each list item supports range syntax that can be expanded into a list of interfaces.
If uplink_interfaces is not defined, platform-specific defaults (defined under default_interfaces) will be used instead.
Please note that default_interfaces are not defined by default, you should define these yourself.
            - <str> String Pattern: Ethernet[\d/]+
          uplink_switch_interfaces List, items: String Interfaces located on uplink switches.
            - <str> String Pattern: Ethernet[\d/]+
          uplink_switches List, items: String
            - <str> String Required Hostname of uplink switch.
If parallel uplinks are in use, update max_parallel_uplinks below and specify each uplink switch multiple times.
e.g. uplink_switches: [ ‘DC1-SPINE1’, ‘DC1-SPINE1’, ‘DC1-SPINE2’, ‘DC1-SPINE2’ ].
          uplink_interface_speed String Set point-to-Point interface speed and will apply to uplink interfaces on both ends.
(Uplink switch interface speed can be overridden with uplink_switch_interface_speed).
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
          uplink_switch_interface_speed String Set point-to-Point interface speed for the uplink switch interface only.
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
          max_uplink_switches Integer Maximum number of uplink switches.
Changing this value may change IP Addressing on uplinks.
Can be used to reserve IP space for future expansions.
          max_parallel_uplinks Integer Number of parallel links towards uplink switches.
Changing this value may change interface naming on uplinks (and corresponding downlinks).
Can be used to reserve interfaces for future parallel uplinks.
          uplink_bfd Boolean False Enable bfd on uplink interfaces.
          uplink_native_vlan Integer Min: 1
Max: 4094
Only applicable to switches with layer-2 port-channel uplinks.
A suspended (disabled) vlan will be created in both ends of the link unless the vlan is defined under network services.
By default the uplink will not have a native_vlan configured, so EOS defaults to vlan 1.
          uplink_ptp Dictionary Enable PTP on all infrastructure links.
            enable Boolean False
          uplink_macsec Dictionary Enable MacSec on all uplinks.
            profile String
          uplink_port_channel_id Integer Min: 1
Max: 999999
Only applicable for L2 switches with uplink_type: port-channel.
By default the uplink Port-channel ID will be set to the number of the lowest member interface defined under uplink_interfaces.
For example:
member ports [ Eth22, Eth23 ] -> ID 22
member ports [ Eth11/1, Eth22/1 ] -> ID 111
For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
This option overrides the default behavior and statically sets the local Port-channel ID.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
          uplink_switch_port_channel_id Integer Min: 1
Max: 999999
Only applicable for L2 switches with uplink_type: port-channel.
By default the uplink switch Port-channel ID will be set to the number of the first interface defined under uplink_switch_interfaces.
For example:
member ports [ Eth22, Eth23 ] -> ID 22
member ports [ Eth11/1, Eth22/1 ] -> ID 111
For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
          uplink_structured_config Dictionary Custom structured config applied to “uplink_interfaces”, and “uplink_switch_interfaces”.
When uplink_type == “p2p”, custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == “port-channel”, custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
“uplink_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
Note! The content of this dictionary is not validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
          short_esi String short_esi only valid for l2leaf devices using port-channel uplink.
Setting short_esi to “auto” generates the short_esi automatically using a hash of configuration elements.
< 0000:0000:0000
      link_tracking Dictionary This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
Useful in EVPN multhoming designs.
        enabled Boolean False
        groups List, items: Dictionary [{'name': 'LT_GROUP1'}] Link Tracking Groups.
By default a single group named “LT_GROUP1” is defined with default values.
Any groups defined under “groups” will replace the default.
          - name String Tracking group name.
            recovery_delay Integer Min: 0
Max: 3600
default -> platform_settings_mlag_reload_delay -> 300.
            links_minimum Integer Min: 1
Max: 100000
      uplink_type String p2p Valid Values:
- p2p
- port-channel
Override the default uplink_type set at the node_type_key level.
uplink_type must be “p2p” if vtep or underlay_router is true for the node_type_key definition.
      uplink_ipv4_pool String Format: ipv4_cidr IPv4 subnet to use to connect to uplink switches.
      uplink_interfaces List, items: String Local uplink interfaces
Each list item supports range syntax that can be expanded into a list of interfaces.
If uplink_interfaces is not defined, platform-specific defaults (defined under default_interfaces) will be used instead.
Please note that default_interfaces are not defined by default, you should define these yourself.
        - <str> String Pattern: Ethernet[\d/]+
      uplink_switch_interfaces List, items: String Interfaces located on uplink switches.
        - <str> String Pattern: Ethernet[\d/]+
      uplink_switches List, items: String
        - <str> String Required Hostname of uplink switch.
If parallel uplinks are in use, update max_parallel_uplinks below and specify each uplink switch multiple times.
e.g. uplink_switches: [ ‘DC1-SPINE1’, ‘DC1-SPINE1’, ‘DC1-SPINE2’, ‘DC1-SPINE2’ ].
      uplink_interface_speed String Set point-to-Point interface speed and will apply to uplink interfaces on both ends.
(Uplink switch interface speed can be overridden with uplink_switch_interface_speed).
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      uplink_switch_interface_speed String Set point-to-Point interface speed for the uplink switch interface only.
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      max_uplink_switches Integer Maximum number of uplink switches.
Changing this value may change IP Addressing on uplinks.
Can be used to reserve IP space for future expansions.
      max_parallel_uplinks Integer Number of parallel links towards uplink switches.
Changing this value may change interface naming on uplinks (and corresponding downlinks).
Can be used to reserve interfaces for future parallel uplinks.
      uplink_bfd Boolean False Enable bfd on uplink interfaces.
      uplink_native_vlan Integer Min: 1
Max: 4094
Only applicable to switches with layer-2 port-channel uplinks.
A suspended (disabled) vlan will be created in both ends of the link unless the vlan is defined under network services.
By default the uplink will not have a native_vlan configured, so EOS defaults to vlan 1.
      uplink_ptp Dictionary Enable PTP on all infrastructure links.
        enable Boolean False
      uplink_macsec Dictionary Enable MacSec on all uplinks.
        profile String
      uplink_port_channel_id Integer Min: 1
Max: 999999
Only applicable for L2 switches with uplink_type: port-channel.
By default the uplink Port-channel ID will be set to the number of the lowest member interface defined under uplink_interfaces.
For example:
member ports [ Eth22, Eth23 ] -> ID 22
member ports [ Eth11/1, Eth22/1 ] -> ID 111
For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
This option overrides the default behavior and statically sets the local Port-channel ID.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
      uplink_switch_port_channel_id Integer Min: 1
Max: 999999
Only applicable for L2 switches with uplink_type: port-channel.
By default the uplink switch Port-channel ID will be set to the number of the first interface defined under uplink_switch_interfaces.
For example:
member ports [ Eth22, Eth23 ] -> ID 22
member ports [ Eth11/1, Eth22/1 ] -> ID 111
For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
      uplink_structured_config Dictionary Custom structured config applied to “uplink_interfaces”, and “uplink_switch_interfaces”.
When uplink_type == “p2p”, custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == “port-channel”, custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
“uplink_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
Note! The content of this dictionary is not validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
      short_esi String short_esi only valid for l2leaf devices using port-channel uplink.
Setting short_esi to “auto” generates the short_esi automatically using a hash of configuration elements.
< 0000:0000:0000
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      link_tracking Dictionary This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
Useful in EVPN multhoming designs.
        enabled Boolean False
        groups List, items: Dictionary [{'name': 'LT_GROUP1'}] Link Tracking Groups.
By default a single group named “LT_GROUP1” is defined with default values.
Any groups defined under “groups” will replace the default.
          - name String Tracking group name.
            recovery_delay Integer Min: 0
Max: 3600
default -> platform_settings_mlag_reload_delay -> 300.
            links_minimum Integer Min: 1
Max: 100000
      uplink_type String p2p Valid Values:
- p2p
- port-channel
Override the default uplink_type set at the node_type_key level.
uplink_type must be “p2p” if vtep or underlay_router is true for the node_type_key definition.
      uplink_ipv4_pool String Format: ipv4_cidr IPv4 subnet to use to connect to uplink switches.
      uplink_interfaces List, items: String Local uplink interfaces
Each list item supports range syntax that can be expanded into a list of interfaces.
If uplink_interfaces is not defined, platform-specific defaults (defined under default_interfaces) will be used instead.
Please note that default_interfaces are not defined by default, you should define these yourself.
        - <str> String Pattern: Ethernet[\d/]+
      uplink_switch_interfaces List, items: String Interfaces located on uplink switches.
        - <str> String Pattern: Ethernet[\d/]+
      uplink_switches List, items: String
        - <str> String Required Hostname of uplink switch.
If parallel uplinks are in use, update max_parallel_uplinks below and specify each uplink switch multiple times.
e.g. uplink_switches: [ ‘DC1-SPINE1’, ‘DC1-SPINE1’, ‘DC1-SPINE2’, ‘DC1-SPINE2’ ].
      uplink_interface_speed String Set point-to-Point interface speed and will apply to uplink interfaces on both ends.
(Uplink switch interface speed can be overridden with uplink_switch_interface_speed).
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      uplink_switch_interface_speed String Set point-to-Point interface speed for the uplink switch interface only.
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      max_uplink_switches Integer Maximum number of uplink switches.
Changing this value may change IP Addressing on uplinks.
Can be used to reserve IP space for future expansions.
      max_parallel_uplinks Integer Number of parallel links towards uplink switches.
Changing this value may change interface naming on uplinks (and corresponding downlinks).
Can be used to reserve interfaces for future parallel uplinks.
      uplink_bfd Boolean False Enable bfd on uplink interfaces.
      uplink_native_vlan Integer Min: 1
Max: 4094
Only applicable to switches with layer-2 port-channel uplinks.
A suspended (disabled) vlan will be created in both ends of the link unless the vlan is defined under network services.
By default the uplink will not have a native_vlan configured, so EOS defaults to vlan 1.
      uplink_ptp Dictionary Enable PTP on all infrastructure links.
        enable Boolean False
      uplink_macsec Dictionary Enable MacSec on all uplinks.
        profile String
      uplink_port_channel_id Integer Min: 1
Max: 999999
Only applicable for L2 switches with uplink_type: port-channel.
By default the uplink Port-channel ID will be set to the number of the lowest member interface defined under uplink_interfaces.
For example:
member ports [ Eth22, Eth23 ] -> ID 22
member ports [ Eth11/1, Eth22/1 ] -> ID 111
For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
This option overrides the default behavior and statically sets the local Port-channel ID.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
      uplink_switch_port_channel_id Integer Min: 1
Max: 999999
Only applicable for L2 switches with uplink_type: port-channel.
By default the uplink switch Port-channel ID will be set to the number of the first interface defined under uplink_switch_interfaces.
For example:
member ports [ Eth22, Eth23 ] -> ID 22
member ports [ Eth11/1, Eth22/1 ] -> ID 111
For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
      uplink_structured_config Dictionary Custom structured config applied to “uplink_interfaces”, and “uplink_switch_interfaces”.
When uplink_type == “p2p”, custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == “port-channel”, custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
“uplink_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
Note! The content of this dictionary is not validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
      short_esi String short_esi only valid for l2leaf devices using port-channel uplink.
Setting short_esi to “auto” generates the short_esi automatically using a hash of configuration elements.
< 0000:0000:0000
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
    # Useful in EVPN multhoming designs.
    link_tracking:
      enabled: <bool; default=False>

      # Link Tracking Groups.
      # By default a single group named "LT_GROUP1" is defined with default values.
      # Any groups defined under "groups" will replace the default.
      groups: # default=[{'name': 'LT_GROUP1'}]

          # Tracking group name.
        - name: <str>

          # default -> platform_settings_mlag_reload_delay -> 300.
          recovery_delay: <int; 0-3600>
          links_minimum: <int; 1-100000>

    # Override the default `uplink_type` set at the `node_type_key` level.
    # `uplink_type` must be "p2p" if `vtep` or `underlay_router` is true for the `node_type_key` definition.
    uplink_type: <str; "p2p" | "port-channel"; default="p2p">

    # IPv4 subnet to use to connect to uplink switches.
    uplink_ipv4_pool: <str>

    # Local uplink interfaces
    # Each list item supports range syntax that can be expanded into a list of interfaces.
    # If uplink_interfaces is not defined, platform-specific defaults (defined under default_interfaces) will be used instead.
    # Please note that default_interfaces are not defined by default, you should define these yourself.
    uplink_interfaces:
      - <str>

    # Interfaces located on uplink switches.
    uplink_switch_interfaces:
      - <str>
    uplink_switches:

        # Hostname of uplink switch.
        # If parallel uplinks are in use, update max_parallel_uplinks below and specify each uplink switch multiple times.
        # e.g. uplink_switches: [ 'DC1-SPINE1', 'DC1-SPINE1', 'DC1-SPINE2', 'DC1-SPINE2' ].
      - <str; required>

    # Set point-to-Point interface speed and will apply to uplink interfaces on both ends.
    # (Uplink switch interface speed can be overridden with `uplink_switch_interface_speed`).
    # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
    uplink_interface_speed: <str>

    # Set point-to-Point interface speed for the uplink switch interface only.
    # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
    uplink_switch_interface_speed: <str>

    # Maximum number of uplink switches.
    # Changing this value may change IP Addressing on uplinks.
    # Can be used to reserve IP space for future expansions.
    max_uplink_switches: <int>

    # Number of parallel links towards uplink switches.
    # Changing this value may change interface naming on uplinks (and corresponding downlinks).
    # Can be used to reserve interfaces for future parallel uplinks.
    max_parallel_uplinks: <int>

    # Enable bfd on uplink interfaces.
    uplink_bfd: <bool; default=False>

    # Only applicable to switches with layer-2 port-channel uplinks.
    # A suspended (disabled) vlan will be created in both ends of the link unless the vlan is defined under network services.
    # By default the uplink will not have a native_vlan configured, so EOS defaults to vlan 1.
    uplink_native_vlan: <int; 1-4094>

    # Enable PTP on all infrastructure links.
    uplink_ptp:
      enable: <bool; default=False>

    # Enable MacSec on all uplinks.
    uplink_macsec:
      profile: <str>

    # Only applicable for L2 switches with `uplink_type: port-channel`.
    # By default the uplink Port-channel ID will be set to the number of the lowest member interface defined under `uplink_interfaces`.
    # For example:
    #   member ports [ Eth22, Eth23 ] -> ID 22
    #   member ports [ Eth11/1, Eth22/1 ] -> ID 111
    # For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
    # This option overrides the default behavior and statically sets the local Port-channel ID.
    # Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
    # Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
    uplink_port_channel_id: <int; 1-999999>

    # Only applicable for L2 switches with `uplink_type: port-channel`.
    # By default the uplink switch Port-channel ID will be set to the number of the first interface defined under `uplink_switch_interfaces`.
    # For example:
    #   member ports [ Eth22, Eth23 ] -> ID 22
    #   member ports [ Eth11/1, Eth22/1 ] -> ID 111
    # For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
    # This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
    # Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
    # Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
    uplink_switch_port_channel_id: <int; 1-999999>

    # Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
    # When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=<interface>] for eos_cli_config_gen overrides the settings on the ethernet interface level.
    # When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=<interface>] for eos_cli_config_gen overrides the settings on the port-channel interface level.
    # "uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
    # Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
    uplink_structured_config: <dict>

    # short_esi only valid for l2leaf devices using port-channel uplink.
    # Setting short_esi to "auto" generates the short_esi automatically using a hash of configuration elements.
    # < 0000:0000:0000 | auto >.
    short_esi: <str>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
          # Useful in EVPN multhoming designs.
          link_tracking:
            enabled: <bool; default=False>

            # Link Tracking Groups.
            # By default a single group named "LT_GROUP1" is defined with default values.
            # Any groups defined under "groups" will replace the default.
            groups: # default=[{'name': 'LT_GROUP1'}]

                # Tracking group name.
              - name: <str>

                # default -> platform_settings_mlag_reload_delay -> 300.
                recovery_delay: <int; 0-3600>
                links_minimum: <int; 1-100000>

          # Override the default `uplink_type` set at the `node_type_key` level.
          # `uplink_type` must be "p2p" if `vtep` or `underlay_router` is true for the `node_type_key` definition.
          uplink_type: <str; "p2p" | "port-channel"; default="p2p">

          # IPv4 subnet to use to connect to uplink switches.
          uplink_ipv4_pool: <str>

          # Local uplink interfaces
          # Each list item supports range syntax that can be expanded into a list of interfaces.
          # If uplink_interfaces is not defined, platform-specific defaults (defined under default_interfaces) will be used instead.
          # Please note that default_interfaces are not defined by default, you should define these yourself.
          uplink_interfaces:
            - <str>

          # Interfaces located on uplink switches.
          uplink_switch_interfaces:
            - <str>
          uplink_switches:

              # Hostname of uplink switch.
              # If parallel uplinks are in use, update max_parallel_uplinks below and specify each uplink switch multiple times.
              # e.g. uplink_switches: [ 'DC1-SPINE1', 'DC1-SPINE1', 'DC1-SPINE2', 'DC1-SPINE2' ].
            - <str; required>

          # Set point-to-Point interface speed and will apply to uplink interfaces on both ends.
          # (Uplink switch interface speed can be overridden with `uplink_switch_interface_speed`).
          # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
          uplink_interface_speed: <str>

          # Set point-to-Point interface speed for the uplink switch interface only.
          # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
          uplink_switch_interface_speed: <str>

          # Maximum number of uplink switches.
          # Changing this value may change IP Addressing on uplinks.
          # Can be used to reserve IP space for future expansions.
          max_uplink_switches: <int>

          # Number of parallel links towards uplink switches.
          # Changing this value may change interface naming on uplinks (and corresponding downlinks).
          # Can be used to reserve interfaces for future parallel uplinks.
          max_parallel_uplinks: <int>

          # Enable bfd on uplink interfaces.
          uplink_bfd: <bool; default=False>

          # Only applicable to switches with layer-2 port-channel uplinks.
          # A suspended (disabled) vlan will be created in both ends of the link unless the vlan is defined under network services.
          # By default the uplink will not have a native_vlan configured, so EOS defaults to vlan 1.
          uplink_native_vlan: <int; 1-4094>

          # Enable PTP on all infrastructure links.
          uplink_ptp:
            enable: <bool; default=False>

          # Enable MacSec on all uplinks.
          uplink_macsec:
            profile: <str>

          # Only applicable for L2 switches with `uplink_type: port-channel`.
          # By default the uplink Port-channel ID will be set to the number of the lowest member interface defined under `uplink_interfaces`.
          # For example:
          #   member ports [ Eth22, Eth23 ] -> ID 22
          #   member ports [ Eth11/1, Eth22/1 ] -> ID 111
          # For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
          # This option overrides the default behavior and statically sets the local Port-channel ID.
          # Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
          # Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
          uplink_port_channel_id: <int; 1-999999>

          # Only applicable for L2 switches with `uplink_type: port-channel`.
          # By default the uplink switch Port-channel ID will be set to the number of the first interface defined under `uplink_switch_interfaces`.
          # For example:
          #   member ports [ Eth22, Eth23 ] -> ID 22
          #   member ports [ Eth11/1, Eth22/1 ] -> ID 111
          # For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
          # This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
          # Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
          # Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
          uplink_switch_port_channel_id: <int; 1-999999>

          # Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
          # When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=<interface>] for eos_cli_config_gen overrides the settings on the ethernet interface level.
          # When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=<interface>] for eos_cli_config_gen overrides the settings on the port-channel interface level.
          # "uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
          # Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
          uplink_structured_config: <dict>

          # short_esi only valid for l2leaf devices using port-channel uplink.
          # Setting short_esi to "auto" generates the short_esi automatically using a hash of configuration elements.
          # < 0000:0000:0000 | auto >.
          short_esi: <str>

      # This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
      # Useful in EVPN multhoming designs.
      link_tracking:
        enabled: <bool; default=False>

        # Link Tracking Groups.
        # By default a single group named "LT_GROUP1" is defined with default values.
        # Any groups defined under "groups" will replace the default.
        groups: # default=[{'name': 'LT_GROUP1'}]

            # Tracking group name.
          - name: <str>

            # default -> platform_settings_mlag_reload_delay -> 300.
            recovery_delay: <int; 0-3600>
            links_minimum: <int; 1-100000>

      # Override the default `uplink_type` set at the `node_type_key` level.
      # `uplink_type` must be "p2p" if `vtep` or `underlay_router` is true for the `node_type_key` definition.
      uplink_type: <str; "p2p" | "port-channel"; default="p2p">

      # IPv4 subnet to use to connect to uplink switches.
      uplink_ipv4_pool: <str>

      # Local uplink interfaces
      # Each list item supports range syntax that can be expanded into a list of interfaces.
      # If uplink_interfaces is not defined, platform-specific defaults (defined under default_interfaces) will be used instead.
      # Please note that default_interfaces are not defined by default, you should define these yourself.
      uplink_interfaces:
        - <str>

      # Interfaces located on uplink switches.
      uplink_switch_interfaces:
        - <str>
      uplink_switches:

          # Hostname of uplink switch.
          # If parallel uplinks are in use, update max_parallel_uplinks below and specify each uplink switch multiple times.
          # e.g. uplink_switches: [ 'DC1-SPINE1', 'DC1-SPINE1', 'DC1-SPINE2', 'DC1-SPINE2' ].
        - <str; required>

      # Set point-to-Point interface speed and will apply to uplink interfaces on both ends.
      # (Uplink switch interface speed can be overridden with `uplink_switch_interface_speed`).
      # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
      uplink_interface_speed: <str>

      # Set point-to-Point interface speed for the uplink switch interface only.
      # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
      uplink_switch_interface_speed: <str>

      # Maximum number of uplink switches.
      # Changing this value may change IP Addressing on uplinks.
      # Can be used to reserve IP space for future expansions.
      max_uplink_switches: <int>

      # Number of parallel links towards uplink switches.
      # Changing this value may change interface naming on uplinks (and corresponding downlinks).
      # Can be used to reserve interfaces for future parallel uplinks.
      max_parallel_uplinks: <int>

      # Enable bfd on uplink interfaces.
      uplink_bfd: <bool; default=False>

      # Only applicable to switches with layer-2 port-channel uplinks.
      # A suspended (disabled) vlan will be created in both ends of the link unless the vlan is defined under network services.
      # By default the uplink will not have a native_vlan configured, so EOS defaults to vlan 1.
      uplink_native_vlan: <int; 1-4094>

      # Enable PTP on all infrastructure links.
      uplink_ptp:
        enable: <bool; default=False>

      # Enable MacSec on all uplinks.
      uplink_macsec:
        profile: <str>

      # Only applicable for L2 switches with `uplink_type: port-channel`.
      # By default the uplink Port-channel ID will be set to the number of the lowest member interface defined under `uplink_interfaces`.
      # For example:
      #   member ports [ Eth22, Eth23 ] -> ID 22
      #   member ports [ Eth11/1, Eth22/1 ] -> ID 111
      # For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
      # This option overrides the default behavior and statically sets the local Port-channel ID.
      # Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
      # Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
      uplink_port_channel_id: <int; 1-999999>

      # Only applicable for L2 switches with `uplink_type: port-channel`.
      # By default the uplink switch Port-channel ID will be set to the number of the first interface defined under `uplink_switch_interfaces`.
      # For example:
      #   member ports [ Eth22, Eth23 ] -> ID 22
      #   member ports [ Eth11/1, Eth22/1 ] -> ID 111
      # For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
      # This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
      # Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
      # Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
      uplink_switch_port_channel_id: <int; 1-999999>

      # Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
      # When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=<interface>] for eos_cli_config_gen overrides the settings on the ethernet interface level.
      # When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=<interface>] for eos_cli_config_gen overrides the settings on the port-channel interface level.
      # "uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
      # Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
      uplink_structured_config: <dict>

      # short_esi only valid for l2leaf devices using port-channel uplink.
      # Setting short_esi to "auto" generates the short_esi automatically using a hash of configuration elements.
      # < 0000:0000:0000 | auto >.
      short_esi: <str>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
      # Useful in EVPN multhoming designs.
      link_tracking:
        enabled: <bool; default=False>

        # Link Tracking Groups.
        # By default a single group named "LT_GROUP1" is defined with default values.
        # Any groups defined under "groups" will replace the default.
        groups: # default=[{'name': 'LT_GROUP1'}]

            # Tracking group name.
          - name: <str>

            # default -> platform_settings_mlag_reload_delay -> 300.
            recovery_delay: <int; 0-3600>
            links_minimum: <int; 1-100000>

      # Override the default `uplink_type` set at the `node_type_key` level.
      # `uplink_type` must be "p2p" if `vtep` or `underlay_router` is true for the `node_type_key` definition.
      uplink_type: <str; "p2p" | "port-channel"; default="p2p">

      # IPv4 subnet to use to connect to uplink switches.
      uplink_ipv4_pool: <str>

      # Local uplink interfaces
      # Each list item supports range syntax that can be expanded into a list of interfaces.
      # If uplink_interfaces is not defined, platform-specific defaults (defined under default_interfaces) will be used instead.
      # Please note that default_interfaces are not defined by default, you should define these yourself.
      uplink_interfaces:
        - <str>

      # Interfaces located on uplink switches.
      uplink_switch_interfaces:
        - <str>
      uplink_switches:

          # Hostname of uplink switch.
          # If parallel uplinks are in use, update max_parallel_uplinks below and specify each uplink switch multiple times.
          # e.g. uplink_switches: [ 'DC1-SPINE1', 'DC1-SPINE1', 'DC1-SPINE2', 'DC1-SPINE2' ].
        - <str; required>

      # Set point-to-Point interface speed and will apply to uplink interfaces on both ends.
      # (Uplink switch interface speed can be overridden with `uplink_switch_interface_speed`).
      # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
      uplink_interface_speed: <str>

      # Set point-to-Point interface speed for the uplink switch interface only.
      # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
      uplink_switch_interface_speed: <str>

      # Maximum number of uplink switches.
      # Changing this value may change IP Addressing on uplinks.
      # Can be used to reserve IP space for future expansions.
      max_uplink_switches: <int>

      # Number of parallel links towards uplink switches.
      # Changing this value may change interface naming on uplinks (and corresponding downlinks).
      # Can be used to reserve interfaces for future parallel uplinks.
      max_parallel_uplinks: <int>

      # Enable bfd on uplink interfaces.
      uplink_bfd: <bool; default=False>

      # Only applicable to switches with layer-2 port-channel uplinks.
      # A suspended (disabled) vlan will be created in both ends of the link unless the vlan is defined under network services.
      # By default the uplink will not have a native_vlan configured, so EOS defaults to vlan 1.
      uplink_native_vlan: <int; 1-4094>

      # Enable PTP on all infrastructure links.
      uplink_ptp:
        enable: <bool; default=False>

      # Enable MacSec on all uplinks.
      uplink_macsec:
        profile: <str>

      # Only applicable for L2 switches with `uplink_type: port-channel`.
      # By default the uplink Port-channel ID will be set to the number of the lowest member interface defined under `uplink_interfaces`.
      # For example:
      #   member ports [ Eth22, Eth23 ] -> ID 22
      #   member ports [ Eth11/1, Eth22/1 ] -> ID 111
      # For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
      # This option overrides the default behavior and statically sets the local Port-channel ID.
      # Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
      # Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
      uplink_port_channel_id: <int; 1-999999>

      # Only applicable for L2 switches with `uplink_type: port-channel`.
      # By default the uplink switch Port-channel ID will be set to the number of the first interface defined under `uplink_switch_interfaces`.
      # For example:
      #   member ports [ Eth22, Eth23 ] -> ID 22
      #   member ports [ Eth11/1, Eth22/1 ] -> ID 111
      # For MLAG port-channels ID will be based on the lowest member interface on the first MLAG switch.
      # This option overrides the default behavior and statically sets the Port-channel ID on the uplink switch.
      # Note! Make sure the ID is unique and does not overlap with autogenerated Port-channel IDs in the Network Services.
      # Note! For MLAG pairs the ID must be between 1 and 2000 and both MLAG switches must have the same value.
      uplink_switch_port_channel_id: <int; 1-999999>

      # Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
      # When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=<interface>] for eos_cli_config_gen overrides the settings on the ethernet interface level.
      # When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=<interface>] for eos_cli_config_gen overrides the settings on the port-channel interface level.
      # "uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
      # Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
      uplink_structured_config: <dict>

      # short_esi only valid for l2leaf devices using port-channel uplink.
      # Setting short_esi to "auto" generates the short_esi automatically using a hash of configuration elements.
      # < 0000:0000:0000 | auto >.
      short_esi: <str>

Node type L2 and MLAG configuration

Tip

Alternate addressing schemes are available at fabric_ip_addressing.

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    mlag_port_channel_structured_config Dictionary Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
“mlag_port_channel_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
    mlag_peer_vlan_structured_config Dictionary Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
“mlag_peer_vlan_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
    mlag_peer_l3_vlan_structured_config Dictionary Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
“mlag_peer_l3_vlan_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
    mlag Boolean True Enable / Disable auto MLAG, when two nodes are defined in node group.
    mlag_dual_primary_detection Boolean False Enable / Disable MLAG dual primary detection.
    mlag_ibgp_origin_incomplete Boolean True Set origin of routes received from MLAG iBGP peer to incomplete.
The purpose is to optimize routing for leaf loopbacks from spine perspective and
avoid suboptimal routing via peerlink for control plane traffic.
    mlag_interfaces List, items: String Each list item supports range syntax that can be expanded into a list of interfaces.
Required when MLAG leafs are present in the topology.
      - <str> String
    mlag_interfaces_speed String Set MLAG interface speed.
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
    mlag_peer_l3_vlan Integer 4093 Min: 0
Max: 4094
Underlay L3 peering SVI interface id.
If set to 0 or the same vlan as mlag_peer_vlan, the mlag_peer_vlan will be used for L3 peering.
    mlag_peer_l3_ipv4_pool String Format: ipv4_cidr IP address pool used for MLAG underlay L3 peering. IP is derived from the node id.
Required when MLAG leafs present in topology and they are using a separate L3 peering VLAN.
    mlag_peer_vlan Integer 4094 Min: 1
Max: 4094
MLAG Peer Link (control link) SVI interface id.
    mlag_peer_link_allowed_vlans String
    mlag_peer_ipv4_pool String Format: ipv4_cidr IP address pool used for MLAG Peer Link (control link). IP is derived from the node id.
Required when MLAG leafs present in topology.
    mlag_port_channel_id Integer If not set, the mlag port-channel id is generated based on the digits of the first interface present in ‘mlag_interfaces’.
Valid port-channel id numbers are < 1-2000 > for EOS < 4.25.0F and < 1 - 999999 > for EOS >= 4.25.0F.
    mlag_domain_id String MLAG Domain ID. If not set the node group name (Set with “group” key) will be used.
    spanning_tree_mode String Valid Values:
- mstp
- rstp
- rapid-pvst
- none
    spanning_tree_priority Integer 32768
    spanning_tree_root_super Boolean False
    virtual_router_mac_address String Format: mac Virtual router mac address for anycast gateway.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          mlag_port_channel_structured_config Dictionary Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
“mlag_port_channel_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
          mlag_peer_vlan_structured_config Dictionary Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
“mlag_peer_vlan_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
          mlag_peer_l3_vlan_structured_config Dictionary Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
“mlag_peer_l3_vlan_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
          mlag Boolean True Enable / Disable auto MLAG, when two nodes are defined in node group.
          mlag_dual_primary_detection Boolean False Enable / Disable MLAG dual primary detection.
          mlag_ibgp_origin_incomplete Boolean True Set origin of routes received from MLAG iBGP peer to incomplete.
The purpose is to optimize routing for leaf loopbacks from spine perspective and
avoid suboptimal routing via peerlink for control plane traffic.
          mlag_interfaces List, items: String Each list item supports range syntax that can be expanded into a list of interfaces.
Required when MLAG leafs are present in the topology.
            - <str> String
          mlag_interfaces_speed String Set MLAG interface speed.
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
          mlag_peer_l3_vlan Integer 4093 Min: 0
Max: 4094
Underlay L3 peering SVI interface id.
If set to 0 or the same vlan as mlag_peer_vlan, the mlag_peer_vlan will be used for L3 peering.
          mlag_peer_l3_ipv4_pool String Format: ipv4_cidr IP address pool used for MLAG underlay L3 peering. IP is derived from the node id.
Required when MLAG leafs present in topology and they are using a separate L3 peering VLAN.
          mlag_peer_vlan Integer 4094 Min: 1
Max: 4094
MLAG Peer Link (control link) SVI interface id.
          mlag_peer_link_allowed_vlans String
          mlag_peer_ipv4_pool String Format: ipv4_cidr IP address pool used for MLAG Peer Link (control link). IP is derived from the node id.
Required when MLAG leafs present in topology.
          mlag_port_channel_id Integer If not set, the mlag port-channel id is generated based on the digits of the first interface present in ‘mlag_interfaces’.
Valid port-channel id numbers are < 1-2000 > for EOS < 4.25.0F and < 1 - 999999 > for EOS >= 4.25.0F.
          mlag_domain_id String MLAG Domain ID. If not set the node group name (Set with “group” key) will be used.
          spanning_tree_mode String Valid Values:
- mstp
- rstp
- rapid-pvst
- none
          spanning_tree_priority Integer 32768
          spanning_tree_root_super Boolean False
          virtual_router_mac_address String Format: mac Virtual router mac address for anycast gateway.
      mlag_port_channel_structured_config Dictionary Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
“mlag_port_channel_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
      mlag_peer_vlan_structured_config Dictionary Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
“mlag_peer_vlan_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
      mlag_peer_l3_vlan_structured_config Dictionary Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
“mlag_peer_l3_vlan_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
      mlag Boolean True Enable / Disable auto MLAG, when two nodes are defined in node group.
      mlag_dual_primary_detection Boolean False Enable / Disable MLAG dual primary detection.
      mlag_ibgp_origin_incomplete Boolean True Set origin of routes received from MLAG iBGP peer to incomplete.
The purpose is to optimize routing for leaf loopbacks from spine perspective and
avoid suboptimal routing via peerlink for control plane traffic.
      mlag_interfaces List, items: String Each list item supports range syntax that can be expanded into a list of interfaces.
Required when MLAG leafs are present in the topology.
        - <str> String
      mlag_interfaces_speed String Set MLAG interface speed.
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      mlag_peer_l3_vlan Integer 4093 Min: 0
Max: 4094
Underlay L3 peering SVI interface id.
If set to 0 or the same vlan as mlag_peer_vlan, the mlag_peer_vlan will be used for L3 peering.
      mlag_peer_l3_ipv4_pool String Format: ipv4_cidr IP address pool used for MLAG underlay L3 peering. IP is derived from the node id.
Required when MLAG leafs present in topology and they are using a separate L3 peering VLAN.
      mlag_peer_vlan Integer 4094 Min: 1
Max: 4094
MLAG Peer Link (control link) SVI interface id.
      mlag_peer_link_allowed_vlans String
      mlag_peer_ipv4_pool String Format: ipv4_cidr IP address pool used for MLAG Peer Link (control link). IP is derived from the node id.
Required when MLAG leafs present in topology.
      mlag_port_channel_id Integer If not set, the mlag port-channel id is generated based on the digits of the first interface present in ‘mlag_interfaces’.
Valid port-channel id numbers are < 1-2000 > for EOS < 4.25.0F and < 1 - 999999 > for EOS >= 4.25.0F.
      mlag_domain_id String MLAG Domain ID. If not set the node group name (Set with “group” key) will be used.
      spanning_tree_mode String Valid Values:
- mstp
- rstp
- rapid-pvst
- none
      spanning_tree_priority Integer 32768
      spanning_tree_root_super Boolean False
      virtual_router_mac_address String Format: mac Virtual router mac address for anycast gateway.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      mlag_port_channel_structured_config Dictionary Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
“mlag_port_channel_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
      mlag_peer_vlan_structured_config Dictionary Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
“mlag_peer_vlan_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
      mlag_peer_l3_vlan_structured_config Dictionary Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
“mlag_peer_l3_vlan_structured_config” is applied after “structured_config”, so it can override “structured_config” defined on node-level.
      mlag Boolean True Enable / Disable auto MLAG, when two nodes are defined in node group.
      mlag_dual_primary_detection Boolean False Enable / Disable MLAG dual primary detection.
      mlag_ibgp_origin_incomplete Boolean True Set origin of routes received from MLAG iBGP peer to incomplete.
The purpose is to optimize routing for leaf loopbacks from spine perspective and
avoid suboptimal routing via peerlink for control plane traffic.
      mlag_interfaces List, items: String Each list item supports range syntax that can be expanded into a list of interfaces.
Required when MLAG leafs are present in the topology.
        - <str> String
      mlag_interfaces_speed String Set MLAG interface speed.
Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      mlag_peer_l3_vlan Integer 4093 Min: 0
Max: 4094
Underlay L3 peering SVI interface id.
If set to 0 or the same vlan as mlag_peer_vlan, the mlag_peer_vlan will be used for L3 peering.
      mlag_peer_l3_ipv4_pool String Format: ipv4_cidr IP address pool used for MLAG underlay L3 peering. IP is derived from the node id.
Required when MLAG leafs present in topology and they are using a separate L3 peering VLAN.
      mlag_peer_vlan Integer 4094 Min: 1
Max: 4094
MLAG Peer Link (control link) SVI interface id.
      mlag_peer_link_allowed_vlans String
      mlag_peer_ipv4_pool String Format: ipv4_cidr IP address pool used for MLAG Peer Link (control link). IP is derived from the node id.
Required when MLAG leafs present in topology.
      mlag_port_channel_id Integer If not set, the mlag port-channel id is generated based on the digits of the first interface present in ‘mlag_interfaces’.
Valid port-channel id numbers are < 1-2000 > for EOS < 4.25.0F and < 1 - 999999 > for EOS >= 4.25.0F.
      mlag_domain_id String MLAG Domain ID. If not set the node group name (Set with “group” key) will be used.
      spanning_tree_mode String Valid Values:
- mstp
- rstp
- rapid-pvst
- none
      spanning_tree_priority Integer 32768
      spanning_tree_root_super Boolean False
      virtual_router_mac_address String Format: mac Virtual router mac address for anycast gateway.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # Custom structured config applied to MLAG peer link port-channel id.
    # Added under port_channel_interfaces.[name=<interface>] for eos_cli_config_gen.
    # Overrides the settings on the port-channel interface level.
    # "mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
    mlag_port_channel_structured_config: <dict>

    # Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
    # Added under vlan_interfaces.[name=<interface>] for eos_cli_config_gen.
    # Overrides the settings on the vlan interface level.
    # "mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
    mlag_peer_vlan_structured_config: <dict>

    # Custom structured config applied to MLAG underlay L3 peering SVI interface id.
    # Added under vlan_interfaces.[name=<interface>] for eos_cli_config_gen.
    # Overrides the settings on the vlan interface level.
    # "mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
    mlag_peer_l3_vlan_structured_config: <dict>

    # Enable / Disable auto MLAG, when two nodes are defined in node group.
    mlag: <bool; default=True>

    # Enable / Disable MLAG dual primary detection.
    mlag_dual_primary_detection: <bool; default=False>

    # Set origin of routes received from MLAG iBGP peer to incomplete.
    # The purpose is to optimize routing for leaf loopbacks from spine perspective and
    # avoid suboptimal routing via peerlink for control plane traffic.
    mlag_ibgp_origin_incomplete: <bool; default=True>

    # Each list item supports range syntax that can be expanded into a list of interfaces.
    # Required when MLAG leafs are present in the topology.
    mlag_interfaces:
      - <str>

    # Set MLAG interface speed.
    # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
    mlag_interfaces_speed: <str>

    # Underlay L3 peering SVI interface id.
    # If set to 0 or the same vlan as mlag_peer_vlan, the mlag_peer_vlan will be used for L3 peering.
    mlag_peer_l3_vlan: <int; 0-4094; default=4093>

    # IP address pool used for MLAG underlay L3 peering. IP is derived from the node id.
    # Required when MLAG leafs present in topology and they are using a separate L3 peering VLAN.
    mlag_peer_l3_ipv4_pool: <str>

    # MLAG Peer Link (control link) SVI interface id.
    mlag_peer_vlan: <int; 1-4094; default=4094>
    mlag_peer_link_allowed_vlans: <str>

    # IP address pool used for MLAG Peer Link (control link). IP is derived from the node id.
    # Required when MLAG leafs present in topology.
    mlag_peer_ipv4_pool: <str>

    # If not set, the mlag port-channel id is generated based on the digits of the first interface present in 'mlag_interfaces'.
    # Valid port-channel id numbers are < 1-2000 > for EOS < 4.25.0F and < 1 - 999999 > for EOS >= 4.25.0F.
    mlag_port_channel_id: <int>

    # MLAG Domain ID. If not set the node group name (Set with "group" key) will be used.
    mlag_domain_id: <str>
    spanning_tree_mode: <str; "mstp" | "rstp" | "rapid-pvst" | "none">
    spanning_tree_priority: <int; default=32768>
    spanning_tree_root_super: <bool; default=False>

    # Virtual router mac address for anycast gateway.
    virtual_router_mac_address: <str>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # Custom structured config applied to MLAG peer link port-channel id.
          # Added under port_channel_interfaces.[name=<interface>] for eos_cli_config_gen.
          # Overrides the settings on the port-channel interface level.
          # "mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
          mlag_port_channel_structured_config: <dict>

          # Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
          # Added under vlan_interfaces.[name=<interface>] for eos_cli_config_gen.
          # Overrides the settings on the vlan interface level.
          # "mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
          mlag_peer_vlan_structured_config: <dict>

          # Custom structured config applied to MLAG underlay L3 peering SVI interface id.
          # Added under vlan_interfaces.[name=<interface>] for eos_cli_config_gen.
          # Overrides the settings on the vlan interface level.
          # "mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
          mlag_peer_l3_vlan_structured_config: <dict>

          # Enable / Disable auto MLAG, when two nodes are defined in node group.
          mlag: <bool; default=True>

          # Enable / Disable MLAG dual primary detection.
          mlag_dual_primary_detection: <bool; default=False>

          # Set origin of routes received from MLAG iBGP peer to incomplete.
          # The purpose is to optimize routing for leaf loopbacks from spine perspective and
          # avoid suboptimal routing via peerlink for control plane traffic.
          mlag_ibgp_origin_incomplete: <bool; default=True>

          # Each list item supports range syntax that can be expanded into a list of interfaces.
          # Required when MLAG leafs are present in the topology.
          mlag_interfaces:
            - <str>

          # Set MLAG interface speed.
          # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
          mlag_interfaces_speed: <str>

          # Underlay L3 peering SVI interface id.
          # If set to 0 or the same vlan as mlag_peer_vlan, the mlag_peer_vlan will be used for L3 peering.
          mlag_peer_l3_vlan: <int; 0-4094; default=4093>

          # IP address pool used for MLAG underlay L3 peering. IP is derived from the node id.
          # Required when MLAG leafs present in topology and they are using a separate L3 peering VLAN.
          mlag_peer_l3_ipv4_pool: <str>

          # MLAG Peer Link (control link) SVI interface id.
          mlag_peer_vlan: <int; 1-4094; default=4094>
          mlag_peer_link_allowed_vlans: <str>

          # IP address pool used for MLAG Peer Link (control link). IP is derived from the node id.
          # Required when MLAG leafs present in topology.
          mlag_peer_ipv4_pool: <str>

          # If not set, the mlag port-channel id is generated based on the digits of the first interface present in 'mlag_interfaces'.
          # Valid port-channel id numbers are < 1-2000 > for EOS < 4.25.0F and < 1 - 999999 > for EOS >= 4.25.0F.
          mlag_port_channel_id: <int>

          # MLAG Domain ID. If not set the node group name (Set with "group" key) will be used.
          mlag_domain_id: <str>
          spanning_tree_mode: <str; "mstp" | "rstp" | "rapid-pvst" | "none">
          spanning_tree_priority: <int; default=32768>
          spanning_tree_root_super: <bool; default=False>

          # Virtual router mac address for anycast gateway.
          virtual_router_mac_address: <str>

      # Custom structured config applied to MLAG peer link port-channel id.
      # Added under port_channel_interfaces.[name=<interface>] for eos_cli_config_gen.
      # Overrides the settings on the port-channel interface level.
      # "mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
      mlag_port_channel_structured_config: <dict>

      # Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
      # Added under vlan_interfaces.[name=<interface>] for eos_cli_config_gen.
      # Overrides the settings on the vlan interface level.
      # "mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
      mlag_peer_vlan_structured_config: <dict>

      # Custom structured config applied to MLAG underlay L3 peering SVI interface id.
      # Added under vlan_interfaces.[name=<interface>] for eos_cli_config_gen.
      # Overrides the settings on the vlan interface level.
      # "mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
      mlag_peer_l3_vlan_structured_config: <dict>

      # Enable / Disable auto MLAG, when two nodes are defined in node group.
      mlag: <bool; default=True>

      # Enable / Disable MLAG dual primary detection.
      mlag_dual_primary_detection: <bool; default=False>

      # Set origin of routes received from MLAG iBGP peer to incomplete.
      # The purpose is to optimize routing for leaf loopbacks from spine perspective and
      # avoid suboptimal routing via peerlink for control plane traffic.
      mlag_ibgp_origin_incomplete: <bool; default=True>

      # Each list item supports range syntax that can be expanded into a list of interfaces.
      # Required when MLAG leafs are present in the topology.
      mlag_interfaces:
        - <str>

      # Set MLAG interface speed.
      # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
      mlag_interfaces_speed: <str>

      # Underlay L3 peering SVI interface id.
      # If set to 0 or the same vlan as mlag_peer_vlan, the mlag_peer_vlan will be used for L3 peering.
      mlag_peer_l3_vlan: <int; 0-4094; default=4093>

      # IP address pool used for MLAG underlay L3 peering. IP is derived from the node id.
      # Required when MLAG leafs present in topology and they are using a separate L3 peering VLAN.
      mlag_peer_l3_ipv4_pool: <str>

      # MLAG Peer Link (control link) SVI interface id.
      mlag_peer_vlan: <int; 1-4094; default=4094>
      mlag_peer_link_allowed_vlans: <str>

      # IP address pool used for MLAG Peer Link (control link). IP is derived from the node id.
      # Required when MLAG leafs present in topology.
      mlag_peer_ipv4_pool: <str>

      # If not set, the mlag port-channel id is generated based on the digits of the first interface present in 'mlag_interfaces'.
      # Valid port-channel id numbers are < 1-2000 > for EOS < 4.25.0F and < 1 - 999999 > for EOS >= 4.25.0F.
      mlag_port_channel_id: <int>

      # MLAG Domain ID. If not set the node group name (Set with "group" key) will be used.
      mlag_domain_id: <str>
      spanning_tree_mode: <str; "mstp" | "rstp" | "rapid-pvst" | "none">
      spanning_tree_priority: <int; default=32768>
      spanning_tree_root_super: <bool; default=False>

      # Virtual router mac address for anycast gateway.
      virtual_router_mac_address: <str>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # Custom structured config applied to MLAG peer link port-channel id.
      # Added under port_channel_interfaces.[name=<interface>] for eos_cli_config_gen.
      # Overrides the settings on the port-channel interface level.
      # "mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
      mlag_port_channel_structured_config: <dict>

      # Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
      # Added under vlan_interfaces.[name=<interface>] for eos_cli_config_gen.
      # Overrides the settings on the vlan interface level.
      # "mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
      mlag_peer_vlan_structured_config: <dict>

      # Custom structured config applied to MLAG underlay L3 peering SVI interface id.
      # Added under vlan_interfaces.[name=<interface>] for eos_cli_config_gen.
      # Overrides the settings on the vlan interface level.
      # "mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
      mlag_peer_l3_vlan_structured_config: <dict>

      # Enable / Disable auto MLAG, when two nodes are defined in node group.
      mlag: <bool; default=True>

      # Enable / Disable MLAG dual primary detection.
      mlag_dual_primary_detection: <bool; default=False>

      # Set origin of routes received from MLAG iBGP peer to incomplete.
      # The purpose is to optimize routing for leaf loopbacks from spine perspective and
      # avoid suboptimal routing via peerlink for control plane traffic.
      mlag_ibgp_origin_incomplete: <bool; default=True>

      # Each list item supports range syntax that can be expanded into a list of interfaces.
      # Required when MLAG leafs are present in the topology.
      mlag_interfaces:
        - <str>

      # Set MLAG interface speed.
      # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
      mlag_interfaces_speed: <str>

      # Underlay L3 peering SVI interface id.
      # If set to 0 or the same vlan as mlag_peer_vlan, the mlag_peer_vlan will be used for L3 peering.
      mlag_peer_l3_vlan: <int; 0-4094; default=4093>

      # IP address pool used for MLAG underlay L3 peering. IP is derived from the node id.
      # Required when MLAG leafs present in topology and they are using a separate L3 peering VLAN.
      mlag_peer_l3_ipv4_pool: <str>

      # MLAG Peer Link (control link) SVI interface id.
      mlag_peer_vlan: <int; 1-4094; default=4094>
      mlag_peer_link_allowed_vlans: <str>

      # IP address pool used for MLAG Peer Link (control link). IP is derived from the node id.
      # Required when MLAG leafs present in topology.
      mlag_peer_ipv4_pool: <str>

      # If not set, the mlag port-channel id is generated based on the digits of the first interface present in 'mlag_interfaces'.
      # Valid port-channel id numbers are < 1-2000 > for EOS < 4.25.0F and < 1 - 999999 > for EOS >= 4.25.0F.
      mlag_port_channel_id: <int>

      # MLAG Domain ID. If not set the node group name (Set with "group" key) will be used.
      mlag_domain_id: <str>
      spanning_tree_mode: <str; "mstp" | "rstp" | "rapid-pvst" | "none">
      spanning_tree_priority: <int; default=32768>
      spanning_tree_root_super: <bool; default=False>

      # Virtual router mac address for anycast gateway.
      virtual_router_mac_address: <str>

Node type Loopback and VTEP configuration

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    loopback_ipv4_pool String Format: ipv4_cidr IPv4 subnet for Loopback0 allocation.
    vtep_loopback_ipv4_pool String Format: ipv4_cidr IPv4 subnet for VTEP-Loopback allocation.
    loopback_ipv4_offset Integer 0 Offset all assigned loopback IP addresses.
Required when the < loopback_ipv4_pool > is same for 2 different node_types (like spine and l3leaf) to avoid over-lapping IPs.
For example, set the minimum offset l3leaf.defaults.loopback_ipv4_offset: < total # spine switches > or vice versa.
    loopback_ipv6_pool String Format: ipv6_cidr IPv6 subnet for Loopback0 allocation.
    loopback_ipv6_offset Integer 0 Offset all assigned loopback IPv6 addresses.
Required when the < loopback_ipv6_pool > is same for 2 different node_types (like spine and l3leaf) to avoid overlapping IPs.
For example, set the minimum offset l3leaf.defaults.loopback_ipv6_offset: < total # spine switches > or vice versa.
    vtep Boolean Node is configured as a VTEP when applicable based on ‘overlay_routing_protocol’.
Overrides VTEP setting inherited from node_type_keys.
    vtep_loopback String Pattern: Loopback[\d/]+ Set VXLAN source interface.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          loopback_ipv4_pool String Format: ipv4_cidr IPv4 subnet for Loopback0 allocation.
          vtep_loopback_ipv4_pool String Format: ipv4_cidr IPv4 subnet for VTEP-Loopback allocation.
          loopback_ipv4_offset Integer 0 Offset all assigned loopback IP addresses.
Required when the < loopback_ipv4_pool > is same for 2 different node_types (like spine and l3leaf) to avoid over-lapping IPs.
For example, set the minimum offset l3leaf.defaults.loopback_ipv4_offset: < total # spine switches > or vice versa.
          loopback_ipv6_pool String Format: ipv6_cidr IPv6 subnet for Loopback0 allocation.
          loopback_ipv6_offset Integer 0 Offset all assigned loopback IPv6 addresses.
Required when the < loopback_ipv6_pool > is same for 2 different node_types (like spine and l3leaf) to avoid overlapping IPs.
For example, set the minimum offset l3leaf.defaults.loopback_ipv6_offset: < total # spine switches > or vice versa.
          vtep Boolean Node is configured as a VTEP when applicable based on ‘overlay_routing_protocol’.
Overrides VTEP setting inherited from node_type_keys.
          vtep_loopback String Pattern: Loopback[\d/]+ Set VXLAN source interface.
      loopback_ipv4_pool String Format: ipv4_cidr IPv4 subnet for Loopback0 allocation.
      vtep_loopback_ipv4_pool String Format: ipv4_cidr IPv4 subnet for VTEP-Loopback allocation.
      loopback_ipv4_offset Integer 0 Offset all assigned loopback IP addresses.
Required when the < loopback_ipv4_pool > is same for 2 different node_types (like spine and l3leaf) to avoid over-lapping IPs.
For example, set the minimum offset l3leaf.defaults.loopback_ipv4_offset: < total # spine switches > or vice versa.
      loopback_ipv6_pool String Format: ipv6_cidr IPv6 subnet for Loopback0 allocation.
      loopback_ipv6_offset Integer 0 Offset all assigned loopback IPv6 addresses.
Required when the < loopback_ipv6_pool > is same for 2 different node_types (like spine and l3leaf) to avoid overlapping IPs.
For example, set the minimum offset l3leaf.defaults.loopback_ipv6_offset: < total # spine switches > or vice versa.
      vtep Boolean Node is configured as a VTEP when applicable based on ‘overlay_routing_protocol’.
Overrides VTEP setting inherited from node_type_keys.
      vtep_loopback String Pattern: Loopback[\d/]+ Set VXLAN source interface.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      loopback_ipv4_pool String Format: ipv4_cidr IPv4 subnet for Loopback0 allocation.
      vtep_loopback_ipv4_pool String Format: ipv4_cidr IPv4 subnet for VTEP-Loopback allocation.
      loopback_ipv4_offset Integer 0 Offset all assigned loopback IP addresses.
Required when the < loopback_ipv4_pool > is same for 2 different node_types (like spine and l3leaf) to avoid over-lapping IPs.
For example, set the minimum offset l3leaf.defaults.loopback_ipv4_offset: < total # spine switches > or vice versa.
      loopback_ipv6_pool String Format: ipv6_cidr IPv6 subnet for Loopback0 allocation.
      loopback_ipv6_offset Integer 0 Offset all assigned loopback IPv6 addresses.
Required when the < loopback_ipv6_pool > is same for 2 different node_types (like spine and l3leaf) to avoid overlapping IPs.
For example, set the minimum offset l3leaf.defaults.loopback_ipv6_offset: < total # spine switches > or vice versa.
      vtep Boolean Node is configured as a VTEP when applicable based on ‘overlay_routing_protocol’.
Overrides VTEP setting inherited from node_type_keys.
      vtep_loopback String Pattern: Loopback[\d/]+ Set VXLAN source interface.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # IPv4 subnet for Loopback0 allocation.
    loopback_ipv4_pool: <str>

    # IPv4 subnet for VTEP-Loopback allocation.
    vtep_loopback_ipv4_pool: <str>

    # Offset all assigned loopback IP addresses.
    # Required when the < loopback_ipv4_pool > is same for 2 different node_types (like spine and l3leaf) to avoid over-lapping IPs.
    # For example, set the minimum offset l3leaf.defaults.loopback_ipv4_offset: < total # spine switches > or vice versa.
    loopback_ipv4_offset: <int; default=0>

    # IPv6 subnet for Loopback0 allocation.
    loopback_ipv6_pool: <str>

    # Offset all assigned loopback IPv6 addresses.
    # Required when the < loopback_ipv6_pool > is same for 2 different node_types (like spine and l3leaf) to avoid overlapping IPs.
    # For example, set the minimum offset l3leaf.defaults.loopback_ipv6_offset: < total # spine switches > or vice versa.
    loopback_ipv6_offset: <int; default=0>

    # Node is configured as a VTEP when applicable based on 'overlay_routing_protocol'.
    # Overrides VTEP setting inherited from node_type_keys.
    vtep: <bool>

    # Set VXLAN source interface.
    vtep_loopback: <str>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # IPv4 subnet for Loopback0 allocation.
          loopback_ipv4_pool: <str>

          # IPv4 subnet for VTEP-Loopback allocation.
          vtep_loopback_ipv4_pool: <str>

          # Offset all assigned loopback IP addresses.
          # Required when the < loopback_ipv4_pool > is same for 2 different node_types (like spine and l3leaf) to avoid over-lapping IPs.
          # For example, set the minimum offset l3leaf.defaults.loopback_ipv4_offset: < total # spine switches > or vice versa.
          loopback_ipv4_offset: <int; default=0>

          # IPv6 subnet for Loopback0 allocation.
          loopback_ipv6_pool: <str>

          # Offset all assigned loopback IPv6 addresses.
          # Required when the < loopback_ipv6_pool > is same for 2 different node_types (like spine and l3leaf) to avoid overlapping IPs.
          # For example, set the minimum offset l3leaf.defaults.loopback_ipv6_offset: < total # spine switches > or vice versa.
          loopback_ipv6_offset: <int; default=0>

          # Node is configured as a VTEP when applicable based on 'overlay_routing_protocol'.
          # Overrides VTEP setting inherited from node_type_keys.
          vtep: <bool>

          # Set VXLAN source interface.
          vtep_loopback: <str>

      # IPv4 subnet for Loopback0 allocation.
      loopback_ipv4_pool: <str>

      # IPv4 subnet for VTEP-Loopback allocation.
      vtep_loopback_ipv4_pool: <str>

      # Offset all assigned loopback IP addresses.
      # Required when the < loopback_ipv4_pool > is same for 2 different node_types (like spine and l3leaf) to avoid over-lapping IPs.
      # For example, set the minimum offset l3leaf.defaults.loopback_ipv4_offset: < total # spine switches > or vice versa.
      loopback_ipv4_offset: <int; default=0>

      # IPv6 subnet for Loopback0 allocation.
      loopback_ipv6_pool: <str>

      # Offset all assigned loopback IPv6 addresses.
      # Required when the < loopback_ipv6_pool > is same for 2 different node_types (like spine and l3leaf) to avoid overlapping IPs.
      # For example, set the minimum offset l3leaf.defaults.loopback_ipv6_offset: < total # spine switches > or vice versa.
      loopback_ipv6_offset: <int; default=0>

      # Node is configured as a VTEP when applicable based on 'overlay_routing_protocol'.
      # Overrides VTEP setting inherited from node_type_keys.
      vtep: <bool>

      # Set VXLAN source interface.
      vtep_loopback: <str>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # IPv4 subnet for Loopback0 allocation.
      loopback_ipv4_pool: <str>

      # IPv4 subnet for VTEP-Loopback allocation.
      vtep_loopback_ipv4_pool: <str>

      # Offset all assigned loopback IP addresses.
      # Required when the < loopback_ipv4_pool > is same for 2 different node_types (like spine and l3leaf) to avoid over-lapping IPs.
      # For example, set the minimum offset l3leaf.defaults.loopback_ipv4_offset: < total # spine switches > or vice versa.
      loopback_ipv4_offset: <int; default=0>

      # IPv6 subnet for Loopback0 allocation.
      loopback_ipv6_pool: <str>

      # Offset all assigned loopback IPv6 addresses.
      # Required when the < loopback_ipv6_pool > is same for 2 different node_types (like spine and l3leaf) to avoid overlapping IPs.
      # For example, set the minimum offset l3leaf.defaults.loopback_ipv6_offset: < total # spine switches > or vice versa.
      loopback_ipv6_offset: <int; default=0>

      # Node is configured as a VTEP when applicable based on 'overlay_routing_protocol'.
      # Overrides VTEP setting inherited from node_type_keys.
      vtep: <bool>

      # Set VXLAN source interface.
      vtep_loopback: <str>

Node type BGP configuration

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    bgp_as String Required with eBGP.
    bgp_defaults List, items: String List of EOS commands to apply to BGP daemon.
      - <str> String
    evpn_role String Valid Values:
- client
- server
- none
Acting role in EVPN control plane.
Default is set in node_type definition from node_type_keys.
    evpn_route_servers List, items: String List of nodes acting as EVPN Route-Servers / Route-Reflectors.
      - <str> String
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          bgp_as String Required with eBGP.
          bgp_defaults List, items: String List of EOS commands to apply to BGP daemon.
            - <str> String
          evpn_role String Valid Values:
- client
- server
- none
Acting role in EVPN control plane.
Default is set in node_type definition from node_type_keys.
          evpn_route_servers List, items: String List of nodes acting as EVPN Route-Servers / Route-Reflectors.
            - <str> String
      bgp_as String Required with eBGP.
      bgp_defaults List, items: String List of EOS commands to apply to BGP daemon.
        - <str> String
      evpn_role String Valid Values:
- client
- server
- none
Acting role in EVPN control plane.
Default is set in node_type definition from node_type_keys.
      evpn_route_servers List, items: String List of nodes acting as EVPN Route-Servers / Route-Reflectors.
        - <str> String
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      bgp_as String Required with eBGP.
      bgp_defaults List, items: String List of EOS commands to apply to BGP daemon.
        - <str> String
      evpn_role String Valid Values:
- client
- server
- none
Acting role in EVPN control plane.
Default is set in node_type definition from node_type_keys.
      evpn_route_servers List, items: String List of nodes acting as EVPN Route-Servers / Route-Reflectors.
        - <str> String
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # Required with eBGP.
    bgp_as: <str>

    # List of EOS commands to apply to BGP daemon.
    bgp_defaults:
      - <str>

    # Acting role in EVPN control plane.
    # Default is set in node_type definition from node_type_keys.
    evpn_role: <str; "client" | "server" | "none">

    # List of nodes acting as EVPN Route-Servers / Route-Reflectors.
    evpn_route_servers:
      - <str>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # Required with eBGP.
          bgp_as: <str>

          # List of EOS commands to apply to BGP daemon.
          bgp_defaults:
            - <str>

          # Acting role in EVPN control plane.
          # Default is set in node_type definition from node_type_keys.
          evpn_role: <str; "client" | "server" | "none">

          # List of nodes acting as EVPN Route-Servers / Route-Reflectors.
          evpn_route_servers:
            - <str>

      # Required with eBGP.
      bgp_as: <str>

      # List of EOS commands to apply to BGP daemon.
      bgp_defaults:
        - <str>

      # Acting role in EVPN control plane.
      # Default is set in node_type definition from node_type_keys.
      evpn_role: <str; "client" | "server" | "none">

      # List of nodes acting as EVPN Route-Servers / Route-Reflectors.
      evpn_route_servers:
        - <str>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # Required with eBGP.
      bgp_as: <str>

      # List of EOS commands to apply to BGP daemon.
      bgp_defaults:
        - <str>

      # Acting role in EVPN control plane.
      # Default is set in node_type definition from node_type_keys.
      evpn_role: <str; "client" | "server" | "none">

      # List of nodes acting as EVPN Route-Servers / Route-Reflectors.
      evpn_route_servers:
        - <str>

Node type network services configuration

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    evpn_services_l2_only Boolean False Possibility to prevent configuration of Tenant VRFs and SVIs.
Override node definition “network_services_l3” from node_type_keys.
This allows support for centralized routing.
    filter Dictionary Filter L3 and L2 network services based on tenant and tags (and operation filter).
If filter is not defined it will default to all.
      tenants List, items: String ['all']
        - <str> String
      tags List, items: String ['all']
        - <str> String
      always_include_vrfs_in_tenants List, items: String List of tenants where VRFs will be configured even if VLANs are not included in tags.
Useful for L3 “border” leaf.
        - <str> String
      only_vlans_in_use Boolean False Only configure VLANs, SVIs, VRFs in use by connected endpoints or downstream L2 switches.
Note! This feature only considers configuration managed by eos_designs.
This excludes structured_config, custom_structured_configuration_, raw_eos_cli, eos_cli, custom templates, configlets etc.
    igmp_snooping_enabled Boolean True Activate or deactivate IGMP snooping on device level.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          evpn_services_l2_only Boolean False Possibility to prevent configuration of Tenant VRFs and SVIs.
Override node definition “network_services_l3” from node_type_keys.
This allows support for centralized routing.
          filter Dictionary Filter L3 and L2 network services based on tenant and tags (and operation filter).
If filter is not defined it will default to all.
            tenants List, items: String ['all']
              - <str> String
            tags List, items: String ['all']
              - <str> String
            always_include_vrfs_in_tenants List, items: String List of tenants where VRFs will be configured even if VLANs are not included in tags.
Useful for L3 “border” leaf.
              - <str> String
            only_vlans_in_use Boolean False Only configure VLANs, SVIs, VRFs in use by connected endpoints or downstream L2 switches.
Note! This feature only considers configuration managed by eos_designs.
This excludes structured_config, custom_structured_configuration_, raw_eos_cli, eos_cli, custom templates, configlets etc.
          igmp_snooping_enabled Boolean True Activate or deactivate IGMP snooping on device level.
      evpn_services_l2_only Boolean False Possibility to prevent configuration of Tenant VRFs and SVIs.
Override node definition “network_services_l3” from node_type_keys.
This allows support for centralized routing.
      filter Dictionary Filter L3 and L2 network services based on tenant and tags (and operation filter).
If filter is not defined it will default to all.
        tenants List, items: String ['all']
          - <str> String
        tags List, items: String ['all']
          - <str> String
        always_include_vrfs_in_tenants List, items: String List of tenants where VRFs will be configured even if VLANs are not included in tags.
Useful for L3 “border” leaf.
          - <str> String
        only_vlans_in_use Boolean False Only configure VLANs, SVIs, VRFs in use by connected endpoints or downstream L2 switches.
Note! This feature only considers configuration managed by eos_designs.
This excludes structured_config, custom_structured_configuration_, raw_eos_cli, eos_cli, custom templates, configlets etc.
      igmp_snooping_enabled Boolean True Activate or deactivate IGMP snooping on device level.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      evpn_services_l2_only Boolean False Possibility to prevent configuration of Tenant VRFs and SVIs.
Override node definition “network_services_l3” from node_type_keys.
This allows support for centralized routing.
      filter Dictionary Filter L3 and L2 network services based on tenant and tags (and operation filter).
If filter is not defined it will default to all.
        tenants List, items: String ['all']
          - <str> String
        tags List, items: String ['all']
          - <str> String
        always_include_vrfs_in_tenants List, items: String List of tenants where VRFs will be configured even if VLANs are not included in tags.
Useful for L3 “border” leaf.
          - <str> String
        only_vlans_in_use Boolean False Only configure VLANs, SVIs, VRFs in use by connected endpoints or downstream L2 switches.
Note! This feature only considers configuration managed by eos_designs.
This excludes structured_config, custom_structured_configuration_, raw_eos_cli, eos_cli, custom templates, configlets etc.
      igmp_snooping_enabled Boolean True Activate or deactivate IGMP snooping on device level.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # Possibility to prevent configuration of Tenant VRFs and SVIs.
    # Override node definition "network_services_l3" from node_type_keys.
    # This allows support for centralized routing.
    evpn_services_l2_only: <bool; default=False>

    # Filter L3 and L2 network services based on tenant and tags (and operation filter).
    # If filter is not defined it will default to all.
    filter:
      tenants: # default=['all']
        - <str>
      tags: # default=['all']
        - <str>

      # List of tenants where VRFs will be configured even if VLANs are not included in tags.
      # Useful for L3 "border" leaf.
      always_include_vrfs_in_tenants:
        - <str>

      # Only configure VLANs, SVIs, VRFs in use by connected endpoints or downstream L2 switches.
      # Note! This feature only considers configuration managed by eos_designs.
      # This excludes structured_config, custom_structured_configuration_, raw_eos_cli, eos_cli, custom templates, configlets etc.
      only_vlans_in_use: <bool; default=False>

    # Activate or deactivate IGMP snooping on device level.
    igmp_snooping_enabled: <bool; default=True>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # Possibility to prevent configuration of Tenant VRFs and SVIs.
          # Override node definition "network_services_l3" from node_type_keys.
          # This allows support for centralized routing.
          evpn_services_l2_only: <bool; default=False>

          # Filter L3 and L2 network services based on tenant and tags (and operation filter).
          # If filter is not defined it will default to all.
          filter:
            tenants: # default=['all']
              - <str>
            tags: # default=['all']
              - <str>

            # List of tenants where VRFs will be configured even if VLANs are not included in tags.
            # Useful for L3 "border" leaf.
            always_include_vrfs_in_tenants:
              - <str>

            # Only configure VLANs, SVIs, VRFs in use by connected endpoints or downstream L2 switches.
            # Note! This feature only considers configuration managed by eos_designs.
            # This excludes structured_config, custom_structured_configuration_, raw_eos_cli, eos_cli, custom templates, configlets etc.
            only_vlans_in_use: <bool; default=False>

          # Activate or deactivate IGMP snooping on device level.
          igmp_snooping_enabled: <bool; default=True>

      # Possibility to prevent configuration of Tenant VRFs and SVIs.
      # Override node definition "network_services_l3" from node_type_keys.
      # This allows support for centralized routing.
      evpn_services_l2_only: <bool; default=False>

      # Filter L3 and L2 network services based on tenant and tags (and operation filter).
      # If filter is not defined it will default to all.
      filter:
        tenants: # default=['all']
          - <str>
        tags: # default=['all']
          - <str>

        # List of tenants where VRFs will be configured even if VLANs are not included in tags.
        # Useful for L3 "border" leaf.
        always_include_vrfs_in_tenants:
          - <str>

        # Only configure VLANs, SVIs, VRFs in use by connected endpoints or downstream L2 switches.
        # Note! This feature only considers configuration managed by eos_designs.
        # This excludes structured_config, custom_structured_configuration_, raw_eos_cli, eos_cli, custom templates, configlets etc.
        only_vlans_in_use: <bool; default=False>

      # Activate or deactivate IGMP snooping on device level.
      igmp_snooping_enabled: <bool; default=True>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # Possibility to prevent configuration of Tenant VRFs and SVIs.
      # Override node definition "network_services_l3" from node_type_keys.
      # This allows support for centralized routing.
      evpn_services_l2_only: <bool; default=False>

      # Filter L3 and L2 network services based on tenant and tags (and operation filter).
      # If filter is not defined it will default to all.
      filter:
        tenants: # default=['all']
          - <str>
        tags: # default=['all']
          - <str>

        # List of tenants where VRFs will be configured even if VLANs are not included in tags.
        # Useful for L3 "border" leaf.
        always_include_vrfs_in_tenants:
          - <str>

        # Only configure VLANs, SVIs, VRFs in use by connected endpoints or downstream L2 switches.
        # Note! This feature only considers configuration managed by eos_designs.
        # This excludes structured_config, custom_structured_configuration_, raw_eos_cli, eos_cli, custom templates, configlets etc.
        only_vlans_in_use: <bool; default=False>

      # Activate or deactivate IGMP snooping on device level.
      igmp_snooping_enabled: <bool; default=True>

Node type EVPN gateway configuration

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    ipvpn_gateway Dictionary Node is acting as IP-VPN Gateway for EVPN to MPLS-IP-VPN Interworking. The BGP peer group used for this is “bgp_peer_groups.ipvpn_gateway_peers”.
L3 Reachability is required for this to work, the preferred method to establish underlay connectivity is to use core_interfaces.
      enabled Boolean Required
      evpn_domain_id String 65535:1 Domain ID to assign to EVPN address family for use with D-path. Format :.
      ipvpn_domain_id String 65535:2 Domain ID to assign to IPVPN address families for use with D-path. Format :.
      enable_d_path Boolean True Enable D-path for use with BGP bestpath selection algorithm.
      maximum_routes Integer 0 Maximum routes to accept from IPVPN remote peers.
      local_as String none Apply local-as to peering with IPVPN remote peers.
      address_families List, items: String ['vpn-ipv4'] IPVPN address families to enable for remote peers.
        - <str> String
      remote_peers List, items: Dictionary
        - hostname String Required Hostname of remote IPVPN Peer.
          ip_address String Required Format: ipv4 Peering IP of remote IPVPN Peer.
          bgp_as String Required BGP ASN of remote IPVPN Peer.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          ipvpn_gateway Dictionary Node is acting as IP-VPN Gateway for EVPN to MPLS-IP-VPN Interworking. The BGP peer group used for this is “bgp_peer_groups.ipvpn_gateway_peers”.
L3 Reachability is required for this to work, the preferred method to establish underlay connectivity is to use core_interfaces.
            enabled Boolean Required
            evpn_domain_id String 65535:1 Domain ID to assign to EVPN address family for use with D-path. Format :.
            ipvpn_domain_id String 65535:2 Domain ID to assign to IPVPN address families for use with D-path. Format :.
            enable_d_path Boolean True Enable D-path for use with BGP bestpath selection algorithm.
            maximum_routes Integer 0 Maximum routes to accept from IPVPN remote peers.
            local_as String none Apply local-as to peering with IPVPN remote peers.
            address_families List, items: String ['vpn-ipv4'] IPVPN address families to enable for remote peers.
              - <str> String
            remote_peers List, items: Dictionary
              - hostname String Required Hostname of remote IPVPN Peer.
                ip_address String Required Format: ipv4 Peering IP of remote IPVPN Peer.
                bgp_as String Required BGP ASN of remote IPVPN Peer.
      ipvpn_gateway Dictionary Node is acting as IP-VPN Gateway for EVPN to MPLS-IP-VPN Interworking. The BGP peer group used for this is “bgp_peer_groups.ipvpn_gateway_peers”.
L3 Reachability is required for this to work, the preferred method to establish underlay connectivity is to use core_interfaces.
        enabled Boolean Required
        evpn_domain_id String 65535:1 Domain ID to assign to EVPN address family for use with D-path. Format :.
        ipvpn_domain_id String 65535:2 Domain ID to assign to IPVPN address families for use with D-path. Format :.
        enable_d_path Boolean True Enable D-path for use with BGP bestpath selection algorithm.
        maximum_routes Integer 0 Maximum routes to accept from IPVPN remote peers.
        local_as String none Apply local-as to peering with IPVPN remote peers.
        address_families List, items: String ['vpn-ipv4'] IPVPN address families to enable for remote peers.
          - <str> String
        remote_peers List, items: Dictionary
          - hostname String Required Hostname of remote IPVPN Peer.
            ip_address String Required Format: ipv4 Peering IP of remote IPVPN Peer.
            bgp_as String Required BGP ASN of remote IPVPN Peer.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      ipvpn_gateway Dictionary Node is acting as IP-VPN Gateway for EVPN to MPLS-IP-VPN Interworking. The BGP peer group used for this is “bgp_peer_groups.ipvpn_gateway_peers”.
L3 Reachability is required for this to work, the preferred method to establish underlay connectivity is to use core_interfaces.
        enabled Boolean Required
        evpn_domain_id String 65535:1 Domain ID to assign to EVPN address family for use with D-path. Format :.
        ipvpn_domain_id String 65535:2 Domain ID to assign to IPVPN address families for use with D-path. Format :.
        enable_d_path Boolean True Enable D-path for use with BGP bestpath selection algorithm.
        maximum_routes Integer 0 Maximum routes to accept from IPVPN remote peers.
        local_as String none Apply local-as to peering with IPVPN remote peers.
        address_families List, items: String ['vpn-ipv4'] IPVPN address families to enable for remote peers.
          - <str> String
        remote_peers List, items: Dictionary
          - hostname String Required Hostname of remote IPVPN Peer.
            ip_address String Required Format: ipv4 Peering IP of remote IPVPN Peer.
            bgp_as String Required BGP ASN of remote IPVPN Peer.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # Node is acting as IP-VPN Gateway for EVPN to MPLS-IP-VPN Interworking. The BGP peer group used for this is "bgp_peer_groups.ipvpn_gateway_peers".
    # L3 Reachability is required for this to work, the preferred method to establish underlay connectivity is to use core_interfaces.
    ipvpn_gateway:
      enabled: <bool; required>

      # Domain ID to assign to EVPN address family for use with D-path. Format <nn>:<nn>.
      evpn_domain_id: <str; default="65535:1">

      # Domain ID to assign to IPVPN address families for use with D-path. Format <nn>:<nn>.
      ipvpn_domain_id: <str; default="65535:2">

      # Enable D-path for use with BGP bestpath selection algorithm.
      enable_d_path: <bool; default=True>

      # Maximum routes to accept from IPVPN remote peers.
      maximum_routes: <int; default=0>

      # Apply local-as to peering with IPVPN remote peers.
      local_as: <str; default="none">

      # IPVPN address families to enable for remote peers.
      address_families: # default=['vpn-ipv4']
        - <str>
      remote_peers:

          # Hostname of remote IPVPN Peer.
        - hostname: <str; required>

          # Peering IP of remote IPVPN Peer.
          ip_address: <str; required>

          # BGP ASN of remote IPVPN Peer.
          bgp_as: <str; required>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # Node is acting as IP-VPN Gateway for EVPN to MPLS-IP-VPN Interworking. The BGP peer group used for this is "bgp_peer_groups.ipvpn_gateway_peers".
          # L3 Reachability is required for this to work, the preferred method to establish underlay connectivity is to use core_interfaces.
          ipvpn_gateway:
            enabled: <bool; required>

            # Domain ID to assign to EVPN address family for use with D-path. Format <nn>:<nn>.
            evpn_domain_id: <str; default="65535:1">

            # Domain ID to assign to IPVPN address families for use with D-path. Format <nn>:<nn>.
            ipvpn_domain_id: <str; default="65535:2">

            # Enable D-path for use with BGP bestpath selection algorithm.
            enable_d_path: <bool; default=True>

            # Maximum routes to accept from IPVPN remote peers.
            maximum_routes: <int; default=0>

            # Apply local-as to peering with IPVPN remote peers.
            local_as: <str; default="none">

            # IPVPN address families to enable for remote peers.
            address_families: # default=['vpn-ipv4']
              - <str>
            remote_peers:

                # Hostname of remote IPVPN Peer.
              - hostname: <str; required>

                # Peering IP of remote IPVPN Peer.
                ip_address: <str; required>

                # BGP ASN of remote IPVPN Peer.
                bgp_as: <str; required>

      # Node is acting as IP-VPN Gateway for EVPN to MPLS-IP-VPN Interworking. The BGP peer group used for this is "bgp_peer_groups.ipvpn_gateway_peers".
      # L3 Reachability is required for this to work, the preferred method to establish underlay connectivity is to use core_interfaces.
      ipvpn_gateway:
        enabled: <bool; required>

        # Domain ID to assign to EVPN address family for use with D-path. Format <nn>:<nn>.
        evpn_domain_id: <str; default="65535:1">

        # Domain ID to assign to IPVPN address families for use with D-path. Format <nn>:<nn>.
        ipvpn_domain_id: <str; default="65535:2">

        # Enable D-path for use with BGP bestpath selection algorithm.
        enable_d_path: <bool; default=True>

        # Maximum routes to accept from IPVPN remote peers.
        maximum_routes: <int; default=0>

        # Apply local-as to peering with IPVPN remote peers.
        local_as: <str; default="none">

        # IPVPN address families to enable for remote peers.
        address_families: # default=['vpn-ipv4']
          - <str>
        remote_peers:

            # Hostname of remote IPVPN Peer.
          - hostname: <str; required>

            # Peering IP of remote IPVPN Peer.
            ip_address: <str; required>

            # BGP ASN of remote IPVPN Peer.
            bgp_as: <str; required>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # Node is acting as IP-VPN Gateway for EVPN to MPLS-IP-VPN Interworking. The BGP peer group used for this is "bgp_peer_groups.ipvpn_gateway_peers".
      # L3 Reachability is required for this to work, the preferred method to establish underlay connectivity is to use core_interfaces.
      ipvpn_gateway:
        enabled: <bool; required>

        # Domain ID to assign to EVPN address family for use with D-path. Format <nn>:<nn>.
        evpn_domain_id: <str; default="65535:1">

        # Domain ID to assign to IPVPN address families for use with D-path. Format <nn>:<nn>.
        ipvpn_domain_id: <str; default="65535:2">

        # Enable D-path for use with BGP bestpath selection algorithm.
        enable_d_path: <bool; default=True>

        # Maximum routes to accept from IPVPN remote peers.
        maximum_routes: <int; default=0>

        # Apply local-as to peering with IPVPN remote peers.
        local_as: <str; default="none">

        # IPVPN address families to enable for remote peers.
        address_families: # default=['vpn-ipv4']
          - <str>
        remote_peers:

            # Hostname of remote IPVPN Peer.
          - hostname: <str; required>

            # Peering IP of remote IPVPN Peer.
            ip_address: <str; required>

            # BGP ASN of remote IPVPN Peer.
            bgp_as: <str; required>

Node type EVPN multi-domain gateway configuration

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    evpn_gateway Dictionary Node is acting as EVPN Multi-Domain Gateway.
New BGP peer-group is generated between EVPN GWs in different domains or between GWs and Route Servers.
Name can be changed under “bgp_peer_groups.evpn_overlay_core” variable.
L3 rechability for different EVPN GWs must be already in place, it is recommended to use DCI & L3 Edge if Route Servers and GWs are not defined under the same Ansible inventory.
      remote_peers List, items: Dictionary Define remote peers of the EVPN VXLAN Gateway.
If the hostname can be found in the inventory, ip_address and BGP ASN will be automatically populated. Manual override takes precedence.
If the peer’s hostname can not be found in the inventory, ip_address and bgp_as must be defined.
        - hostname String Hostname of remote EVPN GW server.
          ip_address String Format: ipv4 Peering IP of remote Route Server.
          bgp_as String BGP ASN of remote Route Server.
      evpn_l2 Dictionary Enable EVPN Gateway functionality for route-types 2 (MAC-IP) and 3 (IMET).
        enabled Boolean False
      evpn_l3 Dictionary Enable EVPN Gateway functionality for route-type 5 (IP-PREFIX).
        enabled Boolean False
        inter_domain Boolean True
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          evpn_gateway Dictionary Node is acting as EVPN Multi-Domain Gateway.
New BGP peer-group is generated between EVPN GWs in different domains or between GWs and Route Servers.
Name can be changed under “bgp_peer_groups.evpn_overlay_core” variable.
L3 rechability for different EVPN GWs must be already in place, it is recommended to use DCI & L3 Edge if Route Servers and GWs are not defined under the same Ansible inventory.
            remote_peers List, items: Dictionary Define remote peers of the EVPN VXLAN Gateway.
If the hostname can be found in the inventory, ip_address and BGP ASN will be automatically populated. Manual override takes precedence.
If the peer’s hostname can not be found in the inventory, ip_address and bgp_as must be defined.
              - hostname String Hostname of remote EVPN GW server.
                ip_address String Format: ipv4 Peering IP of remote Route Server.
                bgp_as String BGP ASN of remote Route Server.
            evpn_l2 Dictionary Enable EVPN Gateway functionality for route-types 2 (MAC-IP) and 3 (IMET).
              enabled Boolean False
            evpn_l3 Dictionary Enable EVPN Gateway functionality for route-type 5 (IP-PREFIX).
              enabled Boolean False
              inter_domain Boolean True
      evpn_gateway Dictionary Node is acting as EVPN Multi-Domain Gateway.
New BGP peer-group is generated between EVPN GWs in different domains or between GWs and Route Servers.
Name can be changed under “bgp_peer_groups.evpn_overlay_core” variable.
L3 rechability for different EVPN GWs must be already in place, it is recommended to use DCI & L3 Edge if Route Servers and GWs are not defined under the same Ansible inventory.
        remote_peers List, items: Dictionary Define remote peers of the EVPN VXLAN Gateway.
If the hostname can be found in the inventory, ip_address and BGP ASN will be automatically populated. Manual override takes precedence.
If the peer’s hostname can not be found in the inventory, ip_address and bgp_as must be defined.
          - hostname String Hostname of remote EVPN GW server.
            ip_address String Format: ipv4 Peering IP of remote Route Server.
            bgp_as String BGP ASN of remote Route Server.
        evpn_l2 Dictionary Enable EVPN Gateway functionality for route-types 2 (MAC-IP) and 3 (IMET).
          enabled Boolean False
        evpn_l3 Dictionary Enable EVPN Gateway functionality for route-type 5 (IP-PREFIX).
          enabled Boolean False
          inter_domain Boolean True
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      evpn_gateway Dictionary Node is acting as EVPN Multi-Domain Gateway.
New BGP peer-group is generated between EVPN GWs in different domains or between GWs and Route Servers.
Name can be changed under “bgp_peer_groups.evpn_overlay_core” variable.
L3 rechability for different EVPN GWs must be already in place, it is recommended to use DCI & L3 Edge if Route Servers and GWs are not defined under the same Ansible inventory.
        remote_peers List, items: Dictionary Define remote peers of the EVPN VXLAN Gateway.
If the hostname can be found in the inventory, ip_address and BGP ASN will be automatically populated. Manual override takes precedence.
If the peer’s hostname can not be found in the inventory, ip_address and bgp_as must be defined.
          - hostname String Hostname of remote EVPN GW server.
            ip_address String Format: ipv4 Peering IP of remote Route Server.
            bgp_as String BGP ASN of remote Route Server.
        evpn_l2 Dictionary Enable EVPN Gateway functionality for route-types 2 (MAC-IP) and 3 (IMET).
          enabled Boolean False
        evpn_l3 Dictionary Enable EVPN Gateway functionality for route-type 5 (IP-PREFIX).
          enabled Boolean False
          inter_domain Boolean True
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # Node is acting as EVPN Multi-Domain Gateway.
    # New BGP peer-group is generated between EVPN GWs in different domains or between GWs and Route Servers.
    # Name can be changed under "bgp_peer_groups.evpn_overlay_core" variable.
    # L3 rechability for different EVPN GWs must be already in place, it is recommended to use DCI & L3 Edge if Route Servers and GWs are not defined under the same Ansible inventory.
    evpn_gateway:

      # Define remote peers of the EVPN VXLAN Gateway.
      # If the hostname can be found in the inventory, ip_address and BGP ASN will be automatically populated. Manual override takes precedence.
      # If the peer's hostname can not be found in the inventory, ip_address and bgp_as must be defined.
      remote_peers:

          # Hostname of remote EVPN GW server.
        - hostname: <str>

          # Peering IP of remote Route Server.
          ip_address: <str>

          # BGP ASN of remote Route Server.
          bgp_as: <str>

      # Enable EVPN Gateway functionality for route-types 2 (MAC-IP) and 3 (IMET).
      evpn_l2:
        enabled: <bool; default=False>

      # Enable EVPN Gateway functionality for route-type 5 (IP-PREFIX).
      evpn_l3:
        enabled: <bool; default=False>
        inter_domain: <bool; default=True>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # Node is acting as EVPN Multi-Domain Gateway.
          # New BGP peer-group is generated between EVPN GWs in different domains or between GWs and Route Servers.
          # Name can be changed under "bgp_peer_groups.evpn_overlay_core" variable.
          # L3 rechability for different EVPN GWs must be already in place, it is recommended to use DCI & L3 Edge if Route Servers and GWs are not defined under the same Ansible inventory.
          evpn_gateway:

            # Define remote peers of the EVPN VXLAN Gateway.
            # If the hostname can be found in the inventory, ip_address and BGP ASN will be automatically populated. Manual override takes precedence.
            # If the peer's hostname can not be found in the inventory, ip_address and bgp_as must be defined.
            remote_peers:

                # Hostname of remote EVPN GW server.
              - hostname: <str>

                # Peering IP of remote Route Server.
                ip_address: <str>

                # BGP ASN of remote Route Server.
                bgp_as: <str>

            # Enable EVPN Gateway functionality for route-types 2 (MAC-IP) and 3 (IMET).
            evpn_l2:
              enabled: <bool; default=False>

            # Enable EVPN Gateway functionality for route-type 5 (IP-PREFIX).
            evpn_l3:
              enabled: <bool; default=False>
              inter_domain: <bool; default=True>

      # Node is acting as EVPN Multi-Domain Gateway.
      # New BGP peer-group is generated between EVPN GWs in different domains or between GWs and Route Servers.
      # Name can be changed under "bgp_peer_groups.evpn_overlay_core" variable.
      # L3 rechability for different EVPN GWs must be already in place, it is recommended to use DCI & L3 Edge if Route Servers and GWs are not defined under the same Ansible inventory.
      evpn_gateway:

        # Define remote peers of the EVPN VXLAN Gateway.
        # If the hostname can be found in the inventory, ip_address and BGP ASN will be automatically populated. Manual override takes precedence.
        # If the peer's hostname can not be found in the inventory, ip_address and bgp_as must be defined.
        remote_peers:

            # Hostname of remote EVPN GW server.
          - hostname: <str>

            # Peering IP of remote Route Server.
            ip_address: <str>

            # BGP ASN of remote Route Server.
            bgp_as: <str>

        # Enable EVPN Gateway functionality for route-types 2 (MAC-IP) and 3 (IMET).
        evpn_l2:
          enabled: <bool; default=False>

        # Enable EVPN Gateway functionality for route-type 5 (IP-PREFIX).
        evpn_l3:
          enabled: <bool; default=False>
          inter_domain: <bool; default=True>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # Node is acting as EVPN Multi-Domain Gateway.
      # New BGP peer-group is generated between EVPN GWs in different domains or between GWs and Route Servers.
      # Name can be changed under "bgp_peer_groups.evpn_overlay_core" variable.
      # L3 rechability for different EVPN GWs must be already in place, it is recommended to use DCI & L3 Edge if Route Servers and GWs are not defined under the same Ansible inventory.
      evpn_gateway:

        # Define remote peers of the EVPN VXLAN Gateway.
        # If the hostname can be found in the inventory, ip_address and BGP ASN will be automatically populated. Manual override takes precedence.
        # If the peer's hostname can not be found in the inventory, ip_address and bgp_as must be defined.
        remote_peers:

            # Hostname of remote EVPN GW server.
          - hostname: <str>

            # Peering IP of remote Route Server.
            ip_address: <str>

            # BGP ASN of remote Route Server.
            bgp_as: <str>

        # Enable EVPN Gateway functionality for route-types 2 (MAC-IP) and 3 (IMET).
        evpn_l2:
          enabled: <bool; default=False>

        # Enable EVPN Gateway functionality for route-type 5 (IP-PREFIX).
        evpn_l3:
          enabled: <bool; default=False>
          inter_domain: <bool; default=True>

Node type ISIS Configuration

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    isis_system_id_prefix String Pattern: [0-9a-f]{4}.[0-9a-f]{4} (4.4 hexadecimal).
    isis_maximum_paths Integer Number of path to configure in ECMP for ISIS.
    is_type String level-2 Valid Values:
- level-1-2
- level-1
- level-2
    node_sid_base Integer 0 Node-SID base for isis-sr underlay variants. Combined with node id to generate ISIS-SR node-SID.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          isis_system_id_prefix String Pattern: [0-9a-f]{4}.[0-9a-f]{4} (4.4 hexadecimal).
          isis_maximum_paths Integer Number of path to configure in ECMP for ISIS.
          is_type String level-2 Valid Values:
- level-1-2
- level-1
- level-2
          node_sid_base Integer 0 Node-SID base for isis-sr underlay variants. Combined with node id to generate ISIS-SR node-SID.
      isis_system_id_prefix String Pattern: [0-9a-f]{4}.[0-9a-f]{4} (4.4 hexadecimal).
      isis_maximum_paths Integer Number of path to configure in ECMP for ISIS.
      is_type String level-2 Valid Values:
- level-1-2
- level-1
- level-2
      node_sid_base Integer 0 Node-SID base for isis-sr underlay variants. Combined with node id to generate ISIS-SR node-SID.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      isis_system_id_prefix String Pattern: [0-9a-f]{4}.[0-9a-f]{4} (4.4 hexadecimal).
      isis_maximum_paths Integer Number of path to configure in ECMP for ISIS.
      is_type String level-2 Valid Values:
- level-1-2
- level-1
- level-2
      node_sid_base Integer 0 Node-SID base for isis-sr underlay variants. Combined with node id to generate ISIS-SR node-SID.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # (4.4 hexadecimal).
    isis_system_id_prefix: <str>

    # Number of path to configure in ECMP for ISIS.
    isis_maximum_paths: <int>
    is_type: <str; "level-1-2" | "level-1" | "level-2"; default="level-2">

    # Node-SID base for isis-sr underlay variants. Combined with node id to generate ISIS-SR node-SID.
    node_sid_base: <int; default=0>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # (4.4 hexadecimal).
          isis_system_id_prefix: <str>

          # Number of path to configure in ECMP for ISIS.
          isis_maximum_paths: <int>
          is_type: <str; "level-1-2" | "level-1" | "level-2"; default="level-2">

          # Node-SID base for isis-sr underlay variants. Combined with node id to generate ISIS-SR node-SID.
          node_sid_base: <int; default=0>

      # (4.4 hexadecimal).
      isis_system_id_prefix: <str>

      # Number of path to configure in ECMP for ISIS.
      isis_maximum_paths: <int>
      is_type: <str; "level-1-2" | "level-1" | "level-2"; default="level-2">

      # Node-SID base for isis-sr underlay variants. Combined with node id to generate ISIS-SR node-SID.
      node_sid_base: <int; default=0>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # (4.4 hexadecimal).
      isis_system_id_prefix: <str>

      # Number of path to configure in ECMP for ISIS.
      isis_maximum_paths: <int>
      is_type: <str; "level-1-2" | "level-1" | "level-2"; default="level-2">

      # Node-SID base for isis-sr underlay variants. Combined with node id to generate ISIS-SR node-SID.
      node_sid_base: <int; default=0>

Node type MPLS configuration

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    mpls_overlay_role String Valid Values:
- client
- server
- none
Set the default mpls overlay role.
Acting role in overlay control plane.
    overlay_address_families List, items: String Set the default overlay address families.
      - <str> String Valid Values:
- evpn
- vpn-ipv4
- vpn-ipv6
    mpls_route_reflectors List, items: String List of inventory hostname acting as MPLS route-reflectors.
      - <str> String Inventory_hostname_of_mpls_route_reflectors.
    bgp_cluster_id String Set BGP cluster id.
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          mpls_overlay_role String Valid Values:
- client
- server
- none
Set the default mpls overlay role.
Acting role in overlay control plane.
          overlay_address_families List, items: String Set the default overlay address families.
            - <str> String Valid Values:
- evpn
- vpn-ipv4
- vpn-ipv6
          mpls_route_reflectors List, items: String List of inventory hostname acting as MPLS route-reflectors.
            - <str> String Inventory_hostname_of_mpls_route_reflectors.
          bgp_cluster_id String Set BGP cluster id.
      mpls_overlay_role String Valid Values:
- client
- server
- none
Set the default mpls overlay role.
Acting role in overlay control plane.
      overlay_address_families List, items: String Set the default overlay address families.
        - <str> String Valid Values:
- evpn
- vpn-ipv4
- vpn-ipv6
      mpls_route_reflectors List, items: String List of inventory hostname acting as MPLS route-reflectors.
        - <str> String Inventory_hostname_of_mpls_route_reflectors.
      bgp_cluster_id String Set BGP cluster id.
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      mpls_overlay_role String Valid Values:
- client
- server
- none
Set the default mpls overlay role.
Acting role in overlay control plane.
      overlay_address_families List, items: String Set the default overlay address families.
        - <str> String Valid Values:
- evpn
- vpn-ipv4
- vpn-ipv6
      mpls_route_reflectors List, items: String List of inventory hostname acting as MPLS route-reflectors.
        - <str> String Inventory_hostname_of_mpls_route_reflectors.
      bgp_cluster_id String Set BGP cluster id.
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:

    # Set the default mpls overlay role.
    # Acting role in overlay control plane.
    mpls_overlay_role: <str; "client" | "server" | "none">

    # Set the default overlay address families.
    overlay_address_families:
      - <str; "evpn" | "vpn-ipv4" | "vpn-ipv6">

    # List of inventory hostname acting as MPLS route-reflectors.
    mpls_route_reflectors:

        # Inventory_hostname_of_mpls_route_reflectors.
      - <str>

    # Set BGP cluster id.
    bgp_cluster_id: <str>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>

          # Set the default mpls overlay role.
          # Acting role in overlay control plane.
          mpls_overlay_role: <str; "client" | "server" | "none">

          # Set the default overlay address families.
          overlay_address_families:
            - <str; "evpn" | "vpn-ipv4" | "vpn-ipv6">

          # List of inventory hostname acting as MPLS route-reflectors.
          mpls_route_reflectors:

              # Inventory_hostname_of_mpls_route_reflectors.
            - <str>

          # Set BGP cluster id.
          bgp_cluster_id: <str>

      # Set the default mpls overlay role.
      # Acting role in overlay control plane.
      mpls_overlay_role: <str; "client" | "server" | "none">

      # Set the default overlay address families.
      overlay_address_families:
        - <str; "evpn" | "vpn-ipv4" | "vpn-ipv6">

      # List of inventory hostname acting as MPLS route-reflectors.
      mpls_route_reflectors:

          # Inventory_hostname_of_mpls_route_reflectors.
        - <str>

      # Set BGP cluster id.
      bgp_cluster_id: <str>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>

      # Set the default mpls overlay role.
      # Acting role in overlay control plane.
      mpls_overlay_role: <str; "client" | "server" | "none">

      # Set the default overlay address families.
      overlay_address_families:
        - <str; "evpn" | "vpn-ipv4" | "vpn-ipv6">

      # List of inventory hostname acting as MPLS route-reflectors.
      mpls_route_reflectors:

          # Inventory_hostname_of_mpls_route_reflectors.
        - <str>

      # Set BGP cluster id.
      bgp_cluster_id: <str>

Node type PTP configuration

Variable Type Required Default Value Restrictions Description
<node_type_keys.key> Dictionary
  defaults Dictionary Define variables for all nodes of this type.
    ptp Dictionary
      enabled Boolean False
      profile String aes67-r16-2016 Valid Values:
- aes67
- smpte2059-2
- aes67-r16-2016
      mlag Boolean False Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
      domain Integer 127 Min: 0
Max: 255
      priority1 Integer Min: 0
Max: 255
default -> automatically set based on node_type.
      priority2 Integer Min: 0
Max: 255
default -> (node_id modulus 256).
      auto_clock_identity Boolean True If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + “:00:” + (PTP priority 2 as HEX).
      clock_identity_prefix String PTP clock idetentiy 3-byte prefix. i.e. “01:02:03”.
By default the 3-byte prefix is “00:1C:73”.
This can be overridden if auto_clock_identity is set to true (which is the default).
      clock_identity String Set PTP clock identity manually. 6-byte value i.e. “01:02:03:04:05:06”.
      source_ip String By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
This can be set manually if required, for example, to a value of “10.1.2.3”.
      ttl Integer
      forward_unicast Boolean False Enable PTP unicast forwarding.
      dscp Dictionary
        general_messages Integer
        event_messages Integer
      monitor Dictionary
        enabled Boolean True
        threshold Dictionary
          offset_from_master Integer 250 Min: 0
Max: 1000000000
          mean_path_delay Integer 1500 Min: 0
Max: 1000000000
          drop Dictionary
            offset_from_master Integer Min: 0
Max: 1000000000
            mean_path_delay Integer Min: 0
Max: 1000000000
        missing_message Dictionary
          intervals Dictionary
            announce Integer Min: 2
Max: 255
            follow_up Integer Min: 2
Max: 255
            sync Integer Min: 2
Max: 255
          sequence_ids Dictionary
            enabled Boolean True
            announce Integer 3 Min: 2
Max: 255
            delay_resp Integer 3 Min: 2
Max: 255
            follow_up Integer 3 Min: 2
Max: 255
            sync Integer 3 Min: 2
Max: 255
  node_groups List, items: Dictionary Define variables related to all nodes part of this group.
    - group String Required, Unique The Node Group Name is used for MLAG domain unless set with ‘mlag_domain_id’.
The Node Group Name is also used for peer description on downstream switches’ uplinks.
      nodes List, items: Dictionary Define variables per node.
        - name String Required, Unique The Node Name is used as “hostname”.
          ptp Dictionary
            enabled Boolean False
            profile String aes67-r16-2016 Valid Values:
- aes67
- smpte2059-2
- aes67-r16-2016
            mlag Boolean False Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
            domain Integer 127 Min: 0
Max: 255
            priority1 Integer Min: 0
Max: 255
default -> automatically set based on node_type.
            priority2 Integer Min: 0
Max: 255
default -> (node_id modulus 256).
            auto_clock_identity Boolean True If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + “:00:” + (PTP priority 2 as HEX).
            clock_identity_prefix String PTP clock idetentiy 3-byte prefix. i.e. “01:02:03”.
By default the 3-byte prefix is “00:1C:73”.
This can be overridden if auto_clock_identity is set to true (which is the default).
            clock_identity String Set PTP clock identity manually. 6-byte value i.e. “01:02:03:04:05:06”.
            source_ip String By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
This can be set manually if required, for example, to a value of “10.1.2.3”.
            ttl Integer
            forward_unicast Boolean False Enable PTP unicast forwarding.
            dscp Dictionary
              general_messages Integer
              event_messages Integer
            monitor Dictionary
              enabled Boolean True
              threshold Dictionary
                offset_from_master Integer 250 Min: 0
Max: 1000000000
                mean_path_delay Integer 1500 Min: 0
Max: 1000000000
                drop Dictionary
                  offset_from_master Integer Min: 0
Max: 1000000000
                  mean_path_delay Integer Min: 0
Max: 1000000000
              missing_message Dictionary
                intervals Dictionary
                  announce Integer Min: 2
Max: 255
                  follow_up Integer Min: 2
Max: 255
                  sync Integer Min: 2
Max: 255
                sequence_ids Dictionary
                  enabled Boolean True
                  announce Integer 3 Min: 2
Max: 255
                  delay_resp Integer 3 Min: 2
Max: 255
                  follow_up Integer 3 Min: 2
Max: 255
                  sync Integer 3 Min: 2
Max: 255
      ptp Dictionary
        enabled Boolean False
        profile String aes67-r16-2016 Valid Values:
- aes67
- smpte2059-2
- aes67-r16-2016
        mlag Boolean False Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
        domain Integer 127 Min: 0
Max: 255
        priority1 Integer Min: 0
Max: 255
default -> automatically set based on node_type.
        priority2 Integer Min: 0
Max: 255
default -> (node_id modulus 256).
        auto_clock_identity Boolean True If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + “:00:” + (PTP priority 2 as HEX).
        clock_identity_prefix String PTP clock idetentiy 3-byte prefix. i.e. “01:02:03”.
By default the 3-byte prefix is “00:1C:73”.
This can be overridden if auto_clock_identity is set to true (which is the default).
        clock_identity String Set PTP clock identity manually. 6-byte value i.e. “01:02:03:04:05:06”.
        source_ip String By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
This can be set manually if required, for example, to a value of “10.1.2.3”.
        ttl Integer
        forward_unicast Boolean False Enable PTP unicast forwarding.
        dscp Dictionary
          general_messages Integer
          event_messages Integer
        monitor Dictionary
          enabled Boolean True
          threshold Dictionary
            offset_from_master Integer 250 Min: 0
Max: 1000000000
            mean_path_delay Integer 1500 Min: 0
Max: 1000000000
            drop Dictionary
              offset_from_master Integer Min: 0
Max: 1000000000
              mean_path_delay Integer Min: 0
Max: 1000000000
          missing_message Dictionary
            intervals Dictionary
              announce Integer Min: 2
Max: 255
              follow_up Integer Min: 2
Max: 255
              sync Integer Min: 2
Max: 255
            sequence_ids Dictionary
              enabled Boolean True
              announce Integer 3 Min: 2
Max: 255
              delay_resp Integer 3 Min: 2
Max: 255
              follow_up Integer 3 Min: 2
Max: 255
              sync Integer 3 Min: 2
Max: 255
  nodes List, items: Dictionary Define variables per node.
    - name String Required, Unique The Node Name is used as “hostname”.
      ptp Dictionary
        enabled Boolean False
        profile String aes67-r16-2016 Valid Values:
- aes67
- smpte2059-2
- aes67-r16-2016
        mlag Boolean False Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
        domain Integer 127 Min: 0
Max: 255
        priority1 Integer Min: 0
Max: 255
default -> automatically set based on node_type.
        priority2 Integer Min: 0
Max: 255
default -> (node_id modulus 256).
        auto_clock_identity Boolean True If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + “:00:” + (PTP priority 2 as HEX).
        clock_identity_prefix String PTP clock idetentiy 3-byte prefix. i.e. “01:02:03”.
By default the 3-byte prefix is “00:1C:73”.
This can be overridden if auto_clock_identity is set to true (which is the default).
        clock_identity String Set PTP clock identity manually. 6-byte value i.e. “01:02:03:04:05:06”.
        source_ip String By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
This can be set manually if required, for example, to a value of “10.1.2.3”.
        ttl Integer
        forward_unicast Boolean False Enable PTP unicast forwarding.
        dscp Dictionary
          general_messages Integer
          event_messages Integer
        monitor Dictionary
          enabled Boolean True
          threshold Dictionary
            offset_from_master Integer 250 Min: 0
Max: 1000000000
            mean_path_delay Integer 1500 Min: 0
Max: 1000000000
            drop Dictionary
              offset_from_master Integer Min: 0
Max: 1000000000
              mean_path_delay Integer Min: 0
Max: 1000000000
          missing_message Dictionary
            intervals Dictionary
              announce Integer Min: 2
Max: 255
              follow_up Integer Min: 2
Max: 255
              sync Integer Min: 2
Max: 255
            sequence_ids Dictionary
              enabled Boolean True
              announce Integer 3 Min: 2
Max: 255
              delay_resp Integer 3 Min: 2
Max: 255
              follow_up Integer 3 Min: 2
Max: 255
              sync Integer 3 Min: 2
Max: 255
<node_type_keys.key>:

  # Define variables for all nodes of this type.
  defaults:
    ptp:
      enabled: <bool; default=False>
      profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">

      # Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
      mlag: <bool; default=False>
      domain: <int; 0-255; default=127>

      # default -> automatically set based on node_type.
      priority1: <int; 0-255>

      # default -> (node_id modulus 256).
      priority2: <int; 0-255>

      # If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
      # default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + ":00:" + (PTP priority 2 as HEX).
      auto_clock_identity: <bool; default=True>

      # PTP clock idetentiy 3-byte prefix. i.e. "01:02:03".
      # By default the 3-byte prefix is "00:1C:73".
      # This can be overridden if auto_clock_identity is set to true (which is the default).
      clock_identity_prefix: <str>

      # Set PTP clock identity manually. 6-byte value i.e. "01:02:03:04:05:06".
      clock_identity: <str>

      # By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
      # This can be set manually if required, for example, to a value of "10.1.2.3".
      source_ip: <str>
      ttl: <int>

      # Enable PTP unicast forwarding.
      forward_unicast: <bool; default=False>
      dscp:
        general_messages: <int>
        event_messages: <int>
      monitor:
        enabled: <bool; default=True>
        threshold:
          offset_from_master: <int; 0-1000000000; default=250>
          mean_path_delay: <int; 0-1000000000; default=1500>
          drop:
            offset_from_master: <int; 0-1000000000>
            mean_path_delay: <int; 0-1000000000>
        missing_message:
          intervals:
            announce: <int; 2-255>
            follow_up: <int; 2-255>
            sync: <int; 2-255>
          sequence_ids:
            enabled: <bool; default=True>
            announce: <int; 2-255; default=3>
            delay_resp: <int; 2-255; default=3>
            follow_up: <int; 2-255; default=3>
            sync: <int; 2-255; default=3>

  # Define variables related to all nodes part of this group.
  node_groups:

      # The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
      # The Node Group Name is also used for peer description on downstream switches' uplinks.
    - group: <str; required; unique>

      # Define variables per node.
      nodes:

          # The Node Name is used as "hostname".
        - name: <str; required; unique>
          ptp:
            enabled: <bool; default=False>
            profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">

            # Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
            mlag: <bool; default=False>
            domain: <int; 0-255; default=127>

            # default -> automatically set based on node_type.
            priority1: <int; 0-255>

            # default -> (node_id modulus 256).
            priority2: <int; 0-255>

            # If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
            # default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + ":00:" + (PTP priority 2 as HEX).
            auto_clock_identity: <bool; default=True>

            # PTP clock idetentiy 3-byte prefix. i.e. "01:02:03".
            # By default the 3-byte prefix is "00:1C:73".
            # This can be overridden if auto_clock_identity is set to true (which is the default).
            clock_identity_prefix: <str>

            # Set PTP clock identity manually. 6-byte value i.e. "01:02:03:04:05:06".
            clock_identity: <str>

            # By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
            # This can be set manually if required, for example, to a value of "10.1.2.3".
            source_ip: <str>
            ttl: <int>

            # Enable PTP unicast forwarding.
            forward_unicast: <bool; default=False>
            dscp:
              general_messages: <int>
              event_messages: <int>
            monitor:
              enabled: <bool; default=True>
              threshold:
                offset_from_master: <int; 0-1000000000; default=250>
                mean_path_delay: <int; 0-1000000000; default=1500>
                drop:
                  offset_from_master: <int; 0-1000000000>
                  mean_path_delay: <int; 0-1000000000>
              missing_message:
                intervals:
                  announce: <int; 2-255>
                  follow_up: <int; 2-255>
                  sync: <int; 2-255>
                sequence_ids:
                  enabled: <bool; default=True>
                  announce: <int; 2-255; default=3>
                  delay_resp: <int; 2-255; default=3>
                  follow_up: <int; 2-255; default=3>
                  sync: <int; 2-255; default=3>
      ptp:
        enabled: <bool; default=False>
        profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">

        # Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
        mlag: <bool; default=False>
        domain: <int; 0-255; default=127>

        # default -> automatically set based on node_type.
        priority1: <int; 0-255>

        # default -> (node_id modulus 256).
        priority2: <int; 0-255>

        # If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
        # default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + ":00:" + (PTP priority 2 as HEX).
        auto_clock_identity: <bool; default=True>

        # PTP clock idetentiy 3-byte prefix. i.e. "01:02:03".
        # By default the 3-byte prefix is "00:1C:73".
        # This can be overridden if auto_clock_identity is set to true (which is the default).
        clock_identity_prefix: <str>

        # Set PTP clock identity manually. 6-byte value i.e. "01:02:03:04:05:06".
        clock_identity: <str>

        # By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
        # This can be set manually if required, for example, to a value of "10.1.2.3".
        source_ip: <str>
        ttl: <int>

        # Enable PTP unicast forwarding.
        forward_unicast: <bool; default=False>
        dscp:
          general_messages: <int>
          event_messages: <int>
        monitor:
          enabled: <bool; default=True>
          threshold:
            offset_from_master: <int; 0-1000000000; default=250>
            mean_path_delay: <int; 0-1000000000; default=1500>
            drop:
              offset_from_master: <int; 0-1000000000>
              mean_path_delay: <int; 0-1000000000>
          missing_message:
            intervals:
              announce: <int; 2-255>
              follow_up: <int; 2-255>
              sync: <int; 2-255>
            sequence_ids:
              enabled: <bool; default=True>
              announce: <int; 2-255; default=3>
              delay_resp: <int; 2-255; default=3>
              follow_up: <int; 2-255; default=3>
              sync: <int; 2-255; default=3>

  # Define variables per node.
  nodes:

      # The Node Name is used as "hostname".
    - name: <str; required; unique>
      ptp:
        enabled: <bool; default=False>
        profile: <str; "aes67" | "smpte2059-2" | "aes67-r16-2016"; default="aes67-r16-2016">

        # Configure PTP on the MLAG peer-link port-channel when PTP is enabled. By default PTP will not be configured on the MLAG peer-link port-channel.
        mlag: <bool; default=False>
        domain: <int; 0-255; default=127>

        # default -> automatically set based on node_type.
        priority1: <int; 0-255>

        # default -> (node_id modulus 256).
        priority2: <int; 0-255>

        # If you prefer to have PTP clock identity be the system MAC-address of the switch, which is the default EOS behaviour, simply disable the automatic PTP clock identity.
        # default -> (clock_identity_prefix = 00:1C:73 (default)) + (PTP priority 1 as HEX) + ":00:" + (PTP priority 2 as HEX).
        auto_clock_identity: <bool; default=True>

        # PTP clock idetentiy 3-byte prefix. i.e. "01:02:03".
        # By default the 3-byte prefix is "00:1C:73".
        # This can be overridden if auto_clock_identity is set to true (which is the default).
        clock_identity_prefix: <str>

        # Set PTP clock identity manually. 6-byte value i.e. "01:02:03:04:05:06".
        clock_identity: <str>

        # By default in EOS, PTP packets are sourced with an IP address from the routed port or from the relevant SVI, which is the recommended behaviour.
        # This can be set manually if required, for example, to a value of "10.1.2.3".
        source_ip: <str>
        ttl: <int>

        # Enable PTP unicast forwarding.
        forward_unicast: <bool; default=False>
        dscp:
          general_messages: <int>
          event_messages: <int>
        monitor:
          enabled: <bool; default=True>
          threshold:
            offset_from_master: <int; 0-1000000000; default=250>
            mean_path_delay: <int; 0-1000000000; default=1500>
            drop:
              offset_from_master: <int; 0-1000000000>
              mean_path_delay: <int; 0-1000000000>
          missing_message:
            intervals:
              announce: <int; 2-255>
              follow_up: <int; 2-255>
              sync: <int; 2-255>
            sequence_ids:
              enabled: <bool; default=True>
              announce: <int; 2-255; default=3>
              delay_resp: <int; 2-255; default=3>
              follow_up: <int; 2-255; default=3>
              sync: <int; 2-255; default=3>

Default interface settings

  • Set default uplink, downlink, and MLAG interfaces, which will be used if these interfaces are not defined on a device (either directly or through inheritance).
  • These are defined based on the combination of node_type (e.g., l3leaf or spine) and a regex for matching the platform.
  • A list of interfaces or interface ranges can be specified.
  • Each list item supports range syntax that can be expanded into a list of interfaces. Interface range examples:
    • Ethernet49-52/1: Expands to [ Ethernet49/1, Ethernet50/1, Ethernet51/1, Ethernet52/1 ]
    • Ethernet1/31-34/1: Expands to [ Ethernet1/31/1, Ethernet1/32/1, Ethernet1/33/1, Ethernet1/34/1 ]
    • Ethernet49-50,53-54: Expands to [ Ethernet49, Ethernet50, Ethernet53, Ethernet54 ]
    • Ethernet1-2/1-4: Expands to [ Ethernet1/1, Ethernet1/2, Ethernet1/3, Ethernet1/4, Ethernet2/1, Ethernet2/2, Ethernet2/3, Ethernet2/4 ]
  • uplink_interfaces and mlag_interfaces under default_interfaces are directly inherited by uplink_interfaces and mlag_interfaces.
  • downlink_interfaces are referenced by the child switch (e.g., the leaf in a leaf/spine network). The child switch leverages an upstream switch’s default_downlink_interfaces using the child switch ID. This is then used to build uplink_switch_interfaces for that child.
    • In the case of max_parallel_uplinks > 1 the default_downlink_interfaces are mapped with consecutive downlinks per child ID.
    • Example for max_parallel_uplinks: 2, downlink interfaces will be mapped as [ <downlink1 to leaf-id1>, <downlink2 to leaf-id1>, <downlink1 to leaf-id2>, <downlink2 to leaf-id2> ...]
  • Please note that no default interfaces are defined in AVD itself. You will need to create your own based on the example below.
Default interfaces example
default_interfaces:
  - types: [ spine, l3leaf ]
    platforms: [ "7050[SC]X3", vEOS.*, default ]
    uplink_interfaces: [ Ethernet49-54/1 ]
    mlag_interfaces: [ Ethernet55-56/1 ]
    downlink_interfaces: [ Ethernet1-32/1 ]
Variable Type Required Default Value Restrictions Description
default_interfaces List, items: Dictionary Default uplink, downlink, and MLAG interfaces, which will be used if these interfaces are not defined on a device (either directly or through inheritance).
  - types List, items: String Required List of node type keys.
      - <str> String
    platforms List, items: String Required List of platform families.
This is defined as a Python regular expression that matches the full platform type.
      - <str> String Arista platform family regular expression.
    uplink_interfaces List, items: String List of uplink interfaces or uplink interface ranges.
      - <str> String Interface range or interface.
    mlag_interfaces List, items: String List of MLAG interfaces or MLAG interface ranges.
      - <str> String Interface range or interface.
    downlink_interfaces List, items: String List of downlink interfaces or downlink interface ranges.
      - <str> String Interface range or interface.
# Default uplink, downlink, and MLAG interfaces, which will be used if these interfaces are not defined on a device (either directly or through inheritance).
default_interfaces:

    # List of node type keys.
  - types: # required
      - <str>

    # List of platform families.
    # This is defined as a Python regular expression that matches the full platform type.
    platforms: # required

        # Arista platform family regular expression.
      - <str>

    # List of uplink interfaces or uplink interface ranges.
    uplink_interfaces:

        # Interface range or interface.
      - <str>

    # List of MLAG interfaces or MLAG interface ranges.
    mlag_interfaces:

        # Interface range or interface.
      - <str>

    # List of downlink interfaces or downlink interface ranges.
    downlink_interfaces:

        # Interface range or interface.
      - <str>

L3 edge and DCI settings

The l3_edge data model can be used to configure extra L3 P2P links anywhere in the fabric. It can be between two switches that are already part of the fabric inventory, or it can be towards another device, where only one end of the link is on a switch in the fabric.

The data model supports using IP pools, Subnet per link, specifying the IP addresses manually or using ipv6 with rfc5549. One of these options must be set. For BGP peerings the AS number must be specified. If the AS number is different than the AS number configured for the node, the local-as will be replaced on this BGP peering (neighbor <ip> local-as <as> no-prepend replace-as).

Make sure to configure the variables in a group_vars file covering all devices mentioned in the data model.

Variable Type Required Default Value Restrictions Description
l3_edge Dictionary
  p2p_links_ip_pools List, items: Dictionary
    - name String Required, Unique P2P pool name.
      ipv4_pool String IPv4 address/Mask.
      prefix_size Integer 31 Min: 8
Max: 31
Subnet mask size.
  p2p_links_profiles List, items: Dictionary
    - name String Required, Unique P2P profile name. Any variable supported under p2p_links can be inherited from a profile.
      id Integer Unique id per subnet_summary. Used to calculate ip addresses.
Required with ip_pool. ID starting from 1.
      speed String Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      ip_pool String P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.
      subnet String IPv4 address/Mask. Subnet used on this P2P link.
      ip List, items: String Specific IP addresses used on this P2P link.
        - <str> String Node IPv4 address/Mask.
      ipv6_enable Boolean False Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).
      nodes List, items: String Nodes where this link should be configured.
        - <str> String The values can be < node_a >, < node_b >.
ex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].
      interfaces List, items: String Interfaces where this link should be configured and Required unless using port-channels.
        - <str> String The value can be like < node_a_interface >, < node_b_interface >.
ex. - [ Ethernet2, Ethernet2 ].
      as List, items: String AS numbers for BGP.
Required with bgp peering.
        - <str> String The values can be like [“node_a_as”, “node_b_as”].
      descriptions List, items: String Interface description.
        - <str> String
      include_in_underlay_protocol Boolean True Add this interface to underlay routing protocol.
      isis_hello_padding Boolean False
      isis_metric Integer
      isis_circuit_type String Valid Values:
- level-1
- level-2
- level-1-2
      isis_authentication_mode String Valid Values:
- md5
- text
      isis_authentication_key String Type-7 encrypted password.
      mpls_ip Boolean MPLS parameters. Default value is true if switch.mpls_lsr is true.
      mpls_ldp Boolean MPLS parameters. Default value is true for ldp underlay variants, otherwise false.
      mtu Integer MTU for this P2P link. Default value same as p2p_uplinks_mtu.
      bfd Boolean False Enable BFD (only considered for BGP).
      ptp Dictionary PTP parameters.
        enabled Boolean False Enable PTP.
      sflow Boolean Enable sFlow. Overrides fabric_sflow setting.
      qos_profile String QOS service profile.
      macsec_profile String MAC security profile.
      port_channel Dictionary Port-channel parameters.
        mode String active
        nodes_child_interfaces List, items: Dictionary
          - node String Required, Unique
            interfaces List, items: String List of node interfaces. Ex.- [ ‘node1 interface1’, ‘node1 interface2’ ].
              - <str> String
      raw_eos_cli String EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.
      structured_config Dictionary Custom structured config for interfaces
Note! The content of this dictionary is not validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
  p2p_links List, items: Dictionary
    - nodes List, items: String Required Nodes where this link should be configured.
        - <str> String The values can be < node_a >, < node_b >.
ex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].
      profile String P2P profile name. Profile defined under p2p_profiles.
      id Integer Unique id per subnet_summary. Used to calculate ip addresses.
Required with ip_pool. ID starting from 1.
      speed String Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      ip_pool String P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.
      subnet String IPv4 address/Mask. Subnet used on this P2P link.
      ip List, items: String Specific IP addresses used on this P2P link.
        - <str> String Node IPv4 address/Mask.
      ipv6_enable Boolean False Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).
      interfaces List, items: String Interfaces where this link should be configured and Required unless using port-channels.
        - <str> String The value can be like < node_a_interface >, < node_b_interface >.
ex. - [ Ethernet2, Ethernet2 ].
      as List, items: String AS numbers for BGP.
Required with bgp peering.
        - <str> String The values can be like [“node_a_as”, “node_b_as”].
      descriptions List, items: String Interface description.
        - <str> String
      include_in_underlay_protocol Boolean True Add this interface to underlay routing protocol.
      isis_hello_padding Boolean False
      isis_metric Integer
      isis_circuit_type String Valid Values:
- level-1
- level-2
- level-1-2
      isis_authentication_mode String Valid Values:
- md5
- text
      isis_authentication_key String Type-7 encrypted password.
      mpls_ip Boolean MPLS parameters. Default value is true if switch.mpls_lsr is true.
      mpls_ldp Boolean MPLS parameters. Default value is true for ldp underlay variants, otherwise false.
      mtu Integer MTU for this P2P link. Default value same as p2p_uplinks_mtu.
      bfd Boolean False Enable BFD (only considered for BGP).
      ptp Dictionary PTP parameters.
        enabled Boolean False Enable PTP.
      sflow Boolean Enable sFlow. Overrides fabric_sflow setting.
      qos_profile String QOS service profile.
      macsec_profile String MAC security profile.
      port_channel Dictionary Port-channel parameters.
        mode String active
        nodes_child_interfaces List, items: Dictionary
          - node String Required, Unique
            interfaces List, items: String List of node interfaces. Ex.- [ ‘node1 interface1’, ‘node1 interface2’ ].
              - <str> String
      raw_eos_cli String EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.
      structured_config Dictionary Custom structured config for interfaces
Note! The content of this dictionary is not validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
l3_edge:
  p2p_links_ip_pools:

      # P2P pool name.
    - name: <str; required; unique>

      # IPv4 address/Mask.
      ipv4_pool: <str>

      # Subnet mask size.
      prefix_size: <int; 8-31; default=31>
  p2p_links_profiles:

      # P2P profile name. Any variable supported under p2p_links can be inherited from a profile.
    - name: <str; required; unique>

      # Unique id per subnet_summary. Used to calculate ip addresses.
      # Required with ip_pool. ID starting from 1.
      id: <int>

      # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
      speed: <str>

      # P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.
      ip_pool: <str>

      # IPv4 address/Mask. Subnet used on this P2P link.
      subnet: <str>

      # Specific IP addresses used on this P2P link.
      ip:

          # Node IPv4 address/Mask.
        - <str>

      # Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).
      ipv6_enable: <bool; default=False>

      # Nodes where this link should be configured.
      nodes:

          # The values can be < node_a >, < node_b >.
          # ex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].
        - <str>

      # Interfaces where this link should be configured and Required unless using port-channels.
      interfaces:

          # The value can be like < node_a_interface >, < node_b_interface >.
          # ex. - [ Ethernet2, Ethernet2 ].
        - <str>

      # AS numbers for BGP.
      # Required with bgp peering.
      as:

          # The values can be like ["node_a_as", "node_b_as"].
        - <str>

      # Interface description.
      descriptions:
        - <str>

      # Add this interface to underlay routing protocol.
      include_in_underlay_protocol: <bool; default=True>
      isis_hello_padding: <bool; default=False>
      isis_metric: <int>
      isis_circuit_type: <str; "level-1" | "level-2" | "level-1-2">
      isis_authentication_mode: <str; "md5" | "text">

      # Type-7 encrypted password.
      isis_authentication_key: <str>

      # MPLS parameters. Default value is true if switch.mpls_lsr is true.
      mpls_ip: <bool>

      # MPLS parameters. Default value is true for ldp underlay variants, otherwise false.
      mpls_ldp: <bool>

      # MTU for this P2P link. Default value same as p2p_uplinks_mtu.
      mtu: <int>

      # Enable BFD (only considered for BGP).
      bfd: <bool; default=False>

      # PTP parameters.
      ptp:

        # Enable PTP.
        enabled: <bool; default=False>

      # Enable sFlow. Overrides `fabric_sflow` setting.
      sflow: <bool>

      # QOS service profile.
      qos_profile: <str>

      # MAC security profile.
      macsec_profile: <str>

      # Port-channel parameters.
      port_channel:
        mode: <str; default="active">
        nodes_child_interfaces:
          - node: <str; required; unique>

            # List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].
            interfaces:
              - <str>

      # EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.
      raw_eos_cli: <str>

      # Custom structured config for interfaces
      # Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
      structured_config: <dict>
  p2p_links:

      # Nodes where this link should be configured.
    - nodes: # required

          # The values can be < node_a >, < node_b >.
          # ex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].
        - <str>

      # P2P profile name. Profile defined under p2p_profiles.
      profile: <str>

      # Unique id per subnet_summary. Used to calculate ip addresses.
      # Required with ip_pool. ID starting from 1.
      id: <int>

      # Speed should be set in the format `<interface_speed>` or `forced <interface_speed>` or `auto <interface_speed>`.
      speed: <str>

      # P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.
      ip_pool: <str>

      # IPv4 address/Mask. Subnet used on this P2P link.
      subnet: <str>

      # Specific IP addresses used on this P2P link.
      ip:

          # Node IPv4 address/Mask.
        - <str>

      # Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).
      ipv6_enable: <bool; default=False>

      # Interfaces where this link should be configured and Required unless using port-channels.
      interfaces:

          # The value can be like < node_a_interface >, < node_b_interface >.
          # ex. - [ Ethernet2, Ethernet2 ].
        - <str>

      # AS numbers for BGP.
      # Required with bgp peering.
      as:

          # The values can be like ["node_a_as", "node_b_as"].
        - <str>

      # Interface description.
      descriptions:
        - <str>

      # Add this interface to underlay routing protocol.
      include_in_underlay_protocol: <bool; default=True>
      isis_hello_padding: <bool; default=False>
      isis_metric: <int>
      isis_circuit_type: <str; "level-1" | "level-2" | "level-1-2">
      isis_authentication_mode: <str; "md5" | "text">

      # Type-7 encrypted password.
      isis_authentication_key: <str>

      # MPLS parameters. Default value is true if switch.mpls_lsr is true.
      mpls_ip: <bool>

      # MPLS parameters. Default value is true for ldp underlay variants, otherwise false.
      mpls_ldp: <bool>

      # MTU for this P2P link. Default value same as p2p_uplinks_mtu.
      mtu: <int>

      # Enable BFD (only considered for BGP).
      bfd: <bool; default=False>

      # PTP parameters.
      ptp:

        # Enable PTP.
        enabled: <bool; default=False>

      # Enable sFlow. Overrides `fabric_sflow` setting.
      sflow: <bool>

      # QOS service profile.
      qos_profile: <str>

      # MAC security profile.
      macsec_profile: <str>

      # Port-channel parameters.
      port_channel:
        mode: <str; default="active">
        nodes_child_interfaces:
          - node: <str; required; unique>

            # List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].
            interfaces:
              - <str>

      # EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.
      raw_eos_cli: <str>

      # Custom structured config for interfaces
      # Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
      structured_config: <dict>

Core interfaces settings

The core_interfaces data model can be used to configure L3 P2P links anywhere in the fabric. It can be between two switches that are already part of the fabric inventory, or it can be towards another device, where only one end of the link is on a switch in the fabric.

The data model supports using IP pools, Subnet per link or specifying the IP addresses manually. For BGP peerings the AS number must be specified. If the AS number is different than the AS number configured for the node, the local-as will be replaced on this BGP peering (neighbor <ip> local-as <as> no-prepend replace-as).

Make sure to configure the variables in a group_vars file covering all devices mentioned in the data model.

Variable Type Required Default Value Restrictions Description
core_interfaces Dictionary
  p2p_links_ip_pools List, items: Dictionary
    - name String Required, Unique P2P pool name.
      ipv4_pool String IPv4 address/Mask.
      prefix_size Integer 31 Min: 8
Max: 31
Subnet mask size.
  p2p_links_profiles List, items: Dictionary
    - name String Required, Unique P2P profile name. Any variable supported under p2p_links can be inherited from a profile.
      id Integer Unique id per subnet_summary. Used to calculate ip addresses.
Required with ip_pool. ID starting from 1.
      speed String Speed should be set in the format <interface_speed> or forced <interface_speed> or auto <interface_speed>.
      ip_pool String P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.
      subnet String IPv4 address/Mask. Subnet used on this P2P link.
      ip List, items: String Specific IP addresses used on this P2P link.
        - <str> String Node IPv4 address/Mask.
      ipv6_enable Boolean False Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).
      nodes List, items: String Nodes where this link should be configured.
        - <str> String The values can be < node_a >, < node_b >.
ex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].
      interfaces List, items: String Interfaces where this link should be configured and Required unless using port-channels.
        - <str> String The value can be like < node_a_interface >, < node_b_interface >.
ex. - [ Ethernet2, Ethernet2 ].
      as List, items: String AS numbers for BGP.
Required with bgp peering.
        - <str> String The values can be like [“node_a_as”, “node_b_as”].
      descriptions List, items: String Interface description.
        - <str> String
      include_in_underlay_protocol Boolean True Add this interface to underlay routing protocol.
      isis_hello_padding Boolean False
      isis_metric Integer
      isis_circuit_type String Valid Values:
- level-1
- level-2
- level-1-2
      isis_authentication_mode String Valid Values:
- md5
- text
      isis_authentication_key String Type-7 encrypted password.
      mpls_ip Boolean MPLS parameters. Default value is true if switch.mpls_lsr is true.
      mpls_ldp Boolean MPLS parameters. Default value is true for ldp underlay variants, otherwise false.
      mtu Integer MTU for this P2P link. Default value same as p2p_uplinks_mtu.
      bfd Boolean False Enable BFD (only considered for BGP).
      ptp Dictionary PTP parameters.
        enabled Boolean False Enable PTP.
      sflow Boolean Enable sFlow. Overrides fabric_sflow setting.
      qos_profile String QOS service profile.
      macsec_profile String MAC security profile.
      port_channel Dictionary Port-channel parameters.
        mode String active
        nodes_child_interfaces List, items: Dictionary
          - node String Required, Unique
            interfaces List, items: String List of node interfaces. Ex.