Comme annoncé, nous allons commencer tout petit : nous sommes sur une session Unix et notre but est d’exécuter la commande « show clock » en pilotant à distance un équipement Cisco. Si vous disposez d’un autre équipement (voir en fin de chapitre), vous pouvez évidemment substituer le show clock par toute autre commande brève.

En automatisation, une bonne habitude est de faire le travail au moins une fois à la main. Aussi, nous nous plaçons sur notre station linux et exécutons les commandes suivantes :

$ ssh -l cisco 10.0.0.230
Warning: Permanently added '10.0.0.230' (RSA) to the list of known hosts.
Password:

csrv1k-230#show clock
*15:29:59.820 UTC Tue May 26 2020
csrv1k-230#
csrv1k-230#exit
Connection to 10.0.0.230 closed.
$

Arrêtons-nous quelques instants sur cette requête de routine pour tout expert réseau. Nous avons eu à fournir les données suivantes :

donnéedescription
10.0.0.230L’adresse IP de mon routeur
show clockLa commande à exécuter (bon là je ne vous apprends rien)
ciscoLe compte utilisé
ciscoLe password

Nous avons aussi reçu une notification du système sur l’échange des clefs publiques via la session SSH.

Evidemment, toutes ces informations devront être passées en paramètre à Ansible (et non, il ne les devine pas encore tout seul !).

Installer ansible

Je vais passer rapidement sur l’installation d’Ansible, car cette partie est très bien documentée par ailleurs, et, à part peut-être montrer comment installer une version spécifique, ma valeur ajoutée devrait être faible.

L’installation

Il faut disposer a minima d’un linux en mode serveur. Si vous ne pouvez pas installer une VM sous vmWare, une excellente alternative est d’installer VirtualBox sur un PC Windows ou sur un MacBook et de créer sa VM sous VirtualBox. Pour des tests, un système avec 2gb de RAM et 10Gb de disque suffit amplement. Attention de sélectionner un réseau en mode pont (Bridged Adapter), plutôt que NAT.

Par fainéantise habitude, j’utilise la distribution debian, mais ubuntu convient également et CentOS est probablement le meilleur choix, puisque Ansible, comme CentOS sont maintenus par la même société.

Une fois connecté sur la VM, on lance l’installation :

$ apt-get install ansible

Ou

$ yum install ansible

Cette procédure prend en charge l’installation de plusieurs applications :

application
pythonlangage de programmation de Ansible
piputilitaire de mise à jour des librairies python
jinja2un langage de templating codé en python
ansibleça c’est ce qu’on voulait
modules standard d’ansibleUne collection de modules

La mise à jour

La version installée d’Ansible dépend de la distribution linux installée. On le vérifie en tapant :

$ ansible --version

L’utilisation du module cli_command nécessite la version 2.5. Si le package installé est inférieur, on procède à un upgrade via pip :

$ pip install –upgrade "ansible==2.7.8"

Ma toute première commande

La commande à exécuter est la suivante :

$ ansible all --inventory="csrv1k-230," --module-name=raw --args="show clock" \
 --extra-vars="ansible_host=10.0.0.230 ansible_user=cisco ansible_ssh_pass=cisco" \
 --ssh-extra-args="-o StrictHostKeyChecking=no"

Bien entendu, l’adresse IP du routeur doit être changée, ainsi qu’éventuellement l’authentification SSH.

On fera aussi bien attention à la virgule qui termine le paramètre inventory.

screenshot001

Nous pouvons également lancer cette même commande en mode verbose, en ajoutant l’argument –vvv :

screenshot002

Nous voyons bien notre commande exécutée correctement même si la mise en forme de la réponse nous déçoit un peu.

Nous y reviendrons bien sûr sur la forme. Mais l’objectif de la semaine prochaine est d’apprendre à lancer cette commande sur plusieurs équipements.

Pour ceux qui n’ont pas de routeurs Cisco sous la main

Eventuellement, il est possible d’utiliser une VM VyOS. L’installation et la configuration initiale sont plutôt bien décrites ici : https://www.tech2tech.fr/installation-dun-routeur-virtuel-leger-avec-vyos/. Pensez à toujours configurer le réseau virtuel en mode pont et non NAT.

La commande ansible devient du type :

$ ansible all --inventory="my_vyos," --module-name=raw --args="vbash -ic 'show date'" \
--extra-vars="ansible_host=10.0.0.230 ansible_user=vyos ansible_ssh_pass=vyos" \
--ssh-extra-args="-o StrictHostKeyChecking=no"
https://www.tech2tech.fr/installation-dun-routeur-virtuel-leger-avec-vyos/
Author

Philippe est architecte réseau chez un opérateur depuis 20 ans. Il a le double rôle de concevoir des réseaux pour les clients, puis de les faire fonctionner. Bien que passionné par l'innovation, il reste un fervent supporter de la RFC 1925 et garde tout son sens critique par rapport au hype et aux promesses féeriques des constructeurs. Ancien développeur, il tente de garder la main en programmant des Arduino en C ou des utilitaires opensource en Ruby. On peut également le croiser en randonnée dans les collines ou dans un club de bridge.

2 Comments

  1. Bonjour Philippe,

    Tout d’abord merci pour le poste, mais je reste sur ma faim quant à l’apprentissage d’ansible prônait.

    J’espère avoir au moins une explication sur les lignes ansible happées afin de faciliter la compréhension.

    Parce que là je t’avoue on voit des lignes de commandes ansible et in résultats ! Pour faire simple et juste je n’ai rien apprit.

    • Philippe Jounin Reply

      Bonjour,

      Merci pour ce commentaire. On va y arriver, mais en douceur: j’ai prévu 6 « journées » et 2 « interludes ». Il reste donc encore 7 articles avant d’arriver au bout de la découverte d’Ansible… Ma méthode, c’est de vous placer d’abord dans le bon état d’esprit pour que vous soyez réceptif à ce qui va suivre et de conserver les lecteurs qui sont juste curieux. J’ai conscience qu’elle ne convient pas à tout le monde, en particulier si tu t’es fixé l’objectif de tout savoir rapidement.

Write A Comment