Pour profiter un maximum de ce TP, il est recomandé de :
Pour aller plus loin, il est recommandé de :
Je vous invite à survoler cette page qui vous expliquera les bases théoriques à connaître.
Voilà l'infrastructure que vous allez mettre en place.
Exécutez le script ./script.sh
Une fois que le docker-compose est lancé, exécutez la commande suivante :
docker-compose exec -it control_node bash
cd
cd /root #version rigoureuse
Ansible permet de gérer à distance des hôtes (physiques ou virtuels), du moment qu'ils sont accessibles en SSH.
Pour savoir quels hôtes contacter, on agit au niveau IP, et on a besoin de répertorier, que dis-je, d'INVENTORIER les différents hôtes à gérer.
Vous l'aurez compris, Ansible a besoin d'un inventaire pour fonctionner.
172.20.20.3
172.20.20.4
ansible all -i hosts -m ping
Décortiquons cette commande :
ansible prend un argument host pattern
, qui permet de faire du filtrage au niveau de l'inventaire.
all
permet d'affirmer que vous voulez tous les hôtes !-i
permet de spécifier le fichier d'inventaire, hosts
ici.-m
permet de spécifier un module à utiliser (nous y reviendrons plus tard), ping
ici.L'output devrait être le suivant (modulo le yes sur les fingerprint de première connexion SSH):
172.20.20.3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
172.20.20.4 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Si vous ne voulez qu'un seul hôte parmi les deux :
ansible 172.20.20.3 -i hosts -m ping
172.20.20.3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Commande sympa pour vérifier les hôtes :
ansible all -i hosts --list-hosts
Faut lire le docker-compose.yaml
[group1]
172.20.20.3
[group2]
172.20.20.4
Vous pouvez tester si votre commande a bien pris :
ansible group1 -i hosts --list-hosts
hosts (1):
172.20.20.3
hosts
de la manière suivante :managed_nodes:
hosts:
vm_1:
ansible_host: 172.20.20.3
vm_2:
ansible_host: 172.20.20.4
ansible-inventory
.ansible-inventory -i inventory.yaml --list
ansible managed_nodes -m ping -i inventory.yaml
La force majeure d'Ansible, c'est de pouvoir automatiser des tâches longues et complexes avec quelques lignes en YAML.
L'outil phare qui permet d'exécuter ses tâches, c'est les playbook Ansible.
Un playbook est une liste de tâches ordonnées, qu'Ansible suit de haut en bas, et qui ont pour but d'accomplir un objectif (par exemple, mettre en place un switch configuré et prêt à être utilisé, mettre à jour une box internet...)
Un playbook est composé de plusieurs play, qui sont une liste de tâches (tasks) relatives à un noeud ou un groupe de noeuds dans l'inventaire.
Une task emploie des modules Ansible qui décrivent le déroulement d'une opération Ansible.
Un module est une unité de code qu'Ansible exécute sur les noeuds.
On va voir ça en détail ne vous inquiétez pas.
"Bon ça suffit j'en ai marre de ping c'est quand qu'on fait des trucs intéressants ?"
WIP