Certificat Let's Encrypt obtenu et renouvelé par certbot (authentificateur nginx), expiration surveillée par Prometheus. TLS selon Mozilla v6.0 intermediate, HSTS, CSP stricte avec nonce sur l'application et adaptée sur la vitrine, xterm.js servi par le portail. Page de statut prévue sur status.syllabuslab.fr, administration de Grafana et Kuma par tunnel seul. Corrige aussi une faille XSS dans la page de classe, la page /cours en erreur depuis l'étape 8, et NodeSource relancé à chaque déploiement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
93 lines
3.4 KiB
YAML
93 lines
3.4 KiB
YAML
---
|
|
- name: installer les prérequis pour le dépôt PHP Sury
|
|
ansible.builtin.apt:
|
|
name: [lsb-release, ca-certificates, curl, gnupg, rsync]
|
|
state: present
|
|
update_cache: true
|
|
cache_valid_time: 3600
|
|
|
|
- name: télécharger le trousseau de clés du dépôt Sury
|
|
ansible.builtin.get_url:
|
|
url: https://packages.sury.org/debsuryorg-archive-keyring.deb
|
|
dest: /tmp/debsuryorg-archive-keyring.deb
|
|
mode: "0644"
|
|
|
|
- name: installer le trousseau de clés Sury
|
|
ansible.builtin.apt:
|
|
deb: /tmp/debsuryorg-archive-keyring.deb
|
|
state: present
|
|
|
|
- name: ajouter le dépôt PHP Sury
|
|
ansible.builtin.apt_repository:
|
|
repo: "deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ {{ ansible_distribution_release }} main"
|
|
filename: php
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: installer PHP {{ portail_php_version }}, Nginx et les extensions nécessaires
|
|
ansible.builtin.apt:
|
|
name:
|
|
- "php{{ portail_php_version }}-fpm"
|
|
- "php{{ portail_php_version }}-cli"
|
|
- "php{{ portail_php_version }}-mysql"
|
|
- "php{{ portail_php_version }}-redis"
|
|
- "php{{ portail_php_version }}-mbstring"
|
|
- "php{{ portail_php_version }}-xml"
|
|
- "php{{ portail_php_version }}-curl"
|
|
- "php{{ portail_php_version }}-zip"
|
|
- "php{{ portail_php_version }}-bcmath"
|
|
- "php{{ portail_php_version }}-gd"
|
|
- "php{{ portail_php_version }}-intl"
|
|
- "php{{ portail_php_version }}-opcache"
|
|
- nginx
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: installer Composer (avec vérification de la somme d'installation officielle)
|
|
block:
|
|
- name: télécharger le programme d'installation de Composer
|
|
ansible.builtin.get_url:
|
|
url: https://getcomposer.org/installer
|
|
dest: /tmp/composer-setup.php
|
|
mode: "0644"
|
|
|
|
- name: récupérer la somme SHA384 officielle
|
|
ansible.builtin.uri:
|
|
url: https://composer.github.io/installer.sig
|
|
return_content: true
|
|
register: portail_composer_signature
|
|
when: not (ansible_check_mode | default(false))
|
|
|
|
- name: calculer la somme SHA384 du fichier téléchargé
|
|
ansible.builtin.stat:
|
|
path: /tmp/composer-setup.php
|
|
checksum_algorithm: sha384
|
|
register: portail_composer_setup_stat
|
|
|
|
- name: vérifier que la somme correspond (sinon, installateur corrompu)
|
|
ansible.builtin.fail:
|
|
msg: "La somme de l'installateur Composer ne correspond pas à la signature officielle : installation interrompue."
|
|
when:
|
|
- portail_composer_signature is defined
|
|
- portail_composer_setup_stat.stat.checksum != portail_composer_signature.content.strip()
|
|
|
|
- name: installer Composer (dernière version stable)
|
|
ansible.builtin.command:
|
|
cmd: php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
|
|
args:
|
|
creates: /usr/local/bin/composer
|
|
|
|
- name: installer Node.js 22 LTS (dépôt NodeSource)
|
|
block:
|
|
- name: ajouter le dépôt NodeSource
|
|
ansible.builtin.shell:
|
|
cmd: curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
|
|
# Le script crée un fichier deb822 (.sources) : avec l'ancien nom
|
|
# (.list), il était relancé en root à chaque déploiement.
|
|
creates: /etc/apt/sources.list.d/nodesource.sources
|
|
|
|
- name: installer nodejs
|
|
ansible.builtin.apt:
|
|
name: nodejs
|
|
state: present
|
|
update_cache: true
|