TP 11 : Arista vEOS – Administration Cloud Networking

Module : 3 – Standards industriels (YANG) et approche Cloud/SDN Durée indicative : 2h Prérequis : partie théorique du Module 3, une VM Arista vEOS accessible, Python 3, pip install pyeapi

Objectifs

  • Prendre en main l’interface JSON-RPC HTTPS (eAPI) d’Arista.
  • Automatiser une petite fabric réseau avec la bibliothèque officielle pyeapi.
  • Comparer eAPI (JSON-RPC) aux approches YANG/NETCONF/RESTCONF vues avec Cisco.

Contexte

Vous administrez deux commutateurs Arista vEOS simulant une fabric simple (spine-leaf réduite à 2 nœuds) pour illustrer l’automatisation « cloud networking ».

Topologie switch1/switch2 : plan management vs lien data Topologie switch1/switch2 : plan management vs lien data Le plan management (eAPI, en pointillé) est distinct du lien data point-à-point entre les deux switches.

Étape 1 – Activation d’eAPI

Sur chaque vEOS :

enable
configure terminal
management api http-commands
   no shutdown
   protocol https
end
username api-user privilege 15 secret VotreMotDePasse

Étape 2 – Premier appel brut (JSON-RPC)

import requests

URL = "https://192.168.1.101/command-api"
AUTH = ("api-user", "VotreMotDePasse")

payload = {
    "jsonrpc": "2.0",
    "method": "runCmds",
    "params": {
        "version": 1,
        "cmds": ["show version"],
        "format": "json"
    },
    "id": 1
}
resp = requests.post(URL, json=payload, auth=AUTH, verify=False, timeout=5)
resp.raise_for_status()
print(resp.json())

Étape 3 – Utilisation de pyeapi

Fichier ~/.eapi.conf :

[connection:switch1]
host: 192.168.1.101
username: api-user
password: VotreMotDePasse
transport: https

[connection:switch2]
host: 192.168.1.102
username: api-user
password: VotreMotDePasse
transport: https
import pyeapi

switch1 = pyeapi.connect_to("switch1")
print(switch1.enable("show version"))

Étape 4 – Configuration d’interfaces via pyeapi

switch1.config([
    "interface Ethernet1",
    "no switchport",
    "ip address 10.10.12.1/30"
])

Faites de même sur switch2 avec l’adresse 10.10.12.2/30, puis vérifiez la connectivité :

result = switch1.enable("ping 10.10.12.2")
print(result)

Étape 5 – Automatisation multi-équipements

Écrivez un script configure_fabric.py qui, à partir d’une structure Python décrivant plusieurs switches (nom, IP de management, interfaces à configurer), applique la configuration à chaque équipement en boucle en utilisant pyeapi.connect_to.

Étape 6 – Comparaison des trois approches du module

Rédigez une synthèse (10-15 lignes) comparant, à partir des TP 9, 10 et 11 :

  • la structure des échanges (YANG/XML pour NETCONF, YANG/JSON pour RESTCONF, JSON-RPC libre pour eAPI),
  • la présence ou non d’un modèle de données standardisé,
  • la facilité d’automatisation multi-équipements avec chaque approche.

Rendu attendu

  • Scripts Python (appel brut + pyeapi) versionnés.
  • Le fichier configure_fabric.py.
  • La synthèse comparative NETCONF / RESTCONF / eAPI.

Points de vérification

  • Les deux switches se pinguent mutuellement après configuration.
  • configure_fabric.py fonctionne pour au moins deux équipements décrits en Python.
  • La synthèse aborde bien les trois axes demandés.