Critique d'Ansible, après 1 an d'utilisation

  • Ansible est un système qui fonctionne correctement dans le cadre de l'administration système. Les machines cibles sont généralement assez rapides pour que tout se passe sans timeout !
  • En ce qui concerne l'accès aux machines virtuelles des élèves, sur des hôtes "core2 duo", j'ai eu de nombreux problèmes de rapidité (et donc de stabilité). La chaine logicielle d'Ansible est trop lourde : BASH, SSH, PYTHON sur Linux, et c'est encore pire sur les postes Windows avec WinRM et Powershell.

Simplification

  • En utilisant des scripts BASH et SSH, il est possible de reproduire le comportement d'Ansible (sans les playbooks YAML).
  • Pour Windows, l'utilisation d'un serveur SSHD basé sur cygwin (à la place, ou avec WinRM) permet un accès au moins 10 fois plus rapide à "cmd". Le powershell reste long à lancer.

Installation des scripts "aelv" sur un serveur sous Linux

  • J'utilise une machine Ubuntu 16.04 32 bits virtuelle.
  • Créez les nouveaux dossier "/aelv" et "/aelv/.ssh"
  • Créez un certificat avec la commande :
ssh-keygen -t rsa -b 20148 -N '' -f /aelv/.ssh/ansible
  • Téléchargez l'archive aelv.tgz , puis décompressez son contenu.
  • Copiez le fichier "hosts" et les scripts "aelvMyans aelvScpPut aelvScpGet" dans le dossier "/aelv" . Les scripts doivent bien sur être executables. Le fichier hosts doit être en lecture seule.
  • C'est tout !

Installation de cygwin sur un client Windows

  • Utilisez le compte "Administrateur" de Windows. Le compte doit être débloqué.
  • Récupérez le programme d'installation de cygwin sur leur site web : https://www.cygwin.com

1ère étape

  • Créez sur Windows un nouveau dossier "C:\Programmes\Cygwin Install"
  • Copiez le programme d'installation de cygwin dans le nouveau dossier
  • A partir du nouveau dossier, lancez le programme d'installation de cygwin
  • Choisir "install par internet" :
    • Si la liste des dépots n'apparait pas, utilisez "http://mirror.koddos.net/cygwin"
    • Ajout du package "nano" dans "Editor"
    • Ajout du package "openssh" dans "Net"
  • L'installation se termine

2ème étape

  • Dans une console cygwin, lancez la commande "ssh-host-config" et répondez aux questions :
    • Should Strict Modes be used ?     YES
    • New Local Account 'sshd' ?     YES
    • Do you want to install sshd as a service ?     YES
    • Enter the value of cygwin for daemon : []     ENTER (vide)
    • Do you want to use a different name ?     NO
    • Create new privileged user account ?    YES
    • Please enter password :    (un mot de passe uniquement pour le service - inutilisé ensuite)

3ème étape

  • Dans une console cygwin, lancez la commande "ssh-user-config" et répondez aux questions :
    • Shall i create a ssh2 RSA identity file for you ?     YES
    • Enter passphrase :     (rien)
    • Enter same passphrase again :     (rien)
    • Do you want to use this identity to login to this machine ?     YES
    • Shall i create a ssh2 DSA identity file for you ?     NO
    • Shall i create a ssh2 ECDSA identity file for you ?     NO
    • Shall i create a ssh1 RSA identity file for you ?     NO

4ème étape

  • Il faut créer une nouvelle règle dans le firewall de Windows (parametres avancés)
  • Règle de trafic entrant
  • Nouvelle règle :
    • PORT
    • TCP
    • 22
  • Autoriser la connexion :
    • Domaine
    • Privé
    • Public
  • Donnez un nom : "Cygwin SSHD"
  • Il est maintenant possible de lancer le service avec la commande "net start sshd"
  • Récupérez l'adresse IP de Windows.

5ème étape

  • A partir de la machine "Ansible" sous linux, ajoutez le certificat vers Windows :
ssh-copy-id -i /aelv/.ssh/ansible Administrateur@ipDeWindows

Exemple d'utilisation

  • Dans le fichier /aelv/hosts , ajoutez une ligne qui décrit la machine. Il est possible de commenter en ajoutant un # en début de ligne.
  • Le module ping est semblable à celui d'Ansible : il réalise une connexion par SSH et vérifie que la cible répond :
aelvMyans -c idMachine -m ping