|
|
## Qu'est-ce que Ansible ?
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
Ansible est une plateforme d'automatisation informatique open source de Red Hat. Elle permet aux organisations d'automatiser de nombreux processus informatiques habituellement exécutés manuellement, notamment l'approvisionnement, la gestion de la configuration, le déploiement d'applications et l'orchestration.
|
|
|
|
... | ... | @@ -8,15 +8,15 @@ Red Hat Ansible Automation Platform est une plateforme soutenue par Red Hat et c |
|
|
|
|
|
## Mise en place des Machines Virtuelles
|
|
|
|
|
|
Pour debuter avec Ansible, nous allons 4 machines virtuelles ``` cn / web01 / web02 / db```, dont un qui va nous servir de node controller, c'est-a-dire la machine qui va controller les autres machines, on le nommera ```cn```
|
|
|
Pour débuter avec Ansible, nous allons 4 machines virtuelles ``` cn / web01 / web02 / db```, dont un qui va nous servir de node controller, c'est-a-dire la machine qui va controller les autres machines, on le nommera ```cn```
|
|
|
|
|
|
avec ``` vagrant global-status ``` on a les 4 machines up :
|
|
|
avec ``` vagrant global-status ``` on a les 4 machines UP :
|
|
|
|
|
|

|
|
|
|
|
|
## Fichier Inventaire
|
|
|
|
|
|
Le fichier d'inventaire Ansible définit les hôtes et les groupes d'hôtes sur lesquels les commandes, les modules et les tâches d'un playbook fonctionnent. Le fichier peut être dans l'un des nombreux formats en fonction de votre environnement Ansible et de vos plugins. Les formats les plus courants sont INI et YAML. Dans notre cas, ca sera du YAML:
|
|
|
Le fichier d'inventaire Ansible définit les hôtes et les groupes d'hôtes sur lesquels les commandes, les modules et les tâches d'un playbook fonctionnent. Le fichier peut être dans l'un des nombreux formats en fonction de votre environnement Ansible et de vos plugins. Les formats les plus courants sont INI et YAML. Dans notre cas, ça sera du YAML:
|
|
|
|
|
|
```yaml
|
|
|
|
... | ... | @@ -41,13 +41,13 @@ ansible_ssh_pass=vagrant |
|
|
|
|
|
```
|
|
|
|
|
|
On a donc des groupes differents, au niveau de variables, les valeurs de connections sont affectees pour pouvoir utiliser ssh sans probleme
|
|
|
On a donc des groupes différents, au niveau de variables, les valeurs de connections sont affectées pour pouvoir utiliser SSH sans problème
|
|
|
|
|
|
## Commandes Ad hoc
|
|
|
|
|
|
Une commande ad hoc utilise l'outil de ligne de commande /usr/bin/ansible pour automatiser une tâche unique sur un ou plusieurs nœuds gérés. Les commandes ad hoc sont rapides et faciles, mais elles ne sont pas réutilisables.
|
|
|
|
|
|
Voici quelques exemples de commandes Adhoc pour verifier la connection entre les machines virtuelles :
|
|
|
Voici quelques exemples de commandes Ad hoc pour vérifier la connexion entre les machines virtuelles :
|
|
|
|
|
|
```
|
|
|
ansible -i inventory -m ping web01
|
... | ... | @@ -103,23 +103,22 @@ Voici un exemple de playbook: |
|
|
|
|
|
```
|
|
|
|
|
|
Ce playbook permet la gestion d'une base de donnee sur le groupe ``` dbsrvgrp ```, donc la machine ``` db ```.
|
|
|
Ce playbook permet la gestion d'une base de donnée sur le groupe ``` dbsrvgrp ```, donc la machine ``` db ```.
|
|
|
|
|
|
## Variables
|
|
|
|
|
|
Sur Ansible il y a un systeme de variable bien specifique, voici un schema qui permet de visualiser le systeme de variables:
|
|
|
Sur Ansible, il y a un système de variable bien spécifique, voici un schéma qui permet de visualiser le système de variables :
|
|
|
|
|
|

|
|
|
|
|
|
Il y a aussi les ```fact variables``` qui permet de renvoyer un json avec les informations d'une machines virtuelle specifique, on peut y acceder grace a cette commande:
|
|
|
Il y a aussi les ```fact variables``` qui permettent de renvoyer un JSON avec les informations des machines virtuelles spécifiques, on peut y accéder grâce à cette commande :
|
|
|
|
|
|
```ansible all -i inventory -m setup -u {nom_machine}
|
|
|
```
|
|
|
```ansible all -i inventory -m setup -u {nom_machine}```
|
|
|
|
|
|
|
|
|
## Boucles, condition et les Handlers
|
|
|
|
|
|
Voici un autre exemple de playbook qui va nous permettre de gerer un service ntp sur toutes les machines, petite particularite de ce playbook est qu'il y a des verification a faire, nous allons donc utiliser ```when``` et ```loop``` au niveau des variables de ```group_vars``` :
|
|
|
Voici un autre exemple de playbook qui va nous permettre de gérer un service ntp sur toutes les machines, petite particularité de ce playbook est qu'il y a des vérifications à faire, nous allons donc utiliser ```when``` et ```loop``` au niveau des variables de ```group_vars``` :
|
|
|
|
|
|
```yaml
|
|
|
---
|
... | ... | @@ -241,3 +240,10 @@ Voici un autre exemple de playbook qui va nous permettre de gerer un service ntp |
|
|
when: ansible_os_family == "Debian"
|
|
|
|
|
|
```
|
|
|
|
|
|
## Rôles
|
|
|
|
|
|
Dans Ansible, les rôles sont une méthode de chargement automatique de certaines variables, tâches, fichiers, modèles et gestionnaires sur la base d'une structure de fichiers connue. Le regroupement du contenu par rôle facilite le partage et la réutilisation. La documentation Ansible sur les rôles décrit la structure des fichiers et d'autres considérations.
|
|
|
|
|
|
On peut importer un rôle avec ``` Ansible-galaxy``` et s'informer sur les rôles sur la documentation officielle d'Ansible : https://galaxy.ansible.com/search?deprecated=false&keywords=&order_by=-relevance
|
|
|
|