Skip to content

Commit

Permalink
Release notes 2.1.0 (#926)
Browse files Browse the repository at this point in the history
Co-authored-by: Thomas Grimonet <[email protected]>
  • Loading branch information
carlbuchmann and titom73 authored May 4, 2021
1 parent 633fcc8 commit 97c52b9
Show file tree
Hide file tree
Showing 10 changed files with 178 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ This management IP addresses are used in a private virtual-network between Cloud

### Configure Python environment

Please refer to [__installation page__](../installation/setup-environement.md) to configure AVD and CVP collection.
Please refer to [__installation page__](../installation/setup-environment.md) to configure AVD and CVP collection.

### Configure DHCP server on CloudVision

In this scenario, we use CloudVision (CV) as ZTP server to provision devices and register them onto CV.

Once you get mac-address of your switches, edit file `/etc/dhcp/dhcpd.conf` in CloudVision. In this scenario, CV use following address to connect to devices: `10.255.0.1`

If CVP has not been configured to activate ZTP services, it is higly recommended to follow [these steps](https://www.arista.com/en/cg-cv/cv-dhcp-service-for-zero-touch-provisioning-ztp-setup)
If CVP has not been configured to activate ZTP services, it is highly recommended to follow [these steps](https://www.arista.com/en/cg-cv/cv-dhcp-service-for-zero-touch-provisioning-ztp-setup)

#### Ansible playbook approach

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ $ tree -L 3 -d

## Requirements

- Ansible runner configured as descried in [this section](../installation/setup-environement.md)
- Ansible runner configured as descried in [this section](../installation/setup-environment.md)
- A set of devices configured with their respective management IP address and username.
- Access to eAPI service for all devices.

Expand Down
2 changes: 1 addition & 1 deletion ansible_collections/arista/avd/docs/how-to/lab-with-nat.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Below is a standard lab we use for development. And of course our laptop are not
- A Linux server connected on both out of band management network and ansible-runner network.
- This lab will be based on [Ubuntu 20.04](https://ubuntu.com/download/server)
- SSH access to server enable.
- An [AVD setup](../installation/setup-environement.md) already configured on your ansible-runner.
- An [AVD setup](../installation/setup-environment.md) already configured on your ansible-runner.

All devices must have a basic network configuration to allow access to eAPI. Below is a very basic example of how to activate eAPI over HTTPS

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ For example, see the file/folder structure below.

## Build local environment

Please refer to [Setup environment page](./setup-environement.md)
Please refer to [Setup environment page](./setup-environment.md)

Once installed, use `dev-start` command to bring up all the required containers:

Expand All @@ -29,7 +29,7 @@ Once installed, use `dev-start` command to bring up all the required containers:

## Docker things

he docker container approach for development can be used to ensure that everybody is using the same development environment while still being flexible enough to use the repo you are making changes in. You can inspect the Dockerfile to see what packages have been installed.
The docker container approach for development can be used to ensure that everybody is using the same development environment while still being flexible enough to use the repo you are making changes in. You can inspect the Dockerfile to see what packages have been installed.
The container will mount the current working directory, so you can work with your local files.

The ansible version is passed in with the docker build command using **`ANSIBLE_VERSION`** variable. If the ***ANSIBLE*** variable is not used the Dockerfile will by default set the ansible version to describe in AVD requirements.
Expand Down Expand Up @@ -146,7 +146,7 @@ To remove installation, use `uninstall` option.

### Check 404 links

To validate documentation, you should check for _not found_ links in your local version of the documentation. This test requires to run mkdocs container as explained in [installation documentation](./setup-environement.md).
To validate documentation, you should check for _not found_ links in your local version of the documentation. This test requires to run mkdocs container as explained in [installation documentation](./setup-environment.md).

In a shell, run the following make command. It starts a container in AVD documentation network and leverage [`muffet`](https://github.com/raviqqe/muffet) tool to check 404 HTTP code:

Expand All @@ -159,7 +159,7 @@ docker run --network container:webdoc_avd raviqqe/muffet \
-f --limit-redirections=3 \
--timeout=60
http://127.0.0.1:8000/docs/installation/development/
404 http://127.0.0.1:8000/docs/installation/development/setup-environement2.md
404 http://127.0.0.1:8000/docs/installation/development/setup-environment2.md
make: *** [check-avd-404] Error 1
```

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,76 @@
# Release Notes For Ansible AVD 2.0.0
# Release Notes For Ansible AVD 2.x.x

Documentation for AVD version `2.x.x` [available here](https://www.avd.sh/en/releases-v2.x.x/)

!!! 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 2.1.0

### New Requirements

```cfg
ansible>=2.10,<2.11
```

### New features

- __eos_designs (eos_l3ls_evpn):__

- EVPN host-flap settings
- Support for 3 stage + L2 Leafs topology with RFC5549 eBGP underlay and eBGP Overlay
- Support for 2-level inheritance on port-profiles
- Options to change MLAG vlan ids
- Support multiple keys support for connected endpoints (Previously know as servers)
- LACP fallback to connected endpoints
- Support for A/A model to connect L2LEAF
- Interface to VRF assignment in L3 Edge
- SNMP settings
- capability to define max spines to allow for growth without re ip addressing
- "always_include_vrfs_in_tenants" in l3leaf filter
- L2 ports with L2 MTU (7050 platforms only)
- BGP peer group names option
- Support for additional-route-targets to Tenant VRFs
- STP bpduguard to port channels and interfaces
- Initial support for traffic-policy feature

- __eos_cli_config_gen:__

- EVPN host-flap settings
- Policy Based Routing support
- L2 protocol encapsulation
- LACP timer fast option
- Support for MPLS and LDP
- LACP fallback
- RFC5549 support
- TACACS timeout and SAND MCast replication
- SNMP communities
- `l3dot1q` support for interfaces
- Interface bfd settings
- L2 ports with L2 MTU (7050 platforms only)
- AAA support authentication for enable mode
- BGP support for IPv6 unicast AF network statement
- Various enhancement to OSPF
- `class-maps` and `policy-maps` for QOS
- Support for L3 sub interface for ethernet and port-channel
- Support for traffic-policy feature
- Make `ingestkey` optional in TerminAttr

- plugins (plugins):__

- New arista.avd.contains test plugin
- New yaml_templates_to_facts action plugin

### Fixed issues

- __eos_cli_config_gen:__

- Update documentation template to set `ingestkey` optional

- __eos_validate_states:__

- Provide protection when the interface's description is not defined

## Release 2.0.0

### New Requirements
Expand All @@ -23,9 +92,7 @@ md-toc==7.1.0
- `eos_l3ls_evpn` has been replaced / renamed to `eos_designs`.
- This builds the foundation for arista.avd collection to support multiple designs i.e L2LS in future releases!

### Provides enhancements and bug fixes to the following roles

**New features:**
### New Features

- __eos_designs (eos_l3ls_evpn)__

Expand Down Expand Up @@ -64,6 +131,13 @@ md-toc==7.1.0
- Support disableaaa option for TerminAttr
- Global ARP timer option


- __plugins (plugins)__

- New default filter plugin
- New esi management filter plugin
- New defined test plugin

### 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.
Expand Down
2 changes: 1 addition & 1 deletion ansible_collections/arista/avd/galaxy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace: arista
name: avd

# The version of the collection. Must be compatible with semantic versioning
version: 2.0.0
version: 2.1.0

# The path to the Markdown (.md) readme file. This path is relative to the root of the collection
readme: README.md
Expand Down
103 changes: 86 additions & 17 deletions ansible_collections/arista/avd/plugins/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,17 @@
- [list_compress filter](#list_compress-filter)
- [natural_sort filter](#natural_sort-filter)
- [default filter](#default-filter)
- [ethernet segment identifiers management filter](#ethernet-segment-identifiers-management-filter)
- [generate_esi filter](#generate_esi-filter)
- [generate_lacp_id filter](#generate_lacp_id-filter)
- [generate_route_target filter](#generate_route_target-filter)
- [Plugin Tests](#plugin-tests)
- [defined test](#defined-test)
- [contains test](#contains-test)
- [Modules](#modules)
- [Inventory to CloudVision Containers](#inventory-to-cloudvision-containers)
- [Add Table Of Contents to existing MarkDown file](#add-table-of-contents-to-existing-markdown-file)
- [Build Configuration to publish configlets to CloudVision](#build-configuration-to-publish-configlets-to-cloudvision)
- [Add Table Of Contents to an existing MarkDown file](#add-table-of-contents-to-an-existing-markdown-file)
- [YAML Templates to Facts](#yaml-templates-to-facts)

## Plugin Filters
Expand Down Expand Up @@ -50,7 +56,7 @@ To use this filter:
### default filter

The `arista.avd.default` filter can provide the same basic capability as the builtin `default` filter. It will return the input value only if it is valid and if not, provide a default value instead. Our custom filter requires a value to be `not undefined` and `not None` to pass through.
Furthermore the filter allows multiple default values as arguments, which will undergo the same validation one after one until we find a valid default value.
Furthermore, the filter allows multiple default values as arguments, which will undergo the same validation one after one until we find a valid default value.
As a last resort the filter will return None.

To use this filter:
Expand All @@ -59,6 +65,40 @@ To use this filter:
{{ variable | arista.avd.default( default_value_1 , default_value_2 ... ) }}
```

### ethernet segment identifiers management filter

To help provide consistency when configuring EVPN A/A ESI values, the `esi_management` filter plugin provides an abstraction in the form of a `short_esi` key. `short_esi` is an abbreviated 3 octets value to encode Ethernet Segment ID, LACP ID and route target. Transformation from abstraction to network values is managed the following jinja2 filters:

#### generate_esi filter

The `arista.avd.generate_esi` filter transforms short_esi: `0303:0202:0101` with prefix `0000:0000` to EVPN ESI: `0000:0000:0303:0202:0101`

**example:**

```jinja
esi: {{ l2leaf.node_groups[l2leaf_node_group].short_esi | arista.avd.generate_esi }}
```

#### generate_lacp_id filter

The `arista.avd.generate_lacp_id` filter transforms short_esi: `0303:0202:0101` to LACP ID format format: `0303.0202.0101`

**example:**

```jinja
lacp_id: {{ l2leaf.node_groups[l2leaf_node_group].short_esi | arista.avd.generate_lacp_id }}
```

#### generate_route_target filter

The `arista.avd.generate_route_target` filter transforms short_esi: `0303:0202:0101` to route-target format: `03:03:02:02:01:01`

**example:**

```jinja
rt: {{ l2leaf.node_groups[l2leaf_node_group].short_esi | arista.avd.generate_route_target }}
```

## Plugin Tests

Arista AVD provides built-in test plugins to help verify data efficiently in jinja2 templates
Expand Down Expand Up @@ -109,7 +149,7 @@ To use this test:
{% if my_list is arista.avd.contains(item_list) %}Match{% endif %}
```

**Example**
**example**
The `arista.avd.contains` is used in the role `eos_designs` in combination with `selectattr` to parse the `platform_settings` list
for an element where `switch_platform` is contained in the `platforms` attribute.

Expand Down Expand Up @@ -164,9 +204,9 @@ The `arista.avd.inventory_to_container` module provides following capabilities:

It saves everything in a `YAML` file using **`destination`** keyword.

It is a module to build structure of data to configure on a CloudVision server. Output is ready to be passed to [`arista.cvp`](https://github.com/aristanetworks/ansible-cvp/) to configure **CloudVision**.
It is a module to build a structure of data to configure a CloudVision server. Output is ready to be passed to [`arista.cvp`](https://github.com/aristanetworks/ansible-cvp/) to configure **CloudVision**.

**Example:**
**example:**

To use this module:

Expand All @@ -175,11 +215,11 @@ tasks:
- name: generate intended variables
tags: [always]
inventory_to_container:
inventory: '{{ inventory_file }}'
container_root: '{{ container_root }}'
configlet_dir: 'intended/configs'
configlet_prefix: '{{ configlets_prefix }}'
destination: '{{playbook_dir}}/intended/structured_configs/{{inventory_hostname}}.yml'
inventory: "{{ inventory_file }}"
container_root: "{{ container_root }}"
configlet_dir: "intended/configs"
configlet_prefix: "{{ configlets_prefix }}"
destination: "{{playbook_dir}}/intended/structured_configs/{{inventory_hostname}}.yml"
```

Inventory example applied to this example:
Expand Down Expand Up @@ -232,7 +272,36 @@ CVP_CONTAINERS:
DC1_SPINES:
parent_container: DC1_FABRIC
```
### Add Table Of Contents to existing MarkDown file

### Build Configuration to publish configlets to CloudVision

The `arista.avd.configlet_build_config` module provides the following capabilities:
- Build arista.cvp.configlet configuration.
- Build configuration to publish configlets to Cloudvision.

**options:**

```yaml
- configlet_build_config:
configlet_dir: "< Directory where configlets are located | Required >"
configlet_prefix: "< Prefix to append on configlet | Required >"
destination: "< File where to save information | Optional >"
configlet_extension: "< File extension to look for | Default 'conf' >"
```

**example:**

```yaml
# tasks file for configlet_build_config
- name: generate intended variables
tags: [build, provision]
configlet_build_config:
configlet_dir: "/path/to/configlets/folder/"
configlet_prefix: "AVD_"
configlet_extension: "cfg"
```

### Add Table Of Contents to an existing MarkDown file

The `arista.avd.add_toc` module provides following capabilities:
- Wrapper of md-toc python library
Expand All @@ -241,15 +310,15 @@ The `arista.avd.add_toc` module provides following capabilities:
The module is used in `eos_designs` to create Table Of Contents for Fabric Documentation.
The module is used in `eos_cli_config_gen` to create Table Of Contents for Device Documentation.

**Example:**
**example:**

To use this module:

```yaml
tasks:
- name: Generate TOC for fabric documentation
add_toc:
md_file: '{{ root_dir }}/documentation/fabric/{{ fabric_name }}-documentation.md'
md_file: "{{ root_dir }}/documentation/fabric/{{ fabric_name }}-documentation.md"
skip_lines: 3 #Default is 0
#toc_levels: 2
#toc_marker: '<!-- toc -->'
Expand All @@ -266,7 +335,7 @@ The `arista.avd.yaml_templates_to_facts` module is an Ansible Action Plugin prov
- Recursively combining output of templates to allow templates to update overlapping parts of the data models.
- Facts set by one template will be accessable by the next templates
- Returned Facts can be set below a specific `root_key`
- Facts returned templates can be stripped for `null` values, to avoid them overwriting previous set facts
- Facts returned templates can be stripped for `null` values to avoid them overwriting previous set facts

The module is used in `eos_designs` first to set facts for devices and then to set the `structured_configuration` variable based on all the `eos_designs` templates.

Expand All @@ -277,15 +346,15 @@ The module arguments are:
root_key: < optional root_key name >
templates:
# Path to template file
- template: < template file >
- template: "< template file >"
options:
# Merge strategy for lists for Ansible Combine filter. See Ansible Combine filter for details.
list_merge: < append (default) | replace | keep | prepend | append_rp | prepend_rp >
# Filter out keys from the generated output if value is null/none/undefined
strip_empty_keys: < true (default) | false >
```

Example:
**example:**

```yaml
- name: Set AVD facts
Expand Down Expand Up @@ -320,7 +389,7 @@ templates:
# Set design specific "switch.*" variables
- template: "designs/l3ls-evpn/facts/main.j2"
structured_config:
# Render Strucured Configuration
# Render Structured Configuration
# Base features
- template: "base/main.j2"
# MLAG feature
Expand Down
Loading

0 comments on commit 97c52b9

Please sign in to comment.