Arista et automatisation Ansible

Dernière modification le 4 avril 2020

Les modules officiels Arista EOS sont intégrés dans les Network Modules natifs et supportés par la Network Team d’Ansible.

Network Modules natifs Ansible :

  • eos_banner – Manage multiline banners on Arista EOS devices
  • eos_bgp – Configure global BGP protocol settings on Arista EOS
  • eos_command – Run arbitrary commands on an Arista EOS device
  • eos_config – Manage Arista EOS configuration sections
  • eos_eapi – Manage and configure Arista EOS eAPI
  • eos_facts – Collect facts from remote devices running Arista EOS
  • eos_interfaces – Manages interface attributes of Arista EOS interfaces
  • eos_l2_interfaces – Manages Layer-2 interface attributes of Arista EOS devices
  • eos_l3_interfaces – Manages L3 interface attributes of Arista EOS devices
  • eos_lacp – Manage Global Link Aggregation Control Protocol (LACP) on Arista EOS devices
  • eos_lacp_interfaces – Manage Link Aggregation Control Protocol (LACP) attributes of interfaces on Arista EOS devices
  • eos_lag_interfaces – Manages link aggregation groups on Arista EOS devices
  • eos_lldp – Manage LLDP configuration on Arista EOS network devices
  • eos_lldp_global – Manage Global Link Layer Discovery Protocol (LLDP) settings on Arista EOS devices
  • eos_lldp_interfaces – Manage Link Layer Discovery Protocol (LLDP) attributes of interfaces on Arista EOS devices
  • eos_logging – Manage logging on network devices
  • eos_static_route – Manage static IP routes on Arista EOS network devices
  • eos_system – Manage the system attributes on Arista EOS devices
  • eos_user – Manage the collection of local users on EOS devices
  • eos_vlans – Manage VLANs on Arista EOS devices
  • eos_vrf – Manage VRFs on Arista EOS network devices

Il existe deux façons de se connecter à un équipement Arista avec Ansible : en utilisant le CLI sur SSH ou en utilisant eAPI sur HTTP(S). L’utilisation de SSH fait appel au paramètre ansible_connection: network_cli, alors que l’utilisation de HTTP(S) utilise ansible_connection: httpapi ou ansible_connection: local avec transport: eapi dans le dictionnaire provider.

Il faut noter que tous les modules ne sont pas supportés par tous les modes de connexions.

Pour continuer à surfer sur eAPI, nous allons commencer par utiliser les deux types de syntaxes nécessaires à ce type de connexion.

[defaults]
inventory = ./hosts
host_key_checking = False
roles_path = roles.galaxy:roles
stdout_callback = yaml
[arista]
ceos1 ansible_host=127.0.0.1 ansible_port=4443

[arista:vars]
ansible_network_os='eos'
---
arista_credentials:
  transport: 'eapi'
  validate_certs: 'false'
  host: "{{ ansible_host }}"
  port: "{{ ansible_port }}"
  username: 'admin'
  password: 'arista'
  timeout: '10'
---
- name: Run commands on remote cEOS-lab device
  hosts: arista
  connection: local
  gather_facts: no
  vars:
    ansible_python_interpreter: "python"
  tasks:
    - name: Execute Arista EOS command
      eos_command:
        provider: "{{ arista_credentials }}"
        commands: show version
      when: ansible_network_os == 'eos'
      register: version
    - name: Display result
      debug:
        msg: "{{ version.stdout[0] }}"
Ansible Arista eAPI
Méthode connection local
[defaults]
inventory = ./hosts
host_key_checking = False
roles_path = roles.galaxy:roles
stdout_callback = yaml
[arista]
ceos1 ansible_host=127.0.0.1 ansible_httpapi_port=4443


[arista:vars]
ansible_network_os='eos'
ansible_httpapi_use_ssl='yes'
ansible_httpapi_validate_certs='no'
ansible_user='admin'
ansible_httpapi_password='arista'
---
- name: Run commands on remote cEOS-lab device
  hosts: arista
  connection: httpapi
  gather_facts: no
  vars:
    ansible_python_interpreter: "python"
  tasks:
    - name: Execute Arista EOS command
      eos_command:
        commands: show version
      when: ansible_network_os == 'eos'
      register: version
    - name: Display result
      debug:
        msg: "{{ version.stdout[0] }}"
Ansible hhtpapi
Méthode connection httpapi

Pour utiliser la méthode mettant en oeuvre le CLI sur SSH, voici une proposition de syntaxe.

# connexion par login/password à la place d'une clé SSH
ansible-playbook -u admin -k get-version.yml
[defaults]
inventory = ./hosts
host_key_checking = False
roles_path = roles.galaxy:roles
stdout_callback = yaml
[arista]
ceos1 ansible_host=127.0.0.1 ansible_port=2000

[arista:vars]
ansible_network_os='eos'
---
- name: Run commands on remote cEOS-lab device
  hosts: arista
  connection: network_cli
  gather_facts: no
  vars:
    ansible_python_interpreter: "python"
  tasks:
    - name: Execute Arista EOS command
      eos_command:
        commands: show version
      when: ansible_network_os == 'eos'
      register: version
    - name: Display result
      debug:
        msg: "{{ version.stdout[0] }}"
Ansible Arista CLI
Méthode connection network_cli

Une réponse sur “Arista et automatisation Ansible”

Les commentaires sont fermés.