====== Ansible : outil d'automatisation ====== === Contributeurs === (SISR2-2016) Anthony Varin, Alexandre Saligny === Mise a jour === par Valentin Pepin, Benjamin Hohn (SISR2-2020) Ansible est un outil d'automatisation de tâches (déploiement de logiciels et mise à jours) ===== Prérequis ===== Outils: * Machine sous **Debian** avec le paquet **[[ssh|ssh]]** installé pour pouvoir gérer l'établissement d'une connexion distante récurrente * Cibles avec [[ssh|ssh]] accessible en root Remarque: * la version de **Ansible** décrite dans la procédure est la version **1.7**. Certains éléments sont à modifier pour des versions supérieures. ===== Procédures ===== ==== Installation de Ansible ==== - Ajouter le dépôt correspondant et la clé pour **//apt//** : echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" >> /etc/apt/sources.list apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 - Mettre à jour APT : apt update - Installation du paquet **Ansible** apt install ansible ==== Configuration des Hôtes ==== Pour enregistrer les différente machine cible (hôte) on modifie le fichier **/etc/ansible/hosts** en ajoutant a la fin du fichier les adresse IP ou les FQDN des hôtes, rassemblés par [groupes] : # This is the default ansible 'hosts' file. # # It should live in /etc/ansible/hosts ... # - A hostname/ip can be a member of multiple groups # Ex 1: Ungrouped hosts, specify before any group headers. #green.example.com ... #db-[99:101]-node.example.com [nom du groupe] ip machine ip machine Une machine peut apparaître dans plusieurs [groupes]. === Échanges de clés SSH === Pour pouvoir entrer en contact avec les hôtes cible, on établira une connexion récurrente grâce à SSH : - Créer une clé privée/publique sur le serveur Ansible ssh-keygen –t {rsa|dsa} [-b ] * choisir le type de chiffrement de la clé : RSA ou DSA * est une puissance de 2 précisant la complexité de la clé (1024, 2048, etc) - Echanger la clé publique avec les hôtes cible : ssh-copy-id -i @ * la clé publique générée par //ssh-keygen// se trouve par défaut dans **// /root/.ssh/ //** sous le nom **//id_rsa.pub//**. * Si vous arrivez pas à accéder au serveur cible faite **// nano /etc/ssh/sshd_config //** Chercher la ligne **// PermitRootLogin //** puis dé-commenter mettre **// yes //** a la fin de la ligne, puis réessayer. ==== Test de connexion ==== Pour tester la connexion entre ansible et les machines cibles on utilise la commande: ansible all -m ping -u Si la communication est établie, on obtient: ipmachine | success >> { "changed": false, "ping": "pong" } ===== Playbook ===== ==== Création d'un script ==== Il faut créer un dossier **playbook** dans le dossier **/etc/ansible** pour pouvoir stocker un script __Structure d'un script__ Crée un fichier YAML **.yml** - hosts: become: yes become_method: sudo tasks: - name: mise a jour des serveurs apt: update_cache=yes ====Création fichier crypte==== Dans cette version, il faudra : * disposer l'éditeur de texte **vim** (à installer éventuellement) * le mot de passe pour basculer en //sudo// sur la machine distante --> soit //mpsudo// cette valeur * le mot de passe pour décrypter le fichier sécurisé --> soit //mpcrypt// cette valeur Procédure : 1. Créer un fichier crypté stockant le mot de passe mpsudo