Coder Social home page Coder Social logo

blemmenes / ansible-cvp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aristanetworks/ansible-cvp

0.0 1.0 0.0 3.92 MB

Ansible modules for Arista CloudVision

Home Page: http://cvp.avd.sh

License: Apache License 2.0

Python 92.75% Shell 1.06% Makefile 3.48% Dockerfile 0.03% CSS 0.88% Jinja 1.41% HTML 0.39%

ansible-cvp's Introduction

collection version License

Ansible Modules for Arista CloudVision Platform

All the CV communication are now managed by cvprac library. So a new requirements MUST be installed first before any code execution.

About

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.

Arista CloudVision and Ansible

More documentation is available in project's website

List of CVP versions supported

arista.cvp collection supports list of Cloudvision version as listed below:

Starting version 2.0.0, collection uses cvprac as Cloudvision connection manager. So support for any new CLoudvision server is tied to it support in this python library.

Collection overview

This repository provides content for Ansible's collection arista.cvp with following content:

List of available modules

Version 3:

Legacy / Version 1:

List of available roles

Example

This example outlines how to use arista.cvp to create a containers topology on Arista CloudVision.

A dedicated repository is available for step by step examples on ansible-cvp-toi.

A complete end to end demo using Arista Validated Design collection and CloudVision modules is available as an example.

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 cvp modules.
  hosts: cv_server
  connection: local
  gather_facts: no
  collections:
    - arista.cvp
  vars:
    # Configlet definition
    device_configuration:
      mlag-01a-config: "{{lookup('file', './config-router-mlag01a.conf')}}"
      mlag-01b-config: "{{lookup('file', './config-router-mlag01b.conf')}}"

    # Container definition
    containers_provision:
        Fabric:
          parentContainerName: Tenant
        Spines:
          parentContainerName: Fabric
        Leaves:
          parentContainerName: Fabric
          configlets:
              - alias
        MLAG01:
          parentContainerName: Leaves

    # Device definition
    devices_provision:
      - fqdn: mlag-01a
        parentContainerName: 'MLAG01'
        configlets:
            - 'mlag-01a-config'
        systemMacAddress: '50:8d:00:e3:78:aa'
      - fqdn: mlag-01b
        parentContainerName: 'MLAG01'
        configlets:
            - 'mlag-01b-config'
        systemMacAddress: '50:8d:00:e3:78:bb'

  tasks:
    - name: "Build Container topology on {{inventory_hostname}}"
      arista.cvp.cv_container_v3:
        topology: '{{containers_provision}}'

    - name: "Configure devices on {{inventory_hostname}}"
      arista.cvp.cv_device_v3:
        devices: '{{devices_provision}}'

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]
cv_server  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.

Installation

Complete installation process is available on repository website

Dependencies

This collection requires the following to be installed on the Ansible control machine:

Ansible version:

  • ansible >= 2.9.0

3rd party Python libraries:

  • cvprac version 1.0.5
  • requests >= 2.22.0
  • jsonschema 3.2.0
  • treelib 1.5.5 (for modules in version 1)

Installation from ansible-galaxy

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'

Git installation as source of collection

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.

Docker for testing

In an effort to support both arista.avd and arista.cvp collections, you can find a generic docker image in this repository.

Besides this image, a repository with some basic labs to use as part of a TOI are available in this repository

Resources

Ask a question

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.

Branching Model

  • The devel branch corresponds to the release actively under development.
  • The releases/x.x.x branches correspond to stable releases.
  • Fork repository and create a branch based on devel to set up a dev environment if you want to open a PR.
  • See the ansible-cvp release for information about active branches.

License

Project is published under Apache 2.0 License

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.