Skip to content

3.x.x

Release Notes For Ansible AVD 3.x.x

Documentation for AVD version 3.x.x -> -> Placeholder update before release <-

eos_l3ls_evpn deprecation warning

Starting arista.avd version 2.0, eos_l3ls_evpn has been renamed to eos_designs and a fallback mechanism has been deployed to support both name. Please update your playbooks accordingly as eos_l3ls_evpn will be removed in a future release.

Release 3.0.0-RC2

Provides major enhancements and data model has been updated!

Data model Updated

Data model updated for roles:

- eos_designs.
- eos_cli_config_gen.

Upgrade functionality has been added to the eos_designs role. See README for details.

Pre-release

temp link update to ‘latest’ before official release

Upgrade functionality has been added to the eos_cli_config_gen role. See README for details.

Pre-release

temp link update to ‘latest’ before official release

New Requirements

cvprac must be upgraded to version 1.0.7 or higher.

$ pip install --upgrade cvprac>=1.0.7
Data model modifications

This section provides an overview of only the data model that have changed from the previous release that would require user modifications. See the release notes and role documentation for all new additions.

Changes to eos_designs role

Use migration role arista.avd.upgrade_tools to assist with the transition!

  • spine variables:

    • New spine.defaults.uplink_switches variable based on keys in super_spine.nodes
    • New spine.defaults.isis_maximum_paths based on max_spines * max_l3leaf_to_spine_links
    • Change from spine.{{ var }} to spine.defaults.{{ var }}
    • Change from overlay_loopback_network_summary to spine.defaults.loopback_ipv4_pool
    • Change from spine.uplinks_to_super_spine_interfaces to spine.defaults.uplink_interfaces
    • Change from max_super_spines to spine.defaults.max_uplink_switches
    • Change from max_spine_to_super_spine_links to spine.defaults.max_parallel_uplinks
    • Change from super_spine_underlay_p2p_network_summary to spine.defaults.uplink_ipv4_pool
    • Change from p2p_uplinks_ptp to spine.defaults.uplink_ptp
    • Change from spine_bgp_defaults to spine.defaults.bgp_defaults
    • Change from old default value of spine_bgp_defaults to spine.defaults.bgp_defaults
    • Change from isis_site_id.0000 to spine.defaults.isis_system_id_prefix
    • Change from mlag_ips.mlag_peer to spine.defaults.mlag_peer_ipv4_pool
    • Change from mlag_ips.mlag_peer_l3_ipv4_pool to spine.defaults.mlag_peer_l3_ipv4_pool
    • Change from spine.nodes.{{ node }}.super_spine_interfaces to spine.nodes.{{ node }}.uplink_switch_interfaces
  • l3leaf variables:

    • New loopback_network_offset variable based on max_spines or length of spine.nodes
    • New l3leaf.defaults.isis_maximum_paths based on max_spines * max_l3leaf_to_spine_links
    • Change from overlay_loopback_network_summary to l3leaf.defaults.loopback_ipv4_pool
    • Change from vtep_loopback_network_summary to l3leaf.defaults.vtep_loopback_ipv4_pool
    • Change from l3leaf.defaults.uplink_to_spine_interfaces to l3leaf.defaults.uplink_interfaces
    • Change from l3leaf.defaults.spines to l3leaf.defaults.uplink_switches
    • Change from max_spines to l3leaf.defaults.max_uplink_switches
    • Change from max_l3leaf_to_spine_links to l3leaf.defaults.max_parallel_uplinks
    • Change from underlay_p2p_network_summary to l3leaf.defaults.uplink_ipv4_pool
    • Change from p2p_uplinks_ptp.* to l3leaf.defaults.uplink_ptp.*
    • Change from l3leaf.defaults.p2p_link_interface_speed to l3leaf.defaults.uplink_interface_speed
    • Change from mlag_ips.mlag_peer to spine.defaults.mlag_peer_ipv4_pool
    • Change from mlag_ips.mlag_peer_l3_ipv4_pool to spine.defaults.mlag_peer_l3_ipv4_pool
    • Change from leaf_bgp_defaults to l3leaf.defaults.bgp_defaults
    • Change from old default value of leaf_bgp_defaults to l3leaf.defaults.bgp_defaults
    • Change from isis_site_id.0001 to l3leaf.defaults.isis_system_id_prefix
    • Change from l3leaf.node_groups.{{ node_group }}.uplink_to_spine_interfaces to l3leaf.node_groups.{{ node_group }}.uplink_interfaces
    • Change from l3leaf.node_groups.{{ node_group }}.spines to l3leaf.node_groups.{{ node_group }}.uplink_switches
    • Change from l3leaf.node_groups.{{ node_group }}.p2p_link_interface_speed to l3leaf.node_groups.{{ node_group }}.uplink_interface_speed
    • Change from l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.spine_interfaces to l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_switch_interfaces
    • Change from l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_to_spine_interfaces to l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_interfaces
    • Change from l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.spines to l3leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_switches
  • l2leaf variables:

    • Change from l2leaf.defaults.parent_l3leafs to l2leaf.defaults.uplink_switches
    • Change from l2leaf_inband_management_subnet to l2leaf.defaults.inband_management_subnet
    • Change from l2leaf_inband_management_vlan to l2leaf.defaults.inband_management_vlan
    • Change from l2leaf.defaults.p2p_link_interface_speed to l2leaf.defaults.uplink_interface_speed
    • Change from mlag_ips.mlag_peer to spine.defaults.mlag_peer_ipv4_pool
    • Change from mlag_ips.mlag_peer_l3_ipv4_pool to spine.defaults.mlag_peer_l3_ipv4_pool
    • Change from l2leaf.node_groups.{{ node_group }}.parent_l3leafs to l2leaf.node_groups.{{ node_group }}.uplink_switches
    • Change from l2leaf.node_groups.{{ node_group }}.p2p_link_interface_speed to l2leaf.node_groups.{{ node_group }}.uplink_interface_speed
    • Change from l2leaf.node_groups.{{ node_group }}.nodes.{{ node }}.l3leaf_interfaces to l2leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_switch_interfaces
    • Change from l2leaf.node_groups.{{ node_group }}.nodes.{{ node }}.parent_l3leafs to l2leaf.node_groups.{{ node_group }}.nodes.{{ node }}.uplink_switches
  • super-spine variables:

    • Change from super_spine.{{ var }} to `super_spine.defaults.{{ var }}
    • Change from super_spine_loopback_network_summary to `super_spine.defaults.loopback_ipv4_pool
    • Change from super_spine_bgp_defaults to `super_spine.defaults.bgp_defaults
    • Change from old default value of super_spine_bgp_defaults to `super_spine.defaults.bgp_defaults
    • Change in ip addressing math for P2P uplinks from spinetosuper-spine links.
      • The old model can be retained by updatingtothe v2.x.x addressing scheme:
        # Node type definitions
        node_type_keys:
          spine:
            type: spine
            default_evpn_role: server
            ip_addressing:
              p2p_uplinks_ip: 'designs/l3ls-evpn/ip-addressing/avd-v2-spine-p2p-uplinks-ip.j2'
              p2p_uplinks_peer_ip: 'designs/l3ls-evpn/ip-addressing/avd-v2-spine-p2p-uplinks-peer-ip.j2'
          l3leaf:
            type: l3leaf
            connected_endpoints: true
            default_evpn_role: client
            mlag_support: true
            network_services:
              l2: true
              l3: true
            vtep: true
          l2leaf:
            type: l2leaf
            connected_endpoints: true
            mlag_support: true
            network_services:
              l2: true
            underlay_router: false
            uplink_type: port-channel
          super_spine:
            type: super-spine
          overlay_controller:
            type: overlay-controller
        
  • overlay-controller variables:

    • Change from overlay_controller.{{ var }} to overlay_controller.defaults.{{ var }}
    • Change from overlay_controller_loopback_network_summary to overlay_controller.defaults.loopback_ipv4_pool
    • Change from overlay_controller_p2p_bfd to overlay_controller.defaults.uplink_bfd
    • Change from overlay_controller.defaults.uplink_to_remote_switches to overlay_controller.defaults.uplink_interfaces
    • Change from overlay_controller.defaults.remote_switches to overlay_controller.defaults.uplink_switches
    • Change from max_overlay_controller_to_switch_links (default=2) to overlay_controller.defaults.max_uplink_switches
      • (old algorithm expected max_overlay_controller_to_switch_links to be the sum of links to all uplink switches)
    • Change from overlay_controller_p2p_network_summary to overlay_controller.defaults.uplink_ipv4_pool
    • Change from overlay_controller_bgp_defaults to overlay_controller.defaults.bgp_defaults
    • Change from old default value of overlay_controller_bgp_defaults to overlay_controller.defaults.bgp_defaults
    • Change from overlay_controller.nodes.{{ node }}.remote_switches_interfaces to overlay_controller.nodes.{{ node }}.uplink_switch_interfaces
    • Change from overlay_controller.nodes.{{ node }}.uplink_to_remote_switches to overlay_controller.defaults.uplink_interfaces
    • Change from overlay_controller.nodes.{{ node }}.remote_switches to overlay_controller.defaults.uplink_switches
  • network services variable:

    • Deprecate evpn_rd_type.admin_subfield == "spine_asn" -> use value of spine.bgp_as
    • Deprecate evpn_rt_type.admin_subfield == "spine_asn" -> use value of spine.bgp_as
    • Change evpn_rd_type.admin_subfield == "leaf_asn" to bgp_as
    • Change evpn_rt_type.admin_subfield == "leaf_asn" to bgp_as
    • Change from tenants.{{ tenant }}.vrfs.{{ vrf }}.svis.{{ svi }}.ip_address_virtual_secondary to tenants.{{ tenant }}.vrfs.{{ vrf }}.svis.{{ svi }}.ip_address_virtual_secondaries
    • Change from svi_profiles.{{ profile }}.ip_address_virtual_secondary to svi_profiles.{{ profile }}.ip_address_virtual_secondaries
    • Change from tenants.{{ tenant }}.vrfs.{{ vrf }}.svis.{{ svi }}.ip_virtual_router_address to tenants.{{ tenant }}.vrfs.{{ vrf }}.svis.{{ svi }}.ip_virtual_router_addresses
    • Change from svi_profiles.{{ profile }}.ip_virtual_router_address to svi_profiles.{{ profile }}.ip_virtual_router_addresses
  • ntp_servers:

    • Deprecated from eos_designs. Replaced by ntp in eos_cli_config_gen
