Aller au contenu principal

Ansible

Écrire des rôles Ansible de durcissement réellement idempotents

8 min de lecture
Extrait de playbook Ansible dans un éditeur clair

Un rôle de durcissement est rejoué des dizaines de fois par an. S'il n'est pas idempotent, il produit du bruit dans les rapports et, à terme, plus personne ne lit ses résultats.

Trois causes de non-idempotence

  • L'usage de command ou shell sans clause changed_when
  • La modification ligne à ligne d'un fichier au lieu d'un gabarit complet
  • Des handlers déclenchés à chaque exécution par un fichier régénéré avec un horodatage

Le motif recommandé

- name: Déployer la configuration sysctl durcie
  ansible.builtin.template:
    src: hardening.conf.j2
    dest: /etc/sysctl.d/60-hardening.conf
    owner: root
    group: root
    mode: "0644"
  notify: Recharger sysctl

- name: Vérifier une valeur appliquée
  ansible.builtin.command: sysctl -n net.ipv4.conf.all.rp_filter
  register: rp_filter
  changed_when: false
  check_mode: false

Tester le rejouement

molecule test -s default
# ou, sur une machine de recette :
ansible-playbook hardening.yml --diff
ansible-playbook hardening.yml --diff | grep -c 'changed=1'

Un second passage doit rapporter zéro changement. C'est le seul critère d'acceptation qui vaille.

Une imprécision ou une erreur dans cet article ? Signalez-la nous, nous corrigeons et datons la mise à jour.

Un premier échange technique de 20 minutes

Décrivez votre parc et vos échéances de conformité : nous vous indiquons le périmètre d'audit pertinent et le délai réaliste, sans engagement.