Set-OPS-Public/roles/ssh_baseline/tasks/main.yml

60 lines
2.1 KiB
YAML
Raw Normal View History

---
- name: Installer openssh-server
ansible.builtin.apt:
name: openssh-server
state: present
- name: Créer le répertoire sshd_config.d
ansible.builtin.file:
path: /etc/ssh/sshd_config.d
state: directory
owner: root
group: root
mode: "0755"
# UN RENOMMAGE DE ROLE LAISSE SON ANCIEN FICHIER EN VIGUEUR (2026-08-25).
#
# Ce role s'appelait `chezlepro` et deposait `10-chezlepro.conf`. Renomme en `setops`, il
# depose `10-setops.conf` — et l'ancien EST RESTE. Mesure sur forge-01 : les deux paires
# coexistent, et elles ne disent pas la meme chose (`MaxSessions 2` contre `10`).
#
# sshd retient LA PREMIERE valeur rencontree pour chaque mot-cle, et lit les drop-ins dans
# l'ordre lexical : c'est donc l'ANCIEN fichier qui gagne. Une configuration qu'on croit
# avoir remplacee reste aux commandes, en silence, et sa trace se lira un jour comme une
# lenteur inexplicable pendant un deploiement parallele.
#
# Retirer un fichier qu'on ne depose plus fait partie du travail de le deposer.
- name: Retirer les configurations SSH d'une nomenclature abandonnee
ansible.builtin.file:
path: "/etc/ssh/sshd_config.d/{{ item }}"
state: absent
loop: "{{ ssh_baseline_fichiers_perimes }}"
notify: Validate and reload ssh
- name: Déployer la configuration SSH Set-OPS
ansible.builtin.template:
src: 10-setops.conf.j2
dest: /etc/ssh/sshd_config.d/10-setops.conf
owner: root
group: root
mode: "0644"
notify: Validate and reload ssh
- name: Activer et démarrer SSH
ansible.builtin.systemd:
name: ssh
enabled: true
state: started
# Voir defaults/main.yml pour le raisonnement (etat par entree, pas d'`exclusive`).
- name: Autoriser — ou révoquer — les clés d'administration déclarées au plan
ansible.posix.authorized_key:
user: "{{ ssh_baseline_admin_user }}"
key: "{{ item.cle }}"
state: "{{ item.etat | default('present') }}"
comment: "{{ item.pourquoi | default(omit) }}"
loop: "{{ ssh_baseline_cles_admin }}"
loop_control:
label: "{{ item.pourquoi | default(item.cle[:40]) }} → {{ item.etat | default('present') }}"
when: not ansible_check_mode