mcpField
A
ansible-playbook

ansible-playbook

github.com/realsigridjinCloud & DevOps9444 installsUpdated 41w ago
Repository

About ansible-playbook

A reference skill for writing, organizing, and troubleshooting Ansible playbooks, roles, and inventories. It emphasizes idempotent desired-state configuration and includes module patterns, variable precedence, error handling, and verification commands.

Key features

  1. 01Playbook and role structure guidance
  2. 02Inventory and variable precedence reference
  3. 03Fully qualified module patterns
  4. 04Handler and error-handling examples
  5. 05Syntax, dry-run, and inventory checks

Use cases

  1. 01Create a reusable Ansible role
  2. 02Debug YAML or module parameter issues
  3. 03Convert shell tasks into Ansible playbooks
  4. 04Verify inventory and playbook changes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/realsigridjin/hello-ansible-skills --skill ansible-playbook

After installing, type/ansible-playbookin Claude Code to confirm it loaded.

Details

From the project README

Ansible Playbook Development

Overview

Ansible playbooks declare desired system state rather than imperative commands. The core principle is idempotency: running a playbook multiple times produces the same result without unintended changes.

When to Use

  • Creating new playbooks or roles
  • Writing inventory files
  • Debugging YAML syntax errors
  • Troubleshooting module parameter issues
  • Understanding variable precedence
  • Converting shell scripts to Ansible

Quick Reference

Project Structure
project/
├── ansible.cfg          # Configuration
├── inventory            # Host definitions
├── group_vars/          # Group variables
├── host_vars/           # Host-specific vars
├── roles/               # Reusable roles
└── playbooks/           # Playbook files
Essential ansible.cfg
[defaults]
inventory = ./inventory
roles_path = ./roles
host_key_checking = False
stdout_callback = yaml

[privilege_escalation]
become = True
become_method = sudo
Module Patterns
OperationModuleKey Parameters
Create directoryansible.builtin.filestate: directory, mode, owner
Copy fileansible.builtin.copysrc, dest, mode
Templateansible.builtin.templatesrc, dest, variables in .j2
Install packageansible.builtin.packagename, state: present
Manage serviceansible.builtin.servicename, state, enabled
Run commandansible.builtin.commandcmd, register result, set changed_when
Variable Precedence (lowest to highest)
  1. Role defaults (defaults/main.yml)
  2. Inventory group_vars
  3. Inventory host_vars
  4. Playbook vars
  5. Role vars (vars/main.yml)
  6. Task vars
  7. Extra vars (-e)
Handlers
tasks:
  - name: Update config
    ansible.builtin.template:
      src: app.conf.j2
      dest: /etc/app.conf
    notify: Restart app

handlers:
  - name: Restart app
    ansible.builtin.service:
      name: app
      state: restarted
Error Handling
- block:
    - name: Risky operation
      ansible.builtin.command: /opt/app/upgrade.sh
  rescue:
    - name: Handle failure
      ansible.builtin.debug:
        msg: "Upgrade failed, rolling back"
  always:
    - name: Cleanup
      ansible.builtin.file:
        path: /tmp/upgrade.lock
        state: absent

Common Mistakes

MistakeFix
Using short module namesAlways use FQCN: ansible.builtin.copy not copy
Hardcoded valuesExtract to variables in defaults/main.yml
Missing changed_when on commandsAdd changed_when: "'created' in result.stdout"
Forgetting handler flushUse meta: flush_handlers when needed before dependent tasks
YAML indentation errorsUse 2 spaces, never tabs
Colon in unquoted stringQuote values containing :

Verification Commands

ansible-playbook --syntax-check playbook.yml  # Check YAML
ansible-playbook --check playbook.yml         # Dry run
ansible-playbook --check --diff playbook.yml  # Show file changes
ansible-inventory --list                       # Verify inventory
ansible-inventory --host hostname             # Check host vars

Comments

Markdown supported