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édenteProchaine révisionLes deux révisions suivantes | ||
ansible [2016/06/12 13:54] – [Installation d'Ansible (sur la machine de contrôle)] cecile | ansible [2016/06/12 15:16] – [Bug] cecile | ||
---|---|---|---|
Ligne 23: | Ligne 23: | ||
* libffi-dev | * libffi-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)===== | ||
+ | |||
+ | * Sur la machine distante, il y a quelques dépendances à installer, mais pas Ansible: | ||
+ | * python-apt python-yaml | ||
+ | |||
+ | * On choisit une machine distante (ou locale), accessible en SSH, ici ça sera localhost | ||
+ | |||
+ | * On teste que Ansible sait se connecter à la machine distante : (l' | ||
+ | |||
+ | =====Création d'un fichier hosts===== | ||
+ | |||
+ | http:// | ||
+ | |||
+ | On va déclarer dans le fichier Host les machines que l'on va configurer avec Ansible et des paramètres. On peut le nommer " | ||
+ | |||
+ | **un fichier hosts simple :** | ||
+ | < | ||
+ | | ||
+ | **Un fichier plus complexe :** | ||
+ | < | ||
+ | | ||
+ | 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. | ||
+ | |||
+ | =====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 < | ||
+ | |||
+ | Super astuce, pour mettre à jour un paquet sur plein de machines (ex: erreur de sécu sur apache) : < | ||
+ | |||
+ | =====Les playbooks===== | ||
+ | |||
+ | Documentation officielle : http:// | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | **Solution 1 :** | ||
+ | < | ||
+ | tasks: | ||
+ | - name: installer la vache qui parle | ||
+ | apt: name=cowsay state=absent | ||
+ | - name: créer le magicien magic | ||
+ | user: name=magicsystem | ||
+ | </ | ||
+ | |||
+ | **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' | ||
+ | |||
+ | =====Bug Wheezy / Ansible version 2.1.0.0===== | ||
+ | |||
+ | Erreur au lancement des commandes Ansible : < | ||
+ | fatal: [machine]: FAILED! => {" | ||
+ | |||
+ | Pour corriger le problème, il faut spécifier la valeur all au module dather_subset dans le fichier de configuration. | ||
+ | |||
+ | Pour cela, on crée un fichier ansible.cfg dans le répertoire courant, on ne modifie pas le fichier de configuration dans /etc. | ||
+ | On ajoute les lignes suivantes : | ||
+ | |||
+ | < | ||
+ | [defaults] | ||
+ | # some specific values | ||
+ | gather_subset | ||
+ | </ | ||
+ | |||
+ | On peut aussi spécifier le chemin du fichier host dans le répertoire courant pour ne pas avoir à le spécifier dans les commandes ansible avec le -i. Pour cela on ajoute la ligne : | ||
+ | |||
+ | < | ||
+ | hostfile = <mon fichier host> | ||
+ | </ |
ansible.txt · Dernière modification : 2024/06/13 18:54 de gde