Changes to eos_cli_config_gen role
  • vxlan_tunnel_interface variables:
# Old Data model

vxlan_tunnel_interface:
  Vxlan1:
    description: < description >
    source_interface: < source_interface_name >
    virtual_router:
      encapsulation_mac_address: < mlag-system-id | ethernet_address (H.H.H) >
    vxlan_udp_port: < udp_port >
    vxlan_vni_mappings:
      vlans:
        < vlan_id_1 >:
          vni: < vni_id_1 >
        < vlan_id_2 >:
          vni: < vni_id_2 >
      vrfs:
        < vrf_name >:
          vni: < vni_id_3 >
        < vrf_name >:
          vni: < vni_id_4 >

# New Data model

vxlan_interface:
  Vxlan1:
    description: < description >
    vxlan:
      source_interface: < source_interface_name >
      udp_port: < udp_port >
      virtual_router_encapsulation_mac_address: < mlag-system-id | ethernet_address (H.H.H) >
      vlans:
        < vlan_id_1 >:
          vni: < vni_id_1 >
          flood_vteps:
            - < remote_vtep_1_ip_address >
            - < remote_vtep_2_ip_address >
        < vlan_id_2 >:
          vni: < vni_id_2 >
          flood_vteps:
            - < remote_vtep_1_ip_address >
            - < remote_vtep_2_ip_address >
      vrfs:
        < vrf_name_1 >:
          vni: < vni_id_3 >
        < vrf_name_2 >:
          vni: < vni_id_4 >
      flood_vteps:
        - < remote_vtep_1_ip_address >
        - < remote_vtep_2_ip_address >
      flood_vtep_learned_data_plane: < true | false >
    # EOS CLI rendered directly on the Vxlan interface in the final EOS configuration
    eos_cli: |
      < multiline eos cli >
  • daemon_terminattr variables:
