Paillasse/ansible/roles/portail/tasks/02-bases-donnees.yml
Adam Belkacemi 30e14b1c54 ajoute le portail Laravel : connexion prof/élève, session unique, gestion de classe, salle d'attente
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-08 02:01:58 +02:00

63 lines
2.2 KiB
YAML

---
- name: créer le dossier de configuration Docker du portail
ansible.builtin.file:
path: "{{ portail_dossier_docker }}"
state: directory
owner: root
group: root
mode: "0750"
# Un seul fichier de secrets, nommé .env : docker compose le charge
# automatiquement pour les substitutions ${...} de docker-compose.yml, et une
# tâche plus loin le relit pour remplir le .env de Laravel avec les mêmes
# valeurs (une seule source de vérité, jamais dans Git).
- name: générer les secrets MariaDB/Redis de l'app (première fois seulement)
ansible.builtin.copy:
dest: "{{ portail_dossier_docker }}/.env"
content: |
MYSQL_ROOT_PASSWORD={{ lookup('community.general.random_string', length=32, special=false) }}
MYSQL_PASSWORD={{ lookup('community.general.random_string', length=32, special=false) }}
REDIS_PASSWORD={{ lookup('community.general.random_string', length=32, special=false) }}
owner: root
group: root
mode: "0600"
force: false
register: portail_secrets_generes
- name: lire les secrets générés
ansible.builtin.slurp:
src: "{{ portail_dossier_docker }}/.env"
register: portail_secrets_brut
- name: "exposer les secrets comme variables (jamais affichées, no_log)"
ansible.builtin.set_fact:
portail_secrets: "{{ dict(portail_secrets_lignes | map('split', '=', 1)) }}"
vars:
portail_secrets_lignes: "{{ (portail_secrets_brut.content | b64decode).splitlines() | select('string') | list }}"
no_log: true
- name: déployer docker-compose.yml (MariaDB + Redis de l'app)
ansible.builtin.template:
src: docker-compose.yml.j2
dest: "{{ portail_dossier_docker }}/docker-compose.yml"
owner: root
group: root
mode: "0640"
vars:
portail_mysql_root_password: "${MYSQL_ROOT_PASSWORD}"
portail_mysql_password: "${MYSQL_PASSWORD}"
portail_redis_password: "${REDIS_PASSWORD}"
register: portail_compose_deploye
- name: démarrer MariaDB et Redis (app)
community.docker.docker_compose_v2:
project_src: "{{ portail_dossier_docker }}"
state: present
register: portail_compose_resultat
- name: attendre que MariaDB (app) accepte les connexions
ansible.builtin.wait_for:
host: 127.0.0.1
port: "{{ portail_mysql_port }}"
delay: 2
timeout: 60