====== 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