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] }}"
[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] }}"
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] }}"
Une réponse sur “Arista et automatisation Ansible”
Les commentaires sont fermés.