ansible
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| ansible [2016/06/12 14:00] – [Création d'un fichier hosts] cecile | ansible [2024/06/13 18:54] (Version actuelle) – changement section vraiment utile en example utile gde | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| =====Préambule===== | =====Préambule===== | ||
| + | Ansible est un outil permettant d' | ||
| + | Pour cela, il faut : | ||
| * une machine de contrôle (ex: laptop) | * une machine de contrôle (ex: laptop) | ||
| * une machine à configurer (ex: serveur) | * une machine à configurer (ex: serveur) | ||
| + | Remarque : la machine de contrôle peut être la machine à configurer | ||
| =====Installation d' | =====Installation d' | ||
| Ligne 22: | Ligne 24: | ||
| * python-dev | * python-dev | ||
| * libffi-dev | * libffi-dev | ||
| + | * libssl-dev | ||
| * ou tout autre paquet manquant mentionné par pip durant l' | * ou tout autre paquet manquant mentionné par pip durant l' | ||
| - | =====Installation des dépendances (sur la machine à controller)===== | + | =====Installation des dépendances (sur la machine à contrôler)===== |
| * Sur la machine distante, il y a quelques dépendances à installer, mais pas Ansible: | * Sur la machine distante, il y a quelques dépendances à installer, mais pas Ansible: | ||
| Ligne 48: | Ligne 51: | ||
| Le fichier hosts situé dans le dossier /etc n'est pas à utiliser pour répertorier les machines. | Le fichier hosts situé dans le dossier /etc n'est pas à utiliser pour répertorier les machines. | ||
| Il est préférable de créer ses propres fichiers de configuration. Par exemple, pour distinguer un fichier host avec les machines de test, et un fichier host avec les machines de prod. | Il est préférable de créer ses propres fichiers de configuration. Par exemple, pour distinguer un fichier host avec les machines de test, et un fichier host avec les machines de prod. | ||
| + | |||
| + | =====Utilisation de la commande ansible (commandes ad-hoc)===== | ||
| + | |||
| + | On peut ensuite demander à ansible d' | ||
| + | < | ||
| + | ansible -i ./ | ||
| + | |||
| + | ansible […] -m apt -a " | ||
| + | </ | ||
| + | |||
| + | |||
| + | Si on veut voir tous les arguments possibles, on lit LA DOC http:// | ||
| + | ou via la commande : < | ||
| + | |||
| + | |||
| + | Si on ne se connecte pas en root, | ||
| + | |||
| + | * si on utilise su, on ajoute < | ||
| + | * si on utilise sudo, on ajoute < | ||
| + | |||
| + | Si l'on souhaite que ansible demande le mot de passe ssh (dans le cas ou la clé publique n'est pas présent sur le serveur distant), on peut ajouter l' | ||
| + | |||
| + | Super astuce, pour mettre à jour un paquet sur plein de machines (ex: erreur de sécu sur apache) : < | ||
| + | |||
| + | =====Les playbooks===== | ||
| + | |||
| + | Documentation officielle : https:// | ||
| + | |||
| + | Le playbook permet de réunir les tâches de configuration au sein d'un fichier. | ||
| + | |||
| + | |||
| + | Exemple simple (fichier nommé playbook-test.yml). | ||
| + | < | ||
| + | - hosts: mamachine.example.com | ||
| + | tasks: | ||
| + | - ping: | ||
| + | </ | ||
| + | |||
| + | Pour l' | ||
| + | |||
| + | En pratique, on définit une liste de tasks : | ||
| + | < | ||
| + | - hosts: mamachine.example.com | ||
| + | tasks: | ||
| + | - <nom module>: arg1=val1 arg2=val2 | ||
| + | - <nom module>: arg=val | ||
| + | </ | ||
| + | |||
| + | Et mieux : on ajoute un commentaire à chaque task (via la ligne name) : | ||
| + | < | ||
| + | - hosts: mamachine.example.com | ||
| + | tasks: | ||
| + | - name: Réalise un arc-en-ciel magique | ||
| + | rainbow: color=purple duration=42 | ||
| + | - name: Vérifie que le magicien est réveillé | ||
| + | wizard: state=up name=merlin | ||
| + | </ | ||
| + | |||
| + | Problème : pour créer des arc-en ciels magique, il faut avoir les droits root, on modifie donc : | ||
| + | < | ||
| + | - hosts: mamachine.example.com | ||
| + | tasks: | ||
| + | - name: Réalise un arc-en-ciel magique | ||
| + | become: yes | ||
| + | rainbow: color=purple duration=42 | ||
| + | - name: Vérifie que le magicien est réveillé | ||
| + | wizard: state=up name=merlin | ||
| + | </ | ||
| + | |||
| + | et dans la ligne de commande ansible-playbook, | ||
| + | |||
| + | **Exercice 1 :** | ||
| + | |||
| + | Faire un playbook pour la machine de test qui fait : | ||
| + | |||
| + | * vérifier que cowsay est désinstallé (module apt) | ||
| + | * créer un utilisateur unix nommé " | ||
| + | |||
| + | Documentation : http:// | ||
| + | |||
| + | |||
| + | **Exercice 2 :** | ||
| + | |||
| + | Le fichier motd contient le message de bienvenue pour un utilisateur qui se connecte sur la machine. | ||
| + | |||
| + | * Ajouter une task qui renseigne /etc/motd avec le contenu suivant : Bienvenue sur cette machine cher humain. | ||
| + | * Indice : la démarche est de demander à Ansible de copier un fichier local vers la machine à configurer | ||
| + | * Indice : débrouillez-vous pour trouver quel module utiliser <3 (vérifier en se connectant en SSH) | ||
| + | |||
| + | ====Les variables==== | ||
| + | |||
| + | On veut désormais afficher un nom dans le message d' | ||
| + | |||
| + | On avait une section tasks, on va ajouter une sections vars, et on va appeller la variable grace à la syntaxe " | ||
| + | |||
| + | < | ||
| + | - hosts: mamachine.example.com | ||
| + | vars: | ||
| + | - wizard_name: | ||
| + | - rainbow_duration: | ||
| + | tasks: | ||
| + | - name: Réalise un arc-en-ciel magique | ||
| + | rainbow: color=purple duration=" | ||
| + | - name: Vérifie que le magicien est réveillé | ||
| + | wizard: state=up name=" | ||
| + | </ | ||
| + | |||
| + | Note : les moustaches correspondent à la syntaxe de jinja2, cf http:// | ||
| + | |||
| + | Exercice : En reprenant l' | ||
| + | |||
| + | ====Les templates==== | ||
| + | |||
| + | On peut aussi utiliser des variables dans les fichiers qu'on copie (module copy de l' | ||
| + | |||
| + | Documentation : http:// | ||
| + | |||
| + | Exercice : Reprendre l' | ||
| + | |||
| + | ====Les " | ||
| + | |||
| + | Une partie des variables sont pré-définies par ansible, elle s' | ||
| + | |||
| + | La liste est ici : http:// | ||
| + | |||
| + | Exercice: indiquer l' | ||
| + | |||
| + | |||
| + | =====Commandes utiles===== | ||
| + | |||
| + | < | ||
| + | ansible-playbook --ask-become-pass --check --diff -l slash.faimaison.net -t celutz, | ||
| + | </ | ||
| + | * Demande le mot de passe du host : < | ||
| + | * Limite le déploiement au host renseigné : < | ||
| + | * Concerne les tags renseignés : < | ||
| + | |||
| + | ====Options utiles==== | ||
| + | |||
| + | * Tester le playbook : < | ||
| + | * Lancer étape par étape de manière à choisir d' | ||
| + | * Démarrer sur une tâche précise : < | ||
| + | |||
| + | |||
| + | Voici un autre exemple pour commencer: | ||
| + | [[ansible: | ||
| + | |||
| + | ==== example utile ==== | ||
| + | |||
| + | l' | ||
| + | --limit pour préciser un serveur spécifique (-l est la forme diminué). | ||
| + | |||
| + | < | ||
| + | |||
ansible.1465740018.txt.gz · Dernière modification : 2016/06/12 14:00 de cecile
