Porting Guide for Ansible AVD 6.x.x¶
Major releases of AVD can contain breaking changes. This porting guide addresses how to update your inventory and playbooks to be compatible with new default behaviors and changed data models when upgrading from AVD 5.x versions.
Note
To upgrade from AVD version 4.x, first upgrade to AVD 5.7 using the Porting Guide for Ansible AVD 5.x.x and then upgrade to 6.x with this guide.
Users of eos_designs
need to consider the changes in eos_cli_config_gen
when using structured configuration.
Common changes¶
// TODO: potentially remove if empty
Requirements changes¶
ansible.utils
collection was removed from the arista.avd
Ansible collection¶
Until 5.x, ansible.utils
collection was a requirement of arista.avd
Ansible collection.
This has been removed in AVD 6.0.0. If you were using the ansible.utils
collection functionalities in your playbooks or templates, you now need to add the installation
of the collection to your environment. You will need to adjust your scripts to install your environment to add this collection.
As an example, you can install it in your environment using:
Removal of Ansible components¶
The following Ansible components have been removed from the arista.avd
Ansible collection in version 6.0.0.
Component type | Name | Replacement |
---|---|---|
Filter | arista.avd.xxx |
|
Action plugin/Module | arista.avd.configlet_build_config |
The internal arista.avd.configlet_build_config module is no longer used by AVD. The plugin is released as open source, so it can be copied and reused according to the license and copyright. |
Action plugin/Module | arista.avd.inventory_to_container |
The internal arista.avd.inventory_to_container module is no longer used by AVD. The plugin is released as open source, so it can be copied and reused according to the license and copyright. |
Role | arista.avd.dhcp_provisioner |
The role is not compatible with modern DHCP servers and should not be used for production. The arista.avd.dhcp_provisioner role is released as open source, so it can be copied and reused according to the license and copyright. |
Role | arista.avd.eos_config_deploy_cvp |
Migrate to arista.avd.cv_deploy . See the detailed porting guide for instructions. |
Role | arista.avd.cvp_configlet_upload |
Migrate to arista.avd.cv_deploy . See the detailed porting guide for instructions. |
Changes to role arista.avd.eos_designs¶
Removal of deprecated eos_designs data models¶
The following data model keys have been removed from eos_designs
in AVD 6.0.0.
Removed key | New key |
---|---|
aaa_settings.accounting.exec.console.group |
aaa_settings.accounting.exec.console.methods[].group |
aaa_settings.accounting.exec.console.logging |
aaa_settings.accounting.exec.console.methods[].method |
aaa_settings.accounting.exec.default.group |
aaa_settings.accounting.exec.default.methods[].group |
aaa_settings.accounting.exec.default.logging |
aaa_settings.accounting.exec.default.methods[].method |
aaa_settings.accounting.system.default.group |
aaa_settings.accounting.system.default.methods[].group |
aaa_settings.accounting.dot1x.default.group |
aaa_settings.accounting.dot1x.default.methods[].group |
aaa_settings.accounting.commands[].console[].group |
aaa_settings.accounting.commands[].console[].methods[].group |
aaa_settings.accounting.commands[].console[].logging |
aaa_settings.accounting.commands[].console[].methods[].method |
aaa_settings.accounting.commands[].default[].group |
aaa_settings.accounting.commands[].default[].methods[].group |
aaa_settings.accounting.commands[].default[].logging |
aaa_settings.accounting.commands[].default[].methods[].method |
avd_6_behaviors |
- |
core_interfaces.p2p_links[].structured_config |
core_interfaces.p2p_links.ethernet_structured_config or core_interfaces.p2p_links.port_channel_structured_config |
core_interfaces.p2p_links[].underlay_multicast |
core_interfaces.p2p_links.multicast_pim_sm |
core_interfaces.p2p_links_profiles[].structured_config |
core_interfaces.p2p_links_profiles.ethernet_structured_config or core_interfaces.p2p_links_profiles.port_channel_structured_config |
core_interfaces.p2p_links_profiles[].underlay_multicast |
core_interfaces.p2p_links_profiles.multicast_pim_sm |
cvp_ingestauth_key |
- |
cvp_instance_ips |
cv_settings |
cvp_token_file |
cv_settings |
design |
- |
flow_tracking_settings.trackers.exporters.collector |
flow_tracking_settings.trackers.exporters.collectors |
l3_edge.p2p_links[].structured_config |
l3_edge.p2p_links.ethernet_structured_config or l3_edge.p2p_links.port_channel_structured_config |
l3_edge.p2p_links[].underlay_multicast |
l3_edge.p2p_links.multicast_pim_sm |
l3_edge.p2p_links_profiles[].structured_config |
l3_edge.p2p_links_profiles.ethernet_structured_config or l3_edge.p2p_links_profiles.port_channel_structured_config |
l3_edge.p2p_links_profiles[].underlay_multicast |
l3_edge.p2p_links_profiles.multicast_pim_sm |
name_servers |
dns_settings.servers |
<network_services_key>[].vrfs[].ipv6_static_routes[].destination_address_prefix |
<network_services_key>[].vrfs[].ipv6_static_routes[].prefix |
<network_services_key>[].vrfs[].ipv6_static_routes[].gateway |
<network_services_key>[].vrfs[].ipv6_static_routes[].next_hop |
<network_services_key>[].vrfs[].static_routes[].destination_address_prefix |
<network_services_key>[].vrfs[].static_routes[].prefix |
<network_services_key>[].vrfs[].static_routes[].gateway |
<network_services_key>[].vrfs[].static_routes[].next_hop |
node_type_keys[].interface_descriptions.overlay_loopback_interface |
node_type_keys[].interface_descriptions.router_id_loopback_interface |
<node_type_key>.defaults.uplink_structured_config |
<node_type_key>.defaults.uplink_port_channel_structured_config or <node_type_key>.defaults.uplink_ethernet_structured_config or <node_type_key>.defaults.uplink_switch_ethernet_structured_config or <node_type_key>.defaults.uplink_switch_port_channel_structured_config |
<node_type_key>.node_groups[].nodes[].uplink_structured_config |
<node_type_key>.node_groups[].nodes[].uplink_port_channel_structured_config or <node_type_key>.node_groups[].nodes[].uplink_ethernet_structured_config or <node_type_key>.node_groups[].nodes[].uplink_switch_ethernet_structured_config or <node_type_key>.node_groups[].nodes[].uplink_switch_port_channel_structured_config |
<node_type_key>.node_groups[].uplink_structured_config |
<node_type_key>.node_groups[].uplink_port_channel_structured_config or <node_type_key>.node_groups[].uplink_ethernet_structured_config or <node_type_key>.node_groups[].uplink_switch_ethernet_structured_config or <node_type_key>.node_groups[].uplink_switch_port_channel_structured_config |
<node_type_key>.nodes[].uplink_structured_config |
<node_type_key>.nodes[].uplink_port_channel_structured_config or <node_type_key>.nodes[].uplink_ethernet_structured_config or <node_type_key>.nodes[].uplink_switch_ethernet_structured_config or <node_type_key>.nodes[].uplink_switch_port_channel_structured_config |
overlay_loopback_description |
router_id_loopback_description |
snmp_settings.enable_inband_mgmt_vrf |
snmp_settings.vrfs[name="use_inband_mgmt_vrf"].enabled |
snmp_settings.enable_mgmt_interface_vrf |
snmp_settings.vrfs[name="use_mgmt_interface_vrf"].enabled |
snmp_settings.hosts[].use_inband_mgmt_vrf |
snmp_settings.hosts[vrf=use_inband_mgmt_vrf] |
snmp_settings.hosts[].use_mgmt_interface_vrf |
snmp_settings.hosts[vrf=use_mgmt_interface_vrf] |
snmp_settings.ipv4_acls |
snmp_settings.vrfs[].ipv4_acl |
snmp_settings.ipv6_acls |
snmp_settings.vrfs[].ipv6_acl |
source_interfaces.domain_lookup |
dns_settings |
source_interfaces.radius |
aaa_settings.radius.vrfs[].source_interface or aaa_settings.radius.servers[].vrf: use_mgmt_interface_vrf or aaa_settings.radius.servers[].vrf: use_inband_mgmt_vrf |
source_interfaces.snmp |
snmp_settings.vrfs[].source_interface or snmp_settings.hosts[].vrf: use_mgmt_interface_vrf or snmp_settings.hosts[].vrf: use_inband_mgmt_vrf or avd_6_behaviors.snmp_settings_vrfs |
source_interfaces.tacacs |
aaa_settings.tacacs.vrfs[].source_interface or aaa_settings.tacacs.servers[].vrf: use_mgmt_interface_vrf or aaa_settings.tacacs.servers[].vrf: use_inband_mgmt_vrf |
terminattr_disable_aaa |
cv_settings.terminattr.disable_aaa |
terminattr_ingestexclude |
cv_settings.terminattr.ingestexclude |
terminattr_ingestgrpcurl_port |
cv_settings |
terminattr_smashexcludes |
cv_settings.terminattr.smashexcludes |
underlay_mutlticast |
underlay_mutlticast_pim_sm or <node_type_key>.defaults.underlay_multicast.pim_sm.enabled or <node_type_key>.node_groups[].underlay_multicast.pim_sm.enabled or <node_type_key>.node_groups[].nodes[].underlay_multicast.pim_sm.enabled or <node_type_key>.nodes[].underlay_multicast.pim_sm.enabled |
underlay_ospf_authentication.message_digest_keys[].key |
underlay_ospf_authentication.message_digest_keys[].cleartext_key |
Change in default value of default_overlay_routing_protocol
for wan_router
and wan_rr
node type¶
In AVD 5.x, the default value of default_overlay_routing_protocol
was ibgp
.
Starting with AVD 6.0.0, the default value of default_overlay_routing_protocol
has been changed to none
.
To retain the previous behavior, the following change is required:
node_type_keys:
- key: "wan_router"
type: "wan_router"
default_evpn_role: "client"
default_wan_role: "client"
default_underlay_routing_protocol: "none"
+ default_overlay_routing_protocol: "ibgp"
default_flow_tracker_type: "hardware"
vtep: true
network_services:
l3: true
- key: "wan_rr"
type: "wan_rr"
default_evpn_role: "server"
default_wan_role: "server"
default_underlay_routing_protocol: "none"
+ default_overlay_routing_protocol: "ibgp"
default_flow_tracker_type: "hardware"
vtep: true
network_services:
l3: true
Change in default value of default_evpn_role
for wan_router
and wan_rr
node type¶
In AVD 5.x, the default value of default_evpn_role
was client
for the wan_router node type and server
for the wan_rr
node type.
Starting with AVD 6.0.0, the default value has been changed to none
for both wan_router
and wan_rr
.
To retain the previous behavior, the following change is required:
node_type_keys:
- key: "wan_router"
type: "wan_router"
+ default_evpn_role: "client"
default_wan_role: "client"
default_underlay_routing_protocol: "none"
default_overlay_routing_protocol: "ibgp"
default_flow_tracker_type: "hardware"
vtep: true
network_services:
l3: true
- key: "wan_rr"
type: "wan_rr"
+ default_evpn_role: "server"
default_wan_role: "server"
default_underlay_routing_protocol: "none"
default_overlay_routing_protocol: "ibgp"
default_flow_tracker_type: "hardware"
vtep: true
network_services:
l3: true
OSPF Graceful Restart is now enable by default in the underlay¶
In AVD 5.x, the default value of underlay_ospf_graceful_restart
was false
.
Starting with AVD 6.0.0, the default value of underlay_ospf_graceful_restart
has been changed to true
.
To retain the previous behavior, the following change is required:
Programming all forwarding paths of ECMP routes in the kernel is now enabled via the CLI for WAN routers¶
In AVD 5.x, for historical reason, the programming was enabled by default using an environment variable for the Agent. Effectively, it meant that the default value of wan_use_agent_env_var_for_kernel_software_forwarding_ecmp
was true
.
Starting with AVD 6.0.0, the default value of wan_use_agent_env_var_for_kernel_software_forwarding_ecmp
has been changed to false
. The functionality is now enabled by default via the proper CLI.
To retain the previous behavior, for instance because your device does not support the CLI introduced in EOS 4.33.2F, the following change is required:
Change of default behavior for PIM-SM multicast for core_interfaces.p2p_links
and l3_edge.p2p_links
¶
In AVD 5.X.X, enabling PIM-SM on a core_interface
or l3_edge
link required all of the following settings:
underlay_multicast: true
at the global levelunderlay_multicast: true
andinclude_in_underlay_protocol: true
at the link or profile level
As of AVD 6.0.0, the global underlay_mutlicast
is replaced with node setting underlay_multicast.pim_sm.enabled
or global underlay_mutlicast_pim_sm
.
Additionally, the underlay_multicast
key has been replaced by multicast_pim_sm
for both core_interfaces.p2p_links[]
and l3_edge.p2p_links[]
.
The breaking change in default behavior is for l3_edge
and core_interfaces
P2P links. PIM-SM is now automatically configured on links when include_in_underlay_protocol: true
, provided that PIM-SM is already enabled globally (either through node settings or the global key).
To retain the previous behavior, the following change is required:
- underlay_multicast: true
# # The next line enables globally
+ underlay_mutlicast_pim_sm: true
l3leafs:
[...]
nodes:
- name: MULTICAST_LEAF
+ # Alternatively, PIM-SM can be enabled at the node setting level
+ underlay_multicast:
+ pim_sm:
+ enabled: true
# The same applies for l3_edge
core_interfaces:
p2p_links:
- nodes: [MULTICAST_LEAF, MULTICAST_PEER]
[...]
include_in_underlay_protocol: true
+ # previously `underlay_multicast` had a default of `false`
+ multicast_pim_sm: false
Tip
To avoid editing every single p2p_links
, it is possible to leverage p2p_links_profiles
.
SNMP snmp-server
IPv4 and IPv6 ACLs are now only configured when the VRF is enabled under snmp_settings.vrfs
¶
In AVD 5.x, SNMP snmp-server
IPv4 and IPv6 ACLs were rendered even when the VRF was not enabled under snmp_settings.vrfs
.
Starting AVD 6.0.0, it is required to set enable: true
under the VRF in order to render IPV4 and IPV6 ACLs or use custom_structured_config
.
Default value of underlay_ospf_maximum_paths
is set to 128¶
In AVD 5.x, the parameter underlay_ospf_maximum_paths
(maximum number of OSPF next-hops in an ECMP route) had no default value.
Starting AVD 6.0.0, default value of underlay_ospf_maximum_paths
is set to 128
.
Since 128
is already the EOS system default, it will neither be rendered in the structured configuration nor the CLI configuration.
Migrating from CloudVision keys to cv_settings
¶
In the previous versions of AVD, you may have defined your CloudVision settings as follows.
These keys are now removed and replaced with cv_settings
, to build a similar output, you should update your variables with the following structure.
daemon TerminAttr
exec /usr/bin/TerminAttr -cvaddr=192.168.200.12:9910,192.168.200.13:9910 -cvauth=token,/tmp/token -cvvrf=default -disableaaa -smashexcludes=ale,flexCounter,hardware,kni,pulse,strata -taillogs -cvsourceintf=Management0 -ingestexclude=/Sysdb/cell/1/agent,/Sysdb/cell/2/agent
no shutdown
Note
The example above leverages the built-in defaults, if you would like to override any settings, please refer to the “New key” listed in the table.
Custom keys starting without _
in structured config are no longer supported¶
In AVD 5.x, custom keys starting with or without _
were accepted in structured config.
Starting AVD 6.0.0, only custom keys that begin with _
are accepted in structured config.
l3leaf:
nodes:
- name: host1
id: 101
bgp_as: 101
structured_config:
- custom_key: [ custom_value ]
+ _custom_key: [ custom_value ]
vrfs[].ospf.process_id
and underlay_ospf_process_id
must have different values for all VRFs other than default
¶
In AVD 5.x, it was possible to configure the same value for vrfs[].ospf.process_id
and underlay_ospf_process_id
for any VRF which was leading to potentially overwritten configuration.
Starting AVD 6.0.0, setting the same value for vrfs[].ospf.process_id
and underlay_ospf_process_id
is not allowed for any VRF other than default
vrf.
An error is raised if any VRF have the same ospf.process_id
as underlay_ospf_process_id
.
Removal of design.type¶
In AVD 5.x, the variable design.type
was used to select between different variants of default values for node_type_keys
.
As of AVD 6.x, the design.type
variable has been removed. The default values of node_type_keys
combine all the default node type from all designs.
Removal of default bgp_ecmp
value¶
In AVD 5.x, bgp_ecmp
had a default value of 4 except for WAN routers where there was no default value.
Starting AVD 6.0.0, the default value for bgp_ecmp
has been removed to take advantage of the default value in EOS,
which will be the maximum supported ECMP routes for the platform.
Now bgp_ecmp
must be explicitly defined if required.
To retain the previous behavior, set the value explicitly in your input variables:
eAPI is not enabled by default anymore in eos_designs¶
In previous versions, management_eapi.enabled
was true
by default.
In AVD 6.0, this is not the case anymore and eAPI needs to be explicitly enabled as follows:
A management IP or IPv6 is now required to enable eAPI when default_mgmt_method: oob
¶
Before AVD 6.x, it was possible to enable eAPI without setting mgmt_ip
or ipv6_mgmt_ip
when the default management method was set to out-of-band (which is the default) default_mgmt_method: oob
and management_eapi.vrfs
was not set.
Starting AVD 6.0, enabling eAPI when the default management method is set to oob
and management_eapi.vrfs
is not set will raise an error if neither mgmt_ip
nor ipv6_mgmt_ip
are defined.
Below changes should be noted to migrate to AVD 6.0 without errors.
type: l2leaf
management_eapi:
+ enabled: true # This must be set for management_eapi to take effect.
enable_https: true
l2leaf:
nodes:
- name: management-eapi-host
id: 1
+ mgmt_ip: 10.10.10.1/8
New eos_designs schema restrictions¶
Starting AVD 6.0.0, the following data model keys will have defined restrictions in eos_designs
.
Keys | New Restrictions |
---|---|
aaa_settings.accounting.commands.console[].type |
required |
aaa_settings.accounting.commands.default[].type |
required |
aaa_settings.accounting.dot1x.default.type |
required |
aaa_settings.accounting.exec.default.type |
required |
aaa_settings.accounting.system.default.type |
required |
default_interfaces[].mlag_interfaces_speed |
Added valid_values |
default_interfaces[].uplink_interface_speed |
Added valid_values |
<custom_connected_endpoints_keys.key>[].adapters[].speed |
Added valid_values |
network_ports.[].switches |
min_length: 1 |
<network_services_keys.name>[].vrfs[].l3_interfaces[].ospf.message_digest_keys[].id |
Primary key |
<network_services_keys.name>[].vrfs[].l3_port_channels[].member_interfaces[].speed |
Added valid_values |
<network_services_keys.name>[].vrfs[].l3_port_channels[].ospf.message_digest_keys[].id |
Primary key |
<network_services_keys.name>[].vrfs[].svis[].ospf.message_digest_keys[].id |
Primary key |
<network_services_keys.name>[].vrfs[].svis[].nodes[].ospf.message_digest_keys[].id |
Primary key |
<node_type_keys.key>.defaults.uplink_interface_speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].nodes.[].uplink_interface_speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].uplink_interface_speed |
Added valid_values |
<node_type_keys.key>.nodes.[].uplink_interface_speed |
Added valid_values |
<node_type_keys.key>.defaults.uplink_switch_interface_speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].nodes.[].uplink_switch_interface_speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].uplink_switch_interface_speed |
Added valid_values |
<node_type_keys.key>.nodes.[].uplink_switch_interface_speed |
Added valid_values |
<node_type_keys.key>.defaults.mlag_interfaces_speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].nodes.[].mlag_interfaces_speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].mlag_interfaces_speed |
Added valid_values |
<node_type_keys.key>.nodes.[].mlag_interfaces_speed |
Added valid_values |
<node_type_keys.key>.defaults.l3_interfaces.[].speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].nodes.[].l3_interfaces.[].speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].l3_interfaces.[].speed |
Added valid_values |
<node_type_keys.key>.nodes.[].l3_interfaces.[].speed |
Added valid_values |
<node_type_keys.key>.defaults.l3_port_channels.[].member_interfaces.[].speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].nodes.[].l3_port_channels.[].member_interfaces.[].speed |
Added valid_values |
<node_type_keys.key>.node_groups.[].l3_port_channels.[].member_interfaces.[].speed |
Added valid_values |
<node_type_keys.key>.nodes.[].l3_port_channels.[].member_interfaces.[].speed |
Added valid_values |
p2p_links[].description |
min_length: 2, max_length: 2 |
p2p_links[].interfaces |
min_length: 2, max_length: 2 |
p2p_links[].ip |
min_length: 2, max_length: 2 |
p2p_links[].nodes |
min_length: 2, max_length: 2 |
p2p_links[].speed |
Added valid_values |
svi_profiles[].ospf.message_digest_keys[].id |
Primary key |
svi_profiles[].nodes[].ospf.message_digest_keys[].id |
Primary key |
Removal of default Jinja2 templates for interface_descriptions
and ip_addressing
in eos_designs¶
Starting AVD 6.0.0, the default templates for interface_descriptions
and ip_addressing
are removed from the eos_designs role. Custom templates may still be provided, but the role no longer includes built-in templates.
The removed default templates for ip_addressing are:
- avd-v2-spine-p2p-uplinks-ip.j2
- avd-v2-spine-p2p-uplinks-peer-ip.j2
- mlg-ibgp-peering-ip-primary.j2
- mlg-ibgp-peering-ip-secondary.j2
- mlag-ip-primary.j2
- mlag-ip-secondary.j2
- mlag-l3-ip-primary.j2
- mlag-l3-ip-secondary.j2
- p2p-uplinks-ip.j2
- p2p-uplinks-peer-ip.j2
- router-id-ipv6.j2
- router-id.j2
- vtep-ip-mlag.j2
- vtep-ip.j2
The removed default templates for interface_descriptions are:
- connected_endpoints/ethernet-interfaces.j2
- connected_endpoints/port-channel-interfaces.j2
- loopback_interfaces/overlay-loopback.j2
- loopback_interfaces/vtep-loopback.j2
- mlag/ethernet-interfaces.j2
- mlag/port-channel-interfaces.j2
- underlay/ethernet-interfaces.j2
- underlay/port-channel-interfaces.j2
For migration cases where you must retain legacy logic, copy the required templates from the AVD 5.7 roles/eos_designs/templates
into a custom template location and reference them explicitly.
As an example, copy the templates to a directory custom_templates
(make sure it is available in the search paths when the Ansible playbook is executing as documented here) and update your input variables as follows:
node_type_keys:
- key: spine
type: spine
ip_addressing:
+ p2p_uplinks_ip: 'custom_templates/ip_addressing/avd-v2-spine-p2p-uplinks-ip.j2'
interface_descriptions:
+ underlay_ethernet_interfaces: 'custom_templates/interface_descriptions/underlay/ethernet-interfaces.j2'
Removing support for templating of internal switch.*
variables in Jinja templates¶
Starting AVD 6.0.0, Jinja templates will no longer have access to internal AVD variables previously exposed as switch.*
.
This also applies to inline Jinja templates in the input variables (like host vars, group vars, task vars and play vars).
Examples of variables that can no longer be used:
{{ switch.id }}
{{ switch.mgmt_ip }}
{{ switch.mgmt_interface }}
For custom IP Addressing or Interface Description templates, refer to the documentation for the available variables.
Also refer to the documentation to see all the new models that may resolve the need for inline jinja templating.
Several of the new AVD models provide abstractions like default_mgmt_method_ip
or default_mgmt_method_vrf
,
which are intended to remove the need for inline Jinja templating in the input variables.
If there is no alternative available for your current use case, please open a GitHub issue so we can work with you to identify alternatives. Users with a support agreement can contact Arista support to get assistance.
p2p_links now accepts a minimum and maximum of two entries¶
In AVD 5.0.0, p2p_links list keys nodes
, ip
, interfaces
and descriptions
did not have any limitation in size. This was sometimes working but could lead to undefined behavior as all the code was written to work for exactly 2
nodes, in particular when figuring out the peer device.
Starting AVD 6.0.0, the length to all these lists have been restricted to exactly 2 items (min_length: 2
and max_length: 2
).
Changing behavior of cv_topology and use_cv_topology¶
The behavior of cv_topology
and use_cv_topology
has been changed in the following areas:
use_cv_topology: true
now requirescv_topology_levels
to describe the relationships between devices of each node type, instead of relying ondefault_interfaces
to infer this.- MLAG peer interfaces are now set to all interfaces towards the MLAG peer.
use_cv_topology: true
can no longer be combined with manually settinguplink_interfaces
,uplink_switches
,uplink_switch_interfaces
ormlag_interfaces
.
use_cv_topology: true
+cv_topology_levels:
+ - type: super-spine
+ level: 1
+ - type: spine
+ level: 2
+ - type: l3leaf
+ level: 3
+ - type: l2leaf
+ level: 4
+ - type: overlay-controller
+ level: 5
-default_interfaces:
- <...>
cv_topology:
<...>
See the documentation for cv_topology
for details on the new behavior.
Changes to role arista.avd.eos_cli_config_gen
¶
Removal of deprecated eos_cli_config_gen data models¶
The following data model keys have been removed from eos_cli_config_gen
in AVD 6.0.0.
Removed key | New key |
---|---|
vxlan_interface.Vxlan1 |
vxlan_interface.vxlan1 |
aaa_accounting.exec.console.group |
aaa_accounting.exec.console.methods[].group |
aaa_accounting.exec.console.logging |
aaa_accounting.exec.console.methods[].method |
aaa_accounting.exec.default.group |
aaa_accounting.exec.default.methods[].group |
aaa_accounting.exec.default.logging |
aaa_accounting.exec.default.methods[].method |
aaa_accounting.system.default.group |
aaa_accounting.system.default.methods[].group |
aaa_accounting.dot1x.default.group |
aaa_accounting.dot1x.default.methods[].group |
aaa_accounting.commands[].console[].group |
aaa_accounting.commands[].console[].methods[].group |
aaa_accounting.commands[].console[].logging |
aaa_accounting.commands[].console[].methods[].method |
aaa_accounting.commands[].default[].group |
aaa_accounting.commands[].default[].methods[].group |
aaa_accounting.commands[].default[].logging |
aaa_accounting.commands[].default[].methods[].method |
community_lists |
ip_community_lists |
ethernet_interfaces[].vlans |
ethernet_interfaces[].switchport.access_vlan or switchport.trunk.allowed_vlan |
ethernet_interfaces[].native_vlan |
ethernet_interfaces[].switchport.trunk.native_vlan |
ethernet_interfaces[].native_vlan_tag |
ethernet_interfaces[].switchport.trunk.native_vlan_tag |
ethernet_interfaces[].mode |
ethernet_interfaces[].switchport.mode |
ethernet_interfaces[].phone |
ethernet_interfaces[].switchport.phone |
ethernet_interfaces[].trunk_groups |
ethernet_interfaces[].switchport.trunk.groups |
ethernet_interfaces[].type |
- |
ethernet_interfaces[].encapsulation_dot1q_vlan |
ethernet_interfaces[].encapsulation_dot1q.vlan |
ethernet_interfaces[].encapsulation_vlan.client.dot1q |
ethernet_interfaces[].encapsulation_vlan.client.encapsulation |
ethernet_interfaces[].encapsulation_vlan.client.unmatched |
ethernet_interfaces[].encapsulation_vlan.client.encapsulation |
ethernet_interfaces[].encapsulation_vlan.network.dot1q |
ethernet_interfaces[].encapsulation_vlan.network.encapsulation |
ethernet_interfaces[].encapsulation_vlan.network.client |
ethernet_interfaces[].encapsulation_vlan.network.encapsulation |
ethernet_interfaces[].tcp_mss_ceiling.ipv4_segment_size |
ethernet_interfaces[].tcp_mss_ceiling.ipv4 |
ethernet_interfaces[].tcp_mss_ceiling.ipv6_segment_size |
ethernet_interfaces[].tcp_mss_ceiling.ipv6 |
ethernet_interfaces[].isis_authentication_mode |
ethernet_interfaces[].isis_authentication.both.mode or ethernet_interfaces[].isis_authentication.level_1.mode or ethernet_interfaces[].isis_authentication.level_2.mode |
ethernet_interfaces[].isis_authentication_key |
ethernet_interfaces[].isis_authentication.both.key or ethernet_interfaces[].isis_authentication.level_1.key or ethernet_interfaces[].isis_authentication.level_2.key |
ethernet_interfaces[].trunk_private_vlan_secondary |
ethernet_interfaces[].switchport.trunk.private_vlan_secondary |
ethernet_interfaces[].pvlan_mapping |
ethernet_interfaces[].switchport.pvlan_mapping |
ethernet_interfaces[].vlan_translations |
ethernet_interfaces[].switchport.vlan_translations |
ethernet_interfaces[].vrrp_ids[].ipv6.address |
ethernet_interfaces[].vrrp_ids[].ipv6.addresses |
ethernet_interfaces[].traffic_engineering.srlg |
ethernet_interfaces[].traffic_engineering.srlgs |
flow_tracking.trackers[].exporters[].collector |
flow_tracking.trackers[].exporters[].collectors |
generate_default_config |
- |
generate_device_documentation |
eos_cli_config_gen_documentation.enable |
ip_name_server_groups[].ip_domain_list |
ip_name_server_groups[].ip_domain_lists |
ipv6_static_routes[].destination_address_prefix |
ipv6_static_routes[].prefix |
ipv6_static_routes[].gateway |
ipv6_static_routes[].next_hop |
is_deployed |
metadata.is_deployed |
local_users |
aaa_settings.local_users |
management_api_models.providers |
management_api_models.provider |
management_ssh.access_groups |
management_ssh.ip_access_group_in or management_ssh.vrfs.ip_access_group_in |
management_ssh.ipv6_access_groups |
management_ssh.ipv6_access_group_in or management_ssh.vrfs.ipv6_access_group_in |
ntp.servers[].vrf |
ntp.vrf |
port_channel_interfaces[].encapsulation_dot1q_vlan |
port_channel_interfaces[].encapsulation_dot1q.vlan |
port_channel_interfaces[].encapsulation_vlan.client.dot1q |
port_channel_interfaces[].encapsulation_vlan.client.encapsulation |
port_channel_interfaces[].encapsulation_vlan.client.unmatched |
port_channel_interfaces[].encapsulation_vlan.client.encapsulation |
port_channel_interfaces[].encapsulation_vlan.network.client |
port_channel_interfaces[].encapsulation_vlan.network.encapsulation |
port_channel_interfaces[].encapsulation_vlan.network.dot1q |
port_channel_interfaces[].encapsulation_vlan.network.encapsulation |
port_channel_interfaces[].isis_authentication_key |
port_channel_interfaces[].isis_authentication.both.key or port_channel_interfaces[].isis_authentication.level_1.key or port_channel_interfaces[].isis_authentication.level_2.key |
port_channel_interfaces[].isis_authentication_mode |
port_channel_interfaces[].isis_authentication.both.mode or port_channel_interfaces[].isis_authentication.level_1.mode or port_channel_interfaces[].isis_authentication.level_2.mode |
port_channel_interfaces[].mode |
port_channel_interfaces[].switchport.mode |
port_channel_interfaces[].native_vlan |
port_channel_interfaces[].switchport.trunk.native_vlan |
port_channel_interfaces[].native_vlan_tag |
port_channel_interfaces[].switchport.trunk.native_vlan_tag |
port_channel_interfaces[].phone |
port_channel_interfaces[].switchport.phone |
port_channel_interfaces[].pvlan_mapping |
port_channel_interfaces[].switchport.pvlan_mapping |
port_channel_interfaces[].traffic_engineering.srlg |
port_channel_interfaces[].traffic_engineering.srlgs |
port_channel_interfaces[].trunk_groups |
port_channel_interfaces[].switchport.trunk.groups |
port_channel_interfaces[].trunk_private_vlan_secondary |
port_channel_interfaces[].switchport.trunk.private_vlan_secondary |
port_channel_interfaces[].type |
- |
port_channel_interfaces[].vlans |
port_channel_interfaces[].switchport.access_vlan or switchport.trunk.allowed_vlan |
port_channel_interfaces[].vlan_translations |
port_channel_interfaces[].switchport.vlan_translations |
router_bgp.address_family_evpn.bgp_additional_paths |
router_bgp.address_family_evpn.bgp.additional_paths |
router_bgp.address_family_ipv4.redistribute_routes |
router_bgp.address_family_ipv4.redistribute |
router_bgp.address_family_ipv4_multicast.redistribute_routes |
router_bgp.address_family_ipv4_multicast.redistribute |
router_bgp.address_family_ipv6.redistribute_routes |
router_bgp.address_family_ipv6.redistribute |
router_bgp.address_family_ipv6_multicast.redistribute_routes |
router_bgp.address_family_ipv6_multicast.redistribute |
router_bgp.redistribute_routes |
router_bgp.redistribute |
router_bgp.vrfs[].address_family_ipv4.redistribute_routes |
router_bgp.vrfs[].address_family_ipv4.redistribute |
router_bgp.vrfs[].address_family_ipv6.redistribute_routes |
router_bgp.vrfs[].address_family_ipv6.redistribute |
router_bgp.vrfs[].address_family_ipv4_multicast.redistribute_routes |
router_bgp.vrfs[].address_family_ipv4_multicast.redistribute |
router_bgp.vrfs[].address_family_ipv6_multicast.redistribute_routes |
router_bgp.vrfs[].address_family_ipv6_multicast.redistribute |
router_path_selection.tcp_mss_ceiling.ipv4_segment_size |
router_path_selection.tcp_mss_ceiling.ipv4 |
serial_number |
metadata.serial_number |
static_routes[].destination_address_prefix |
static_routes[].prefix |
static_routes[].gateway |
static_routes[].next_hop |
vlan_interfaces[].vrrp_ids[].ipv6.address |
vlan_interfaces[].vrrp_ids[].ipv6.addresses |
ip_name_servers[].vrf
is required to generate name servers configuration¶
In AVD 5.x, the key ip_name_servers[].vrf
was not required. If this key was not set, the name server configuration was generated without an explicitly specified VRF, which the EOS CLI treats as the default
VRF.
This key must be set to default
for default VRF in AVD 6.0.0.
Traffic policy named counters must now be explicitly defined under traffic_policies.policies[].counters
¶
In AVD 5.0.0, named counters were generated automatically based on the traffic_policies.policies[].matches[].actions[].count
key.
Starting AVD 6.0.0, this automatic generation has been removed. All named counters must be defined under the new traffic_policies.policies[].counters
key.
traffic_policies:
policies:
- name: BLUE-C1-POLICY
+ counters:
+ - DEMO-TRAFFIC
matches:
- name: BLUE-C2-POLICY-01
actions:
count: DEMO-TRAFFIC
errdisable.recovery.causes
is now a list of dictionaries¶
In AVD 5.x, errdisable.recovery.causes
was modeled as a list of strings.
As of AVD 6.0.0, this data model has been updated to a list of dictionaries to allow configuring a recovery interval for each cause.
The diff below shows an example on how to update your inputs to match the new data model:
ntp.servers[].vrf
moved to ntp.vrf
since all NTP servers must use the same VRF¶
In AVD 5.x, the VRF for NTP servers was defined individually under ntp.servers[].vrf
.
Starting with AVD 6.0.0, because in EOS all NTP servers must be in the same VRF, ntp.servers[].vrf
has been replaced by ntp.vrf
to avoid misconfigurations.
New eos_cli_config_gen schema restrictions¶
Starting AVD 6.0.0, the following data model keys will have defined restrictions in eos_cli_config_gen
.
Keys | Restrictions |
---|---|
aaa_accounting.commands.console[].type |
required |
aaa_accounting.commands.default[].type |
required |
aaa_accounting.dot1x.default.type |
required |
aaa_accounting.exec.default.type |
required |
aaa_accounting.system.default.type |
required |
ethernet_interfaces[].speed |
Added valid_values |
management_interfaces[].speed |
Added valid_values |
Changes to role arista.avd.anta_runner
¶
// TODO: potentially remove if empty