ð 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'