From ansible-skills
Guides interactive Ansible development: environment analysis, project setup, connectivity testing, incremental playbook building, and validation cycles. For new projects, hands-on teaching, and troubleshooting.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ansible-skills:ansible-interactiveThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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.
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
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
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 |
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.
After each change:
ansible-playbook --syntax-check playbook.ymlansible-playbook --check --diff playbook.ymlansible-playbook playbook.ymlchanged=0 (idempotency)--check before real runsWhen guiding users:
npx claudepluginhub cruftyoldsysadmin/ansible-skills --plugin ansible-skillsGuides interactive Ansible development: environment analysis, project setup, connectivity testing, incremental playbook building, and validation cycles. For new projects, hands-on teaching, and troubleshooting.
Guides writing Ansible playbooks, tasks, handlers, variables, conditionals, and loops. Covers project structure and development workflows for automation.
Generates or scaffolds Ansible playbooks, roles, tasks, handlers, inventory, and vars from requests. Handles full projects, snippets, or docs with templates and best practices.