Agent Skills: Interactive Ansible Development

Use when guiding someone through Ansible setup step-by-step. Use when starting a new Ansible project from scratch. Use when teaching Ansible through hands-on development.

UncategorizedID: sigridjineth/hello-ansible-skills/ansible-interactive

Install this agent skill to your local

pnpm dlx add-skill https://github.com/sigridjineth/hello-ansible-skills/tree/HEAD/skills/ansible-interactive

Skill Files

Browse the full folder contents for ansible-interactive.

Download Skill

Loading file tree…

skills/ansible-interactive/SKILL.md

Skill Metadata

Name
ansible-interactive
Description
Use when guiding someone through Ansible setup step-by-step. Use when starting a new Ansible project from scratch. Use when teaching Ansible through hands-on development.

Interactive Ansible Development

Overview

Interactive development builds automation incrementally with continuous validation. Each component is tested before adding the next. This catches errors early when they're easy to diagnose.

When to Use

  • Setting up Ansible for a new environment
  • Teaching someone Ansible hands-on
  • Building playbooks incrementally with validation
  • Troubleshooting connectivity before automation

Development Phases

Phase 1: Environment Analysis

Gather before writing any code:

| Question | Why It Matters | |----------|----------------| | How many servers? | Affects inventory organization | | IP addresses/hostnames? | Required for inventory | | SSH user and key location? | Connection configuration | | Password or key auth? | Determines SSH setup | | Sudo with or without password? | Privilege escalation config | | Server roles (web, db, app)? | Inventory grouping | | Operating systems? | Module selection (apt vs yum) |

Verify Ansible is installed: ansible --version

Phase 2: Project Setup

Create minimal structure:

mkdir ansible-project && cd ansible-project

ansible.cfg:

[defaults]
inventory = ./inventory
host_key_checking = False
stdout_callback = yaml

[privilege_escalation]
become = True
become_method = sudo

inventory:

[webservers]
web1 ansible_host=192.168.1.10 ansible_user=admin ansible_ssh_private_key_file=~/.ssh/id_rsa

[dbservers]
db1 ansible_host=192.168.1.20 ansible_user=admin ansible_ssh_private_key_file=~/.ssh/id_rsa

Phase 3: Connectivity Test

Always test before writing playbooks:

ansible all -m ping

| Result | Action | |--------|--------| | SUCCESS | Proceed to playbooks | | UNREACHABLE | Check ssh -v user@host | | Permission denied | Verify key path, permissions (600) | | Sudo password required | Add --ask-become-pass or configure NOPASSWD |

Phase 4: Incremental Playbook Development

Start simple, add one task at a time:

# playbook.yml - start with facts
---
- hosts: all
  tasks:
    - name: Show OS info
      ansible.builtin.debug:
        msg: "{{ ansible_distribution }} {{ ansible_distribution_version }}"

Run: ansible-playbook playbook.yml

Then add tasks one by one, testing after each:

    - name: Ensure nginx installed
      ansible.builtin.package:
        name: nginx
        state: present

Run again. Fix any errors before adding more.

Phase 5: Validation Cycle

After each change:

  1. ansible-playbook --syntax-check playbook.yml
  2. ansible-playbook --check --diff playbook.yml
  3. ansible-playbook playbook.yml
  4. Run again—verify changed=0 (idempotency)

Red Flags - Stop and Debug

  • Adding multiple untested tasks at once
  • Skipping --check before real runs
  • Ignoring "changed" on second run
  • Not testing SSH before writing playbooks

Communication Pattern

When guiding users:

  • Explain what will happen before running commands
  • After completion, summarize what was done
  • When multiple approaches exist, present options with tradeoffs
  • Acknowledge progress at milestones