Paillasse/ansible/roles/portail/tasks/01-systeme.yml
Adam Belkacemi 618cd7efbe passe le portail en HTTPS sur syllabuslab.fr, avec en-têtes de sécurité et CSP
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>
2026-10-09 10:39:50 +02:00

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