Files
ludikevent_crm/ansible/playbook.yml
Serreau Jovann 41b5af9092 fix: désactiver Turbo sur les formulaires de réinitialisation et d'inscription
Les formulaires de réinitialisation de mot de passe et d'inscription utilisaient Turbo par défaut, ce qui pouvait interférer avec le processus de soumission standard et la redirection après action. L'ajout de l'attribut `data-turbo="false"` sur chaque formulaire concerné garantit que les requêtes POST sont traitées de manière conventionnelle, évitant ainsi des comportements inattendus ou des échecs de soumission.
2026-02-13 14:41:44 +01:00

254 lines
8.4 KiB
YAML

# Fichier: install_php_83_symfony_pgsql.yml
- name: Deploy application
hosts: webservers
become: true
gather_facts: true
vars:
db_name: "ludikevent"
db_user: "ludikevent"
db_password: "ludikevent"
redis_password: "ludikevent"
redis_port: "20110"
# path: /var/www/mainframe/app (à définir dans l'inventaire)
tasks:
- name: Exécuter 'composer install' dans le répertoire de l'application
ansible.builtin.command: php8.4 /usr/local/bin/composer install --no-dev --optimize-autoloader
become: false
args:
chdir: "{{ path }}"
when: ansible_os_family == "Debian"
- name: Send a message to the Discord channel
community.general.discord:
webhook_id: "1419573620602044518"
webhook_token: "ikAdxWxsrrTqMTb5Gh_8ylcoJHlOnq7aJZvR5udoS_fCK56Jk3qpEnJHVKdD8fwuNJF3"
content: "Mise à jour du intranet ludikevent https://intranet.ludikevent.fr"
- name: Installer le support ACL pour corriger les permissions
ansible.builtin.apt:
name: acl
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Installation des dépendances PostgreSQL pour Ansible
ansible.builtin.apt:
name: python3-psycopg2
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Installation de PHP 8.4 et dépendances
ansible.builtin.apt:
name:
- php8.4
- php8.4-fpm
- php8.4-cli
- php8.4-common
- php8.4-mysql
- php8.4-pgsql
- php8.4-xml
- php8.4-mbstring
- php8.4-zip
- php8.4-intl
- php8.4-gd
- php8.4-curl
- php8.4-pdo
- php8.4-opcache
- php8.4-bcmath
- php8.4-redis
- php8.4-imagick
- ffmpeg
state: present
when: ansible_os_family == "Debian"
- name: Démarrage de PHP 8.4-FPM
ansible.builtin.systemd:
name: php8.4-fpm
state: started
enabled: yes
- name: Créer le fichier .env.local
ansible.builtin.copy:
content: |
APP_ENV=prod
APP_DEBUG=false
VITE_LOAD=1
DATABASE_URL="postgresql://{{ db_user }}:{{ db_password }}@127.0.0.1:5432/{{ db_name }}?serverVersion=16&charset=utf8"
REDIS_DSN="redis://{{ redis_password }}@127.0.0.1:{{ redis_port }}"
REDIS_URL="redis://{{ redis_password }}@127.0.0.1:{{ redis_port }}"
MESSENGER_TRANSPORT_DSN="redis://{{ redis_password }}@127.0.0.1:{{ redis_port }}/messages"
APP_SECRET=939bbc67038c2e2d1232d86fc605bf2f
REAL_MAIL=1
VAULT_ADDR=http://127.0.0.1:8200
VAULT_TOKEN=hvs.QLpUdiptXtSPo5Qf7i2nn2Xz
MAILER_DSN=ses+smtp://AKIAWTT2T22CWBRBBDYN:BBdgb6KxRQ8mNcpWFJsZCJxbSGNdgLhKFiITMErfBlQP@default?region=eu-west-3
PATH_URL=https://intranet.ludikevent.fr
STRIPE_BASEURL=https://payment.ludikevent.fr
SIGN_URL=https://reservation.ludikevent.fr
DEFAULT_URI=https://reservation.ludikevent.fr
INTRANET_LOCK=false
STRIPE_PK=pk_test_51SUA22173W4aeFB1nO6oFfDZ12HOTffDKtCshhZ8rkUg6kUO2ZaQC0tK72rhE79Tr8treeHX9KMcZtvcQZ0X8VSm00Q6GQ365V
STRIPE_SK=sk_test_51SUA22173W4aeFB16EB2LxGI0hNvNJzFshDI98zRImWBIhSfzqOGAz5TlPxSpUWbj3x4COm6kmSsaal9FpQR1A7M0022DvjbbR
dest: "{{ path }}/.env.local"
- name: Configuration des dossiers de base
ansible.builtin.file:
path: "{{ item }}"
owner: bot
group: www-data
mode: '0775'
state: directory
loop:
- "{{ path }}/var"
- "{{ path }}/var/log"
- "{{ path }}/public/media"
- "{{ path }}/public/images"
- "{{ path }}/public/pdf"
- "{{ path }}/public/seo"
- "{{ path }}/public/tmp-sign"
- "{{ path }}/sauvegarde"
- name: ACL pour Symfony (www-data rwx)
ansible.builtin.acl:
path: "{{ item }}"
entity: www-data
etype: group
permissions: rwx
state: present
recursive: yes
default: yes
loop:
- "{{ path }}/var/cache"
- "{{ path }}/var/log"
- name: ACL pour Symfony (www-data rwx)
ansible.builtin.acl:
path: "{{ item }}"
entity: bot
etype: group
permissions: rwx
state: present
recursive: yes
default: yes
loop:
- "{{ path }}/public/media"
- name: Bun install & build
ansible.builtin.command: "{{ item }}"
become: false
args:
chdir: "{{ path }}"
loop:
- "bun install"
- "bun run build"
- name: Supervisor config
ansible.builtin.template:
src: supervisor.j2
dest: "/etc/supervisor/conf.d/mainframe.conf"
mode: '0644'
- name: Reload Supervisor
ansible.builtin.command: "{{ item }}"
loop:
- "supervisorctl reread"
- "supervisorctl update"
- name: Purger Redis
ansible.builtin.command: "redis-cli -p {{ redis_port }} -a {{ redis_password }} FLUSHALL"
- name: Caddy config
ansible.builtin.template:
src: caddy.j2
dest: "/etc/caddy/sites/ludikevent.conf"
mode: '0644'
- name: Reload Caddy
ansible.builtin.systemd:
name: caddy
state: reloaded
- name: Symfony Tasks (Migrations, Cache, Warmup)
ansible.builtin.command: "php8.4 bin/console {{ item }} --no-interaction"
become: false
args:
chdir: "{{ path }}"
loop:
- "doctrine:migrations:migrate"
- "cache:clear"
- "app:images:warmup"
- "pwa:compile"
- "app:sitemap"
- name: S'assurer que le fichier update.json a les bonnes permissions
ansible.builtin.file:
path: "{{ path }}/var/update.json"
owner: bot
group: www-data
mode: '0664'
state: file
ignore_errors: yes
# --- CRON TASKS ---
- name: "Cron Task - Unsigned Contracts (Relance & Annulation)"
ansible.builtin.cron:
name: "Intranet Ludikevent - Unsigned Contracts Expired"
minute: "0"
hour: "12"
job: "php8.4 {{ path }}/bin/console app:mail"
user: root
state: present
- name: "Cron Task Search"
ansible.builtin.cron:
name: "Intranet Ludikevent - Search"
minute: "*/5"
job: "php8.4 {{ path }}/bin/console app:search"
user: root
- name: "Cron Task Stripe"
ansible.builtin.cron:
name: "Intranet Ludikevent - Stripe"
minute: "0"
hour: "1"
job: "php8.4 {{ path }}/bin/console app:stripe:sync"
user: root
- name: "Cron Task Backup"
ansible.builtin.cron:
name: "Intranet Ludikevent - Backup"
minute: "0"
hour: "*/6"
job: "php8.4 {{ path }}/bin/console app:backup"
user: "root"
- name: "Cron Task - Clean Data"
ansible.builtin.cron:
name: "Intranet Ludikevent - Clean Data"
minute: "0"
hour: "20"
job: "php8.4 {{ path }}/bin/console app:clean"
user: "root"
- name: Final Permissions Fix (0777 pour les dossiers d'upload)
ansible.builtin.file:
path: "{{ item }}"
owner: bot
group: www-data
mode: '0777'
state: directory
recurse: yes
loop:
- "{{ path }}/var/cache"
- "{{ path }}/var/log"
- "{{ path }}/public/media"
- "{{ path }}/sauvegarde"
- "{{ path }}/public/images"
- "{{ path }}/public/media"
- "{{ path }}/public/pdf"
- "{{ path }}/public/seo"
- "{{ path }}/public/tmp-sign"