Set-OPS-Public/roles/ssh_baseline/tasks/main.yml
Daniel Allaire 1363ebff59 acces : le runner peut enfin entrer, et trois silences fermes
ssh_baseline gere les cles d'administration declarees au plan, avec un `etat`
par entree : revoquer devient un changement de plan, pas une visite sur chaque
machine. Pas d'exclusive -- il effacerait la cle de cloud-init et fermerait la
flotte a tout le monde.

cloud-init reecrivait /etc/hosts a chaque demarrage et effacait le plancher de
resolution. Constate sur infra-dns-01 apres un redemarrage : six entrees
perdues, revelees deux jours plus tard par un apt update qui ne resolvait plus.

requirements.yml ne declarait pas ansible.posix ni community.docker, pourtant
utilisees. Ca marchait chez le mainteneur, pas sur un runner. Et le cache des
collections suivait l'existence du fichier au lieu de son contenu.

Enfin : deux `when` sur une meme tache, c'est un seul -- le dernier. Le
check-mode avait disparu en silence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 15:50:37 -04:00

40 lines
1.2 KiB
YAML

---
- 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"
- 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