# Old data model
daemon_terminattr:
  ingestgrpcurl:
    ips:
      - < IPv4_address >
      - < IPv4_address >
      - < IPv4_address >
    port: < port_id >
  ingestauth_key: < ingest_key >
  ingestvrf: < vrf_name >
  smashexcludes: "< list as string >"
  ingestexclude: "< list as string >"
  disable_aaa: < false | true >

# New data model
daemon_terminattr:
  cvaddrs:
    - < ip/fqdn >:<port>
    - < ip/fqdn >:<port>
    - < ip/fqdn >:<port>
  clusters:
    < cluster_name >:
      cvaddrs:
        - < ip/fqdn >:<port>
        - < ip/fqdn >:<port>
        - < ip/fqdn >:<port>
      cvauth:
        method: < "token", "token-secure", "key" >
        key: < key >
        token_file: < path | e.g. "/tmp/token" >
      cvobscurekeyfile: < true | false >
      cvproxy: < URL >
      cvsourceip: < IP Address >
      cvvrf: < vrf >
  cvauth:
    method: < "token", "token-secure", "key" >
    key: < key >
    token_file: < path | e.g. "/tmp/token" >
  cvcompression: < gzip | none >
  cvobscurekeyfile: < true | false >
  cvproxy: < URL >
  cvsourceip: < IP Address >
  cvvrf: < vrf >
  cvgnmi: < true | false >
  disable_aaa: < true | false >
  grpcaddr: < string | e.g. "MGMT/0.0.0.0:6042" >
  grpcreadonly: < true | false >
  ingestexclude: < string | e.g. "/Sysdb/cell/1/agent,/Sysdb/cell/2/agent" >
  smashexcludes: < string | e.g. "ale,flexCounter,hardware,kni,pulse,strata" >
  taillogs: < path | e.g. "/var/log/messages" >
  ecodhcpaddr: < IPV4_address:port >
  ipfix: < true | false >
  ipfixaddr: < IPV4_address:port >
  sflow: < true | false >
  sflowaddr: < IPV4_address:port >
  • logging variables:
