Au fil des flows

28fév/150

Utiliser forward_agent avec Vagrant sous Windows

Posted by Fabien Arcellier

Je souhaitai aller plus loin avec Ansible. J'ai voulu émuler une infrastructure avec plus de machines. Je suis reparti d'un couple de VM dédié à la supervision applicative.

Supervision

La première machine utilise apache pour héberger une application web. Celle-ci envoie des statistiques d'usage en utilisant un agent StatsD vers la machine de supervision qui héberge une instance de Graphite.

Dans Ansible, j'ai un inventaire avec 2 hosts et 2 groupes. Je souhaite que ces machines soient déployés par ssh comme je le ferai sur l'infrastructure réel.

deploiement

Deployer depuis l'usine de deploiement

Pour vous connecter à votre hôte "Usine de déploiement", vous tapez depuis une console powershell :

vagrant ssh

Une fois sur la machine de déploiement, vous ne pouvez pas vous connecter sur les 2 autres machines par SSH. Celle-ci vous demande un mot de passe pour le compte vagrant.

Par défaut, sur les vm instanciés par vagrant, l'authentification par mot de passe est désactivé.

vagrant_password

Plusieurs solutions :

  • Activer l'authentification par mot de passe
  • Deployer une clé ssh sur la vm "Usine de déploiement" et ajouter les clés publiques sur les 2 autres machines
  • Utiliser le mode agent fowarding avec SSH

La première solution n'est pas recommandée. Pour qu'elle fonctionne, vous devrez avoir les mots de passes dans les fichiers d'inventaire de Ansible.
La seconde solution est peu pratique. Elle oblige à laisser une clé privée sur un serveur distant. Ce n'est pas recommandé.

Je trouve la 3ème solution bien plus élégante. Elle demande un peu de préparation sous Windows.

Utiliser le mode forward agent de ssh

Pour passer outre ce problème, vous devez avoir un ssh-agent qui tourne sur votre machine. Je ne connais pas de possibilité d'exécuter ssh-agent depuis Powershell. Vous allez devoir utiliser cygwin ou git-bash.

Ces 2 shells tournent bien avec le terminal ConEmu sous Windows.

Il vous suffit de taper ces 3 lignes de commandes :

eval `ssh-agent`
ssh-add
ssh-add ~/.vagrant.d/insecure_private_key

Quand vagrant crée une machine virtuelle, il emploie par défaut une clé ssh qui se trouve dans le dossier ~/.vagrant.d/insecure_private_key.

Pour éviter de les taper à chaque lancement, vous pouvez placer ces lignes dans un script .bashrc de votre dossier utilisateur.

A partir de là, quand vous taperez :

vagrant ssh

puis une fois sur votre vm :

ssh 192.168.33.11

Vous n'aurez pas besoin de vous authentifier. Il devient très simple d'effectuer votre déploiement à l'aide de Ansible.

Remplis sous: Non classé Aucun commentaire