Arista Networks supports Ansible for managing devices running the EOS operating system through CloudVision platform (CVP). This roles includes a set of ansible modules that perform specific configuration tasks on CVP server. These tasks include: collecting facts, managing configlets, containers, build provisionning topology and running tasks. For installation, you can refer to specific section of this readme.
More documentation is available in project's wiki pages
This repository provides content for Ansible's collection arista.cvp with following content:
List of available modules:
- arista.cvp.cv_facts - Collect CVP facts from server like list of containers, devices, configlet and tasks.
- arista.cvp.cv_configlet - Manage configlet configured on CVP.
- arista.cvp.cv_container - Manage container topology and attach configlet and devices to containers.
- arista.cvp.cv_device - Manage devices configured on CVP
- arista.cvp.cv_task - Run tasks created on CVP.
List of available roles:
- arista.cvp.ztp_configuration - Configure DHCPD service on a Cloudvision server or any dhcpd service.
This collection supports CVP version 2018.2.5
and 2019.1.x
This repository is built based on new collections system introduced by ansible starting version 2.9.
It means that it is required to run at least ansible
2.9.0rc4
to be able to use this collection.
This collection requires the following to be installed on the Ansible control machine:
- python
2.7
(legacy) and3.7
- ansible >=
2.9.0
- requests >=
2.22.0
- treelib version
1.5.5
or later
Ansible galaxy hosts all stable version of this collection. Installation from ansible-galaxy is the most convenient approach for consuming arista.cvp
content
$ ansible-galaxy collection install arista.cvp
Process install dependency map
Starting collection install process
Installing 'arista.cvp:1.0.1' to '~/.ansible/collections/ansible_collections/arista/cvp'
You can git clone this repository and use examples folder for testing. This folder contains a set of pre-configured playbook and ansible configuration:
Clone repository
$ git clone https://github.com/aristanetworks/ansible-cvp.git
$ cd ansible-cvp
Build and install collection
$ ansible-galaxy collection build --force ansible_collections/arista/cvp
$ ansible-galaxy collection install arista-cvp-<VERSION>.tar.gz
You can git clone this repository and use examples folder for testing. This folder contains a set of pre-configured playbook and ansible configuration:
$ git clone https://github.com/aristanetworks/ansible-cvp.git
Update your ansible.cfg to update collections_paths to point to local repository
collections_paths = /path/to/local/repository:~/.ansible/collections:/usr/share/ansible/collections
It is highly recommended to use a python virtual-environment to not alter your production environment.
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.
- Build Docker image
$ make build-docker
$ make run-docker
Image will be created using current branch as tag. If it is run in master branch, then latest git tag will be used as docker tag.
Docker images can be reduced by using
--squash
option available with experimental features enabled on your docker host.
All files part of examples
are copied into the container.
This example outlines how to use arista.cvp
to create a containers topology on Arista CloudVision.
A complete end to end demo using Arista Validated Design collection and CloudVision modules is available as an example. You can also find some playbook examples under examples
folder with information about how to built a test environment.
Below is a very basic example to build a container topology on a CloudVision platform assuming you have 3 veos named veos0{1,3}
and a configlet named alias
---
- name: Playbook to demonstrate cv_container module.
hosts: cvp
connection: local
gather_facts: no
collections:
- arista.cvp
vars:
containers_provision:
Fabric:
parent_container: Tenant
Spines:
parent_container: Fabric
Leaves:
parent_container: Fabric
configlets:
- alias
devices:
- veos03
MLAG01:
parent_container: Leaves
devices:
- veos01
- veos02
tasks:
- name: "Gather CVP facts from {{inventory_hostname}}"
cv_facts:
register: cvp_facts
- name: "Build Container topology on {{inventory_hostname}}"
cv_container:
topology: '{{containers_provision}}'
cvp_facts: '{{cvp_facts.ansible_facts}}'
As modules of this collection are based on HTTPAPI
connection plugin, authentication elements shall be declared using this plugin mechanism and are automatically shared with arista.cvp.cv_*
modules.
[development]
cvp_foster ansible_host= 10.90.224.122 ansible_httpapi_host=10.90.224.122
[development:vars]
ansible_connection=httpapi
ansible_httpapi_use_ssl=True
ansible_httpapi_validate_certs=False
ansible_user=cvpadmin
ansible_password=ansible
ansible_network_os=eos
ansible_httpapi_port=443
As modules of this collection are based on HTTPAPI
connection plugin, authentication elements shall be declared using this plugin mechanism and are automatically shared with arista.cvp.cv_*
modules.
- Ansible for Arista Validated Design
- Ansible EOS modules on ansible documentation.
- CloudVision Platform overvierw
- Content for demo using Arista Validated Design and
arista.cvp
collection.
Project is published under Apache License.
Support for this arista.cvp
collection is provided by the community directly in this repository. Easiest way to get support is to open an issue.
Contributing pull requests are gladly welcomed for this repository. If you are planning a big change, please start a discussion first to make sure we’ll be able to merge it.
You can also open an issue to report any problem or to submit enhancement.
A more complete guide for contribution is available in the repository