#Old data model
logging:
  vrfs:
    < vrf_name >:
      source_interface: < source_interface_name >
      hosts:
        - < syslog_server_1>
        - < syslog_server_2>

# New data model
logging:
  vrfs:
    < vrf_name >:
      source_interface: < source_interface_name >
      hosts:
        < syslog_server_1 >:
          protocol: < tcp | udp (default udp) >
          ports:
            < custom_port_1 >
            < custom_port_2 >
        < syslog_server_2 >:
          ports:
            < custom_port_1 >
  • snmp_server.hosts variables:
# Old data model
snmp_server:
  hosts:
  - host: < host IP address or name >
    vrf: < vrf_name >
    users:
      - username: < username >
        authentication_level: < auth | noauth | priv >
        version: < 1 | 2c | 3 >

# New data model
snmp_server:
  hosts:
    - host: < host IP address or name >
      vrf: < vrf_name >
      version: < 1 | 2c | 3 >
      community: < community_name >
      users:
        - username: < username >
          authentication_level: < auth | noauth | priv >
  • ntp_server and ntp variables:
# Old data models
ntp_server:
  local_interface:
    vrf: < vrf_name >
    interface: < source_interface >
  nodes:
    - < ntp_server_1 >
    - < ntp_server_2 >

ntp:
  authenticate: <true | false >
  authentication_keys:
    <key_identifier | 1-65534>:
      hash_algorithm: < md5 | sha1 >
      key: "< type7_obfuscated_key >"
  trusted_keys: "< list of trusted-keys as string ex. 10-12,15 >"

# New data model
ntp:
  local_interface:
    name: < source_interface >
    vrf: < vrf_name >
  servers:
  - name: < IP | hostname >
    burst: < true | false >
    iburst:  < true | false >
    key: < 1 - 65535 >
    local_interface: < source_interface >
    maxpoll: < 3 - 17 (logorithmic)>
    minpoll: < 3 - 17 (logorithmic)>
    preferred: < true | false >
    version: < 1 - 4 >
    vrf: < vrf_name >
  authenticate: <true | false >
  authentication_keys:
  - id: <key_identifier | 1-65534>:
    hash_algorithm: < md5 | sha1 >
    key: "< type7_obfuscated_key >"
  trusted_keys: "< list of trusted-keys as string ex. 10-12,15 >"
New Features
New features in eos_designs
  • Refactor topology data models for AVD v3.0 (#1000)
  • RFC5549 to avoid eos_designs variable from being parsed in eos_cli_config_gen (#1019)
  • Ensure required directories are present in all roles (#1048)
  • Ensure required directories are present (#1044)
  • Implement tag for documentation (#1053)
New features in eos_cli_config_gen
  • Add single-connection to tacacs (#1095)
  • Add support for transceiver media override on ethernet_interfaces (#1085)
  • Implement OSPF inter area filtering (#1076)
  • Add support for Private Vlans (#1071)
  • Add OSPF timers to router ospf (#1070)
  • Add support for mlag heartbeat-interval and system control-plane section (#1069)
  • Local sshkey field added to local-users.j2 to enable sshkey definitio‚Ķ (#1065)
  • Implement tag for documentation (#1053)
  • Added modifications to support snmp v1 and snmp v2c (#1050)
  • Ensure required directories are present in all roles (#1048)
  • Ensure required directories are present (#1044)
  • Add support for no logging event link-status (#1037)
  • Add platform setting for queue_monitor_length_notify_support (#1016)
  • Add support for match_lists and using them in logging policy (#985)
  • Add support for setting vxlan flood vtep (#980)
  • Add support for setting multiple secondary virtual IP addresses for vlans (#1180)
  • Add support for Management SSH conection limit and per-host connections (#1200)
  • Add support for ip ssh client source-interface (#1212)
Fixed issues
Fixed issues in eos_designs
  • Ensure required directories are present in all roles (#1048)
  • Ensure required directories are present (#1044)
Fixed issues in eos_cli_config_gen
  • Ensure required directories are present in all roles (#1048)
  • Ensure required directories are present (#1044)
Documentation
  • Minor documentation fixes (#1038)

Info

For detailed information please see the release tags: -> Placeholder update before release <-


Last update: October 1, 2021
Back to top