Switch virtuel Arista cEOS-lab

cEOS-lab est une version conteneurisée de vEOS-lab avec les mêmes limitations fonctionnelles liées au fait que certaines fonctions EOS s’appuient directement sur les capacités des ASICs. Comparé à vEOS-lab, cEOS-lab présente tous les avantages d’un conteneur, comme une empreinte beaucoup plus légère d’environ 470 Mo de RAM par périphérique à sa création, une taille d’image plus petite et une plus grande portabilité.

Le test est lancé nativement sur mon MacBook Pro avec Docker Desktop 2.2.0.3 et Docker Engine 19.03.5.

# importer l'image cEOS-lab tar.xz
docker import cEOS-lab-4.23.2F.tar.xz ceosimage:4.23.2F

# créer une instance Docker avec les variables d'environnement nécessaires
docker create --name=ceos1 --privileged -e INTFTYPE=eth -e ETBA=1 -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e CEOS=1 -e EOS_PLATFORM=ceoslab -e container=docker -p 2000:22/tcp -i -t ceosimage:4.23.2F /sbin/init systemd.setenv=INTFTYPE=eth systemd.setenv=ETBA=1 systemd.setenv=SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 systemd.setenv=CEOS=1 systemd.setenv=EOS_PLATFORM=ceoslab systemd.setenv=container=docker

Les options utilisées ont les significations suivantes :

  • –name=ceos1
    Il s’agit d’un flag Docker qui permet de créer le conteneur avec le nom ceos1.
  • –privileged
    Il s’agit d’un flag Docker qui lance le conteneur en mode privilégié.
  • -e INTFTYPE=eth
    Il s’agit d’un flag cEOS qui indique à l’OS de libeller les interfaces avec eth.
  • -e ETBA=1
    Il s’agit d’un flag cEOS qui indique à EOS d’utiliser un Data Plane basé sur du logiciel.
  • -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1
    Il s’agit d’un flag cEOS qui indique à EOS de ne pas lancer le ZTP au boot.
  • -e CEOS=1
    Il s’agit d’un flag cEOS qui indique à EOS qu’il s’agit de cEOS et non d’un EOS classique.
  • -e EOS_PLATFORM=ceoslab
    Il s’agit d’un flag cEOS qui indique le type de plateforme. La valeur de ce flag a changé avec les versions.
  • -e container=docker
    Il s’agit d’un flag cEOS qui indique qu’il s’agit d’un conteneur Docker, car il en existe d’autres types.
  • -p 2000:22/tcp
    Il s’agit d’un flag Docker qui expose le port 22 pour être utilisé par SSH, sachant qu’on pourrait exposer aussi le port 443 pour l’utiliser avec eAPI.
  • -i -t ceosimage:4.23.2F
    Il s’agit d’un flag Docker pour indiquer l’image à utiliser.
  • /sbin/init
    Il s’agit d’un flag Docker qui indique la commande à utiliser pour lancer le conteneur, en lui associant les paramètres d’environnements nécessaires.
# créer les réseaux Docker
docker network create net1
docker network create net2

# connecter l'instance Docker aux réseaux
docker network connect net1 ceos1
docker network connect net2 ceos1

# démarrer l'instance
docker start ceos1

# attendre le démarrage de tous les agents EOS
# se connecter au CLI de l'instance ceos1
/Users/gmoisio/Projects $ docker exec -it ceos1 Cli
localhost>enable
Docker cEOS-lab
Démarrage de l’instance en à peine plus de 33 secondes
cEOS-lab
Interfaces telles que créées avec Docker

La connexion à docker0 est créée par défaut lorsqu’aucun paramètre réseau n’est spécifié dans docker create. L’interface Ethernet0 ne peut pas être utilisée et n’est pas disponible à l’intérieur du shell Cli.

cEOS-lab interfaces

Il est tout à fait possible de lancer une autre instance de cEOS-lab et de la connecter sur les mêmes réseaux Docker que la première instance pour les lier ensemble.

Une fois la ou les instances lancées, il est possible de manipuler l’interface d’administration du switch et de tester des scripts d’automatisation en utilisant le port qui a été exposé lors de la création de l’instance.

localhost>enable
localhost#configure
localhost(config)#username admin secret arista
localhost(config)#end
localhost#write memory

/Users/gmoisio/Projects $ ssh admin@127.0.0.1 -p 2000

Pour créer des topologies plus complexes avec cEOS-lab, il est préconisé d’utiliser directement les APIs de Docker avec Python afin de construire un orchestrateur déterministe, plutôt que de tenter d’utiliser docker-compose ou Kubernetes.

Une réponse sur “Switch virtuel Arista cEOS-lab”

Les commentaires sont fermés.