63 lines
2.2 KiB
YAML
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
|