SKILL.md
Creating Ansible Playbooks
Overview
Generate production-ready Ansible playbooks, roles, and inventories for infrastructure automation. Supports provisioning servers, deploying applications, configuring services, and enforcing desired state across fleets of machines using SSH-based agentless automation.
Prerequisites
- Ansible 2.14+ installed (
ansible --version) - SSH access to target hosts with key-based authentication
- Python 3.9+ on control node and managed nodes
- Inventory of target hosts (IPs or hostnames)
- Privilege escalation credentials (sudo) if configuring system-level resources
ansible-lintinstalled for playbook validation
Instructions
- Scan the project for existing Ansible files (
ansible.cfg,inventory/,roles/,group_vars/) to understand current structure - Determine the automation target: server provisioning, application deployment, configuration management, or security hardening
- Create the playbook YAML with proper structure:
hosts,become,vars,tasks,handlers - Extract reusable logic into roles using the standard directory layout (
tasks/,handlers/,templates/,defaults/,vars/,meta/) - Define variables in
group_vars/andhost_vars/for environment-specific values, keeping secrets invault-encrypted files - Use Jinja2 templates for configuration files that vary across environments
- Add handlers for service restarts triggered by configuration changes
- Validate the playbook with
ansible-lintandansible-playbook --check --diff(dry run) - Test idempotency by running the playbook twice and confirming no changes on the second run
