Skip to main content
InfrastructureTheBushidoCollective

ansible-playbooks

Use when writing and organizing Ansible playbooks for automated configuration management and infrastructure orchestration.

Stars
162
Source
TheBushidoCollective/han
Updated
2026-04-28
Slug
TheBushidoCollective--han--ansible-playbooks
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/TheBushidoCollective/han/HEAD/plugins/tools/ansible/skills/ansible-playbooks/SKILL.md -o .claude/skills/ansible-playbooks.md

Drops the SKILL.md into .claude/skills/ansible-playbooks.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Ansible Playbooks

Writing and organizing Ansible playbooks for configuration management.

Basic Playbook

---
- name: Configure web servers
  hosts: webservers
  become: yes
  
  vars:
    http_port: 80
    app_version: "1.0.0"
  
  tasks:
    - name: Install nginx
      apt:
        name: nginx
        state: present
        update_cache: yes
    
    - name: Start nginx
      service:
        name: nginx
        state: started
        enabled: yes
    
    - name: Deploy application
      copy:
        src: ./app
        dest: /var/www/html
        owner: www-data
        mode: '0755'

Inventory

[webservers]
web1.example.com
web2.example.com

[databases]
db1.example.com

[production:children]
webservers
databases

Common Modules

Package Management

- name: Install packages
  apt:
    name:
      - nginx
      - git
      - python3
    state: present

File Operations

- name: Copy configuration
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
    backup: yes
  notify: Restart nginx

Handlers

handlers:
  - name: Restart nginx
    service:
      name: nginx
      state: restarted

Best Practices

Use Roles

roles/
├── webserver/
│   ├── tasks/
│   │   └── main.yml
│   ├── handlers/
│   │   └── main.yml
│   └── templates/
│       └── nginx.conf.j2

Idempotency

- name: Ensure directory exists
  file:
    path: /opt/app
    state: directory
    mode: '0755'