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:16] – [7. Role Redis] 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. Rôles Ansible | + | ===== 0. Comprendre avant de faire ===== |
| - | Un rôle est une façon de regrouper et d' | + | ==== 0.1 Rôles Ansible ==== |
| - | Sans rôle, un playbook grossit au fil du temps : les tâches, variables et handlers se retrouvent | + | Un rôle permet d’organiser |
| - | dans un seul fichier qui devient difficile à lire et à maintenir. | + | |
| - | Un rôle découpe ce fichier en unités autonomes, une par service ou responsabilité. | + | |
| - | + | * variables | |
| - | Exemple concret : | + | * handlers |
| - | + | * templates | |
| - | * un rôle '' | + | |
| - | * un rôle '' | + | |
| - | * un rôle '' | + | |
| - | + | ||
| - | Le playbook principal devient alors une simple liste de rôles à appliquer sur quels hôtes. | + | |
| - | Il ne contient plus de logique, seulement de l' | + | |
| - | + | ||
| - | Avantages concrets : | + | |
| - | + | ||
| - | | + | |
| - | * Les modifications sont isolées : changer le rôle nginx n' | + | |
| - | * Le playbook principal devient lisible en quelques lignes | + | |
| - | * Les rôles peuvent être versionnés et partagés via Ansible Galaxy | + | |
| <WRAP round help> | <WRAP round help> | ||
| - | Avant de continuer | + | Quel critère doit guider le découpage en rôles |
| - | Quelles tâches appartiendraient plutôt à un rôle flask ? | + | ou l' |
| </ | </ | ||
| - | === Structure | + | ==== 0.2 Structure |
| - | Quand Ansible charge un rôle, il cherche des dossiers et fichiers avec des noms précis. | + | <sxh> |
| - | + | ||
| - | <sxh; | + | |
| roles/ | roles/ | ||
| - | | + | |
| - | tasks/ | + | tasks/ |
| - | | + | handlers/ |
| - | handlers/ | + | |
| - | | + | |
| templates/ | 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é différents. Une variable dans '' | ||
| - | </ | ||
| - | |||
| ===== 1. Structure du projet ===== | ===== 1. Structure du projet ===== | ||
| Ligne 154: | Ligne 114: | ||
| python3 \ | python3 \ | ||
| python3-pip \ | python3-pip \ | ||
| + | sudo \ | ||
| curl \ | curl \ | ||
| && mkdir -p /run/sshd \ | && mkdir -p /run/sshd \ | ||
| Ligne 435: | 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 489: | Ligne 459: | ||
| <WRAP round todo> | <WRAP round todo> | ||
| - | Creez le fichier suivant. | + | Créez |
| Fichier : ansible/ | Fichier : ansible/ | ||
| Ligne 558: | Ligne 528: | ||
| - name: Demarrage de Flask | - name: Demarrage de Flask | ||
| - | | + | |
| - | name: flask | + | |
| - | state: started | + | |
| - | | + | |
| - | daemon_reload: | + | |
| </ | </ | ||
| Ligne 570: | Ligne 538: | ||
| --- | --- | ||
| - name: restart flask | - name: restart flask | ||
| - | | + | |
| - | name: flask | + | |
| - | state: restarted | + | |
| - | | + | |
| </ | </ | ||
| Ligne 579: | Ligne 546: | ||
| <WRAP round todo> | <WRAP round todo> | ||
| - | Creez les fichiers suivants. | + | Créez |
| Fichier : ansible/ | Fichier : ansible/ | ||
| Ligne 643: | 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 698: | Ligne 665: | ||
| Verifiez que l' | Verifiez que l' | ||
| - | curl http:// | + | curl http:// |
| </ | </ | ||
| - | ===== 12. Probleme | + | ===== 12. Problème |
| <WRAP round todo> | <WRAP round todo> | ||
| Ligne 723: | 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 731: | 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 745: | 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/ |
| </ | </ | ||