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>
40 lines
1.2 KiB
YAML
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
|