Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| eadl:bloc4:fm2:td3 [2026/05/26 02:04] – [4. Inventaire Ansible] jcheron | eadl:bloc4:fm2:td3 [2026/06/12 08:05] (Version actuelle) – jcheron | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== | + | ====== |
| ===== Objectifs ===== | ===== Objectifs ===== | ||
| Ligne 26: | Ligne 26: | ||
| * un cache Redis | * un cache Redis | ||
| - | Terraform a deja ete utilise dans le TD precedent pour provisionner | + | Terraform a déjà provisionné |
| - | Vous prenez le relai avec Ansible pour configurer | + | Vous utilisez |
| + | |||
| + | ===== 0. Comprendre avant de faire ===== | ||
| + | |||
| + | ==== 0.1 Rôles Ansible ==== | ||
| + | |||
| + | Un rôle permet d’organiser : | ||
| + | |||
| + | * tâches | ||
| + | * variables | ||
| + | * handlers | ||
| + | * templates | ||
| + | |||
| + | <WRAP round help> | ||
| + | Quel critère doit guider le découpage en rôles : le service | ||
| + | ou l' | ||
| + | </ | ||
| + | |||
| + | ==== 0.2 Structure d’un rôle ==== | ||
| + | |||
| + | < | ||
| + | roles/ | ||
| + | nginx/ | ||
| + | tasks/ | ||
| + | handlers/ | ||
| + | templates/ | ||
| + | </ | ||
| ===== 1. Structure du projet ===== | ===== 1. Structure du projet ===== | ||
| Ligne 88: | Ligne 114: | ||
| python3 \ | python3 \ | ||
| python3-pip \ | python3-pip \ | ||
| + | sudo \ | ||
| curl \ | curl \ | ||
| && mkdir -p /run/sshd \ | && mkdir -p /run/sshd \ | ||
| Ligne 273: | Ligne 300: | ||
| * Pourquoi est-ce acceptable en developpement mais pas en production ? | * Pourquoi est-ce acceptable en developpement mais pas en production ? | ||
| * Que retourne la commande ping d' | * Que retourne la commande ping d' | ||
| - | </ | ||
| - | |||
| - | ==== Structure imposée par Ansible pour un rôle ==== | ||
| - | |||
| - | Quand Ansible charge un rôle, il cherche des dossiers et fichiers avec des noms précis. | ||
| - | |||
| - | <sxh> | ||
| - | roles/ | ||
| - | nom_du_role/ | ||
| - | tasks/ | ||
| - | main.yml | ||
| - | handlers/ | ||
| - | main.yml | ||
| - | templates/ | ||
| - | *.j2 # fichiers Jinja2 générés dynamiquement | ||
| - | files/ | ||
| - | * # fichiers statiques copiés tels quels | ||
| - | defaults/ | ||
| - | main.yml | ||
| - | vars/ | ||
| - | main.yml | ||
| - | meta/ | ||
| - | main.yml | ||
| - | </ | ||
| - | |||
| - | Régles importantes : | ||
| - | |||
| - | * Le point d' | ||
| - | * Ansible ne charge que ce qu'il trouve dans ces dossiers aux noms fixes | ||
| - | * Seul '' | ||
| - | * Les autres dossiers sont optionnels : Ansible ignore ceux qui sont absents | ||
| - | |||
| - | <WRAP round help> | ||
| - | Pourquoi '' | ||
| - | Ils ont des niveaux de priorité differents. Une variable dans '' | ||
| </ | </ | ||
| Ligne 404: | Ligne 396: | ||
| name: "{{ db_user }}" | name: "{{ db_user }}" | ||
| password: "{{ db_password }}" | password: "{{ db_password }}" | ||
| - | priv: "{{ db_name }}.*: | ||
| state: present | state: present | ||
| + | - name: Attribution des privilègees | ||
| + | become: yes | ||
| + | become_user: | ||
| + | postgresql_privs: | ||
| + | database: "{{ db_name }}" | ||
| + | role: "{{ db_user }}" | ||
| + | privs: ALL | ||
| + | type: database | ||
| + | state: present | ||
| + | |||
| </ | </ | ||
| Ligne 451: | Ligne 452: | ||
| Questions : | Questions : | ||
| * Qu' | * Qu' | ||
| - | * Quand est-il | + | * Quand est-il |
| - | * Quelle est la difference | + | * Quelle est la différence |
| </ | </ | ||
| Ligne 458: | Ligne 459: | ||
| <WRAP round todo> | <WRAP round todo> | ||
| - | Creez le fichier suivant. | + | Créez |
| Fichier : ansible/ | Fichier : ansible/ | ||
| Ligne 527: | Ligne 528: | ||
| - name: Demarrage de Flask | - name: Demarrage de Flask | ||
| - | | + | |
| - | name: flask | + | |
| - | state: started | + | |
| - | | + | |
| - | daemon_reload: | + | |
| </ | </ | ||
| Ligne 539: | Ligne 538: | ||
| --- | --- | ||
| - name: restart flask | - name: restart flask | ||
| - | | + | |
| - | name: flask | + | |
| - | state: restarted | + | |
| - | | + | |
| </ | </ | ||
| Ligne 548: | Ligne 546: | ||
| <WRAP round todo> | <WRAP round todo> | ||
| - | Creez les fichiers suivants. | + | Créez |
| Fichier : ansible/ | Fichier : ansible/ | ||
| Ligne 612: | Ligne 610: | ||
| * Quelle est la difference entre copy et template dans Ansible ? | * Quelle est la difference entre copy et template dans Ansible ? | ||
| * Que fait la directive proxy_pass ? | * Que fait la directive proxy_pass ? | ||
| - | * Pourquoi utilise-t-on le nom du conteneur | + | * Pourquoi utilise-t-on le nom du conteneur |
| </ | </ | ||
| Ligne 667: | Ligne 665: | ||
| Verifiez que l' | Verifiez que l' | ||
| - | curl http:// | + | curl http:// |
| </ | </ | ||
| - | ===== 12. Probleme | + | ===== 12. Problème |
| <WRAP round todo> | <WRAP round todo> | ||
| Ligne 692: | Ligne 690: | ||
| <WRAP round todo> | <WRAP round todo> | ||
| Corrigez la valeur de backend_host et relancez le playbook. | Corrigez la valeur de backend_host et relancez le playbook. | ||
| - | Verifiez | + | Vérifiez |
| </ | </ | ||
| Ligne 700: | Ligne 698: | ||
| <WRAP round todo> | <WRAP round todo> | ||
| - | Sans aide, creez un role Ansible pour installer et configurer Netdata sur le conteneur flask. | + | Sans aide, créez |
| Contraintes : | Contraintes : | ||
| * Le service doit demarrer automatiquement | * Le service doit demarrer automatiquement | ||
| - | * Le port d'ecoute | + | * Le port d'écoute |
| - | * Un handler doit gerer le redemarrage | + | * Un handler doit gérer |
| * Le conteneur flask doit exposer le port correspondant dans main.tf | * Le conteneur flask doit exposer le port correspondant dans main.tf | ||
| - | Verifiez | + | Vérifiez |
| </ | </ | ||
| Ligne 714: | Ligne 712: | ||
| <WRAP round todo> | <WRAP round todo> | ||
| - | * Ajoutez un tag Ansible sur chaque play pour pouvoir executer uniquement un role specifique | + | * Ajoutez un tag Ansible sur chaque play pour pouvoir executer uniquement un rôle spécifique |
| - | * Creez un fichier ansible.cfg pour eviter | + | * Créez |
| - | * Chiffrez le fichier group_vars/ | + | * Chiffrez le fichier group_vars/ |
| </ | </ | ||