Écriture et révision de playbooks Ansible

VérifiéPrudence

Aide à rédiger et réviser des playbooks, rôles et tâches Ansible en respectant les bonnes pratiques d'idempotence, de sécurité et de maintenabilité. Vérifie l'utilisation des FQCNs, handlers, gestion d'erreurs et secrets chiffrés. Idéal pour automatiser la configuration de serveurs ou analyser du code existant.

Spar Skills Guide Bot
DevOpsIntermédiaire
01/03/2026
Claude CodeCursorCodex
#ansible#configuration-management#infrastructure-as-code#idempotency#playbooks

Recommandé pour

Synthèse automatique

Rédige et relit des playbooks, rôles et tâches Ansible en appliquant les bonnes pratiques (FQCN, idempotence, handlers, gestion des secrets).

Points forts

  • Impose des conventions concrètes et vérifiables : FQCN, nommage de chaque tâche, become explicite
  • Couvre les patterns courants (template avec validate, handlers pour redémarrer un service, installation de paquets)
  • Inclut une liste de contrôles de sécurité : coffre-fort ansible-vault, no_log, permissions de fichiers explicites

Limites

  • Ne s'appuie que sur les modules génériques cités (apt, service, template) ; pas de gestion spécifique à d'autres distributions ou collections tierces
  • Se concentre sur l'écriture et la revue statique, sans exécution réelle ni vérification en mode --check
  • Pas de stratégie de tests automatisés (molecule, lint) au-delà de la compatibilité check mode mentionnée
Quand l'utiliser

Quand il faut créer ou auditer un playbook Ansible pour configurer des serveurs de façon idempotente et sécurisée.

Quand l'éviter

Pour du provisionnement déclaratif de ressources cloud ou de l'orchestration Terraform/Kubernetes, hors du périmètre Ansible.

Analyse de sécurité

Prudence
Score qualité85/100

The content is a conventional Ansible style guide: it teaches FQCN usage, idempotency, handlers, vault for secrets, and explicitly forbids hardcoded secrets and unnecessary shell tasks. There is nothing destructive, obfuscated, or exfiltrating (no curl|sh, rm -rf, or secret transmission). The only reason it is not 'safe' is the broad allowed-tools set (Bash/Write/Edit), which is powerful but entirely appropriate for writing and validating playbooks.

Points d'attention
  • •Declares Bash and Write/Edit access, which lets the agent execute commands and modify files on the host
  • •No explicit guardrails limiting Bash usage to check-mode/lint/read-only Ansible invocations
Comment cette analyse est faite

Exemples

New playbook
Write an Ansible playbook that installs nginx and certbot on our webservers, deploys a config template, and restarts nginx only when the config changes.
Review existing role
Review roles/app/tasks/main.yml and flag anything that breaks our Ansible best practices — missing FQCNs, hardcoded secrets, non-idempotent shell commands.
Secrets handling
Refactor this playbook so the database password comes from an ansible-vault file and the task that writes it uses no_log.

name: ansible-playbook description: Write and review Ansible playbooks following best practices. Use when the user says "write ansible", "ansible playbook", "review playbook", "automate with ansible", or asks to configure servers with Ansible. allowed-tools: Read, Write, Edit, Glob, Grep, Bash

Ansible Playbook

Write and review Ansible playbooks, roles, and tasks following best practices.

Instructions

When writing:

  1. Understand the target configuration goal
  2. Check existing playbooks/roles for patterns to follow
  3. Write idempotent tasks with proper error handling
  4. Include appropriate tags and handlers

When reviewing:

  1. Read the playbook/role
  2. Check for issues listed below
  3. Suggest improvements

Playbook structure

---
- name: Configure web servers
  hosts: webservers
  become: true
  vars_files:
    - vars/main.yml
  handlers:
    - name: Restart nginx
      ansible.builtin.service:
        name: nginx
        state: restarted
  tasks:
    - name: Install nginx
      ansible.builtin.apt:
        name: nginx
        state: present
        update_cache: true
      notify: Restart nginx
      tags: [nginx, packages]

Best practices

  • MUST use FQCNs: ansible.builtin.copy not copy
  • MUST use name: for every task
  • MUST use become: explicitly, not assuming root
  • Use handlers for service restarts
  • Use block/rescue/always for error handling
  • Use ansible-vault for secrets
  • Use variables for anything environment-specific
  • Use --check mode compatible tasks where possible

Security checks

  • No plaintext passwords in playbooks
  • Secrets in vault-encrypted files
  • no_log: true on tasks with sensitive data
  • File permissions explicitly set
  • SSH keys not hardcoded

Common patterns

# Idempotent file content
- name: Configure app
  ansible.builtin.template:
    src: app.conf.j2
    dest: /etc/app/config
    mode: "0644"
    owner: app
    group: app
    validate: "/usr/bin/app --check %s"
  notify: Restart app

# Package installation
- name: Install packages
  ansible.builtin.apt:
    name: "{{ packages }}"
    state: present
  vars:
    packages:
      - nginx
      - certbot

Rules

  • MUST use fully qualified collection names (FQCNs)
  • MUST include task names
  • Never hardcode secrets in playbooks
  • Never use shell: when a module exists
  • Always make tasks idempotent

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/ansible-playbook-writing-and-review-mm78nocd/download' --output '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md.part' && mv '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md.part' '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Edit, Glob, Grep, Bash

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md' && test -s '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/ansible-playbook' && cp -R '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd' '.claude/skills/ansible-playbook'

Cursor
test -f '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md' && test -s '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/ansible-playbook' && cp -R '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd' '.cursor/skills/ansible-playbook'

Codex
test -f '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md' && test -s '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/ansible-playbook' && cp -R '.skill-downloads/ansible-playbook-writing-and-review-mm78nocd' '.agents/skills/ansible-playbook'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/ansible-playbook-writing-and-review-mm78nocd'

openskills read 'ansible-playbook-writing-and-review-mm78nocd'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/ansible-playbook-writing-and-review-mm78nocd/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires