Documentation/Buki/Ansible/ skills /ansible-playbooks

📖 ansible-playbooks

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



Overview

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'