Ansible 101
parent
d6fc634641
commit
ce25dd6560
55
README.md
55
README.md
|
@ -20,6 +20,46 @@ Il est souhaitable de faire un test avant avec `--check` si on a des doutes !
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
|
### Ansible 101
|
||||||
|
|
||||||
|
Si vous n'avez jamais touché à Ansible avant, voilà une rapide introduction.
|
||||||
|
|
||||||
|
**Inventory** : c'est le fichier `hosts` d'inventaire.
|
||||||
|
Il contient la définition de chaque machine et le regroupement.
|
||||||
|
|
||||||
|
Quand on regroupe avec un `:children` en réalité on groupe des groupes.
|
||||||
|
|
||||||
|
Chaque machine est annoncée avec son DNS. Il faut pouvoir SSH sur cette machine
|
||||||
|
avec ce DNS, car c'est ce qu'Ansible fera.
|
||||||
|
|
||||||
|
**Playbook** : c'est une politique de déploiement.
|
||||||
|
Il contient les associations des rôles avec les machines.
|
||||||
|
|
||||||
|
L'idée au Crans est de regrouper par thême. Exemple, le playbook `monitoring.yml`
|
||||||
|
va contenir toutes les définitions machines-rôles qui touchent au monitoring.
|
||||||
|
Cela permet de déployer manuellement tout le monitoring sans toucher au reste.
|
||||||
|
|
||||||
|
**Rôle** : un playbook donne des rôles à des machines. Ces rôles sont tous dans
|
||||||
|
le dossier `roles/`. Un rôle installe un service précis sur un service.
|
||||||
|
|
||||||
|
Il est préférable d'être atomique sur les rôles plutôt d'en coder un énorme
|
||||||
|
qui sera difficilement maintenable.
|
||||||
|
|
||||||
|
*Exemples de rôle* : activer les backports pour ma version de Debian, installer NodeJS,
|
||||||
|
déployer un serveur prometheus, déployer une node prometheus…
|
||||||
|
|
||||||
|
**Tâche** : un rôle est composé de tâche. Une tâche effectue une et une seule
|
||||||
|
action. Elle est associée à un module Ansible.
|
||||||
|
|
||||||
|
*Exemples de tâche* : installer un paquet avec le module `apt`, ajouter une ligne dans
|
||||||
|
un fichier avec le module `lineinfile`, copier une template avec le module `template`…
|
||||||
|
|
||||||
|
Une tâche peut avoir des paramètres supplémentaires pour la réessayer quand elle plante,
|
||||||
|
récupérer son résultat dans une varible, mettre une boucle dessus, mettre des conditions…
|
||||||
|
|
||||||
|
N'oubliez pas d'aller lire l'excellent documentation de RedHat sur tous les modules
|
||||||
|
d'Ansible !
|
||||||
|
|
||||||
### Mettre sa clé SSH sur une machine
|
### Mettre sa clé SSH sur une machine
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -49,6 +89,21 @@ Host 10.231.136.* *.adm.crans.org
|
||||||
Il faut savoir que depuis Ansible 2.5, des connexions persistantes sont créées
|
Il faut savoir que depuis Ansible 2.5, des connexions persistantes sont créées
|
||||||
vers les serveurs puis détruites à la fin de l'exécution.
|
vers les serveurs puis détruites à la fin de l'exécution.
|
||||||
|
|
||||||
|
### Gestion des groupes de machines
|
||||||
|
|
||||||
|
Dans BCFG2 on avait des groupes selon la version de Debian.
|
||||||
|
Avec Ansible on peut utiliser en condition
|
||||||
|
`ansible_distribution_release == 'stretch'` par exemple.
|
||||||
|
Donc il n'y a plus trop d'intêret de séparer selon la version de Debian les machines.
|
||||||
|
|
||||||
|
Sinon pour les autres groupes, vous allez retrouver une configuration similaire à BCFG2
|
||||||
|
avec par exemple les groupes `crans-vm`, `crans`…
|
||||||
|
Pour en savoir plus je vous invite à lire le fichier `hosts`.
|
||||||
|
|
||||||
|
Pour les fonctions (`proxy-server`, `dhcp-dynamique`…) il a été choisi
|
||||||
|
de ne pas faire de groupe particulier mais plutôt de sélectionner les machines
|
||||||
|
pertinentes directement dans les playbooks.
|
||||||
|
|
||||||
### Lister tout ce que sait Ansible sur un hôte
|
### Lister tout ce que sait Ansible sur un hôte
|
||||||
|
|
||||||
Lors du lancement d'Ansible, il collecte un ensemble de faits sur les serveurs
|
Lors du lancement d'Ansible, il collecte un ensemble de faits sur les serveurs
|
||||||
|
|
Loading…
Reference in New Issue