Playbook
Ansible Playbook - це текстовий файл, написаний у форматі YAML, який містить набір інструкцій (tasks), що описують конфігураційні налаштування або процедури автоматизації для керування віддаленими системами. Playbooks можуть використовуватись для налаштування серверів, встановлення програмного забезпечення, виконання рутинних операцій адміністрування та іншої автоматизації ІТ-процесів.
Для чого необхідно?
- Автоматизація: Зменшує кількість ручних операцій, зменшуючи ризик людських помилок.
- Повторюваність: Забезпечує однакові результати при повторному виконанні скриптів.
- Масштабування: Дозволяє керувати великою кількістю серверів одночасно.
- Документування: Playbooks можна використовувати як документацію для процесів налаштування і адміністрування систем.
Як це можна використовувати?
Ansible Playbooks можуть використовуватись для:
- Конфігурування систем: Виконання налаштувань серверів або робочих станцій.
- Розгортання додатків: Встановлення та налаштування програмного забезпечення.
- Управління системами: Виконання рутинних задач адміністрування.
- Оркестрація: Координація складних процесів розгортання, які включають декілька незалежних компонентів.
Синтаксис конфігураційного файлу
Ansible Playbook файли пишуться у форматі YAML і мають чітку структуру.
---
- name: Назва Playbook
hosts: webservers
become: yes # піднімає привілеї до root (якщо потрібно)
tasks:
- name: Завдання 1 - Встановлення Apache
apt:
name: apache2
state: present
- name: Завдання 2 - Запуск служби Apache
service:
name: apache2
state: started
enabled: yes
- name: Завдання 3 - Копіювання конфігураційного файлу
copy:
src: /path/to/local/file.conf
dest: /etc/apache2/sites-available/site.conf
- name: Завдання 4 - Перезавантажити Apache
service:
name: apache2
state: restarted
Приклади для кожної можливості
Установка пакетів
- name: Установка пакету Nginx
hosts: webservers
tasks:
- name: Встановити Nginx
apt:
name: nginx
state: present
Копіювання файлів
- name: Копіювання файлів до віддаленого сервера
hosts: webservers
tasks:
- name: Копіювати файл конфігурації
copy:
src: /local/path/to/file.conf
dest: /remote/path/to/file.conf
Запуск команд
- name: Запуск команди на віддаленому сервері
hosts: all
tasks:
- name: Виконати оновлення пакетів
command: apt update
Управління службами
- name: Управління службами
hosts: webservers
tasks:
- name: Запустити Nginx
service:
name: nginx
state: started
Використання шаблонів
- name: Використання Jinja2 шаблонів
hosts: webservers
tasks:
- name: Розгорнути конфігураційний файл з шаблону
template:
src: /path/to/template.j2
dest: /etc/nginx/nginx.conf
vars:
server_name: example.com
listen_port: 80
Додаткові можливості
Умови (Conditionals)
- name: Використання умов
hosts: all
tasks:
- name: Установка пакету тільки для Debian
apt:
name: nginx
state: present
when: ansible_distribution == "Debian"
Цикли (Loops)
- name: Використання циклів
hosts: webservers
tasks:
- name: Встановлення декількох пакетів
apt:
name: "{{ item }}"
state: present
loop:
- nginx
- git
- curl
Обробники (Handlers)
- name: Використання обробників
hosts: webservers
tasks:
- name: Копіювати конфігураційний файл
copy:
src: /path/to/nginx.conf
dest: /etc/nginx/nginx.conf
notify:
- Перезапустити Nginx
handlers:
- name: Перезапустити Nginx
service:
name: nginx
state: restarted
Інклюзії і ролі
Інклюзії завдань (Task Includes)
- name: Інклюзія інших завдань
hosts: all
tasks:
- include: tasks/tasks_file.yml
Ролі (Roles)
Структура каталогу:
my-ansible-project/
├── playbook.yml
├── roles/
│ └── webserver/
│ ├── tasks/
│ │ └── main.yml
│ ├── templates/
│ │ └── nginx.conf.j2
│ └── handlers/
│ └── main.yml
Використання ролей у Playbook:
- name: Playbook з ролями
hosts: webservers
roles:
- role: webserver
Вміст roles/webserver/tasks/main.yml:
- name: Встановити Nginx
apt:
name: nginx
state: present
- name: Розгорнути конфігураційний файл
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify:
- Перезапустити Nginx
Вміст roles/webserver/handlers/main.yml:
- name: Перезапустити Nginx
service:
name: nginx
state: restarted
Підсумок
Ansible Playbooks — це потужний інструмент для автоматизації різноманітних завдань у сфері системного адміністрування та DevOps. Використання Playbooks дозволяє забезпечити повторюваність конфігурацій, прискорити розгортання систем і мінімізувати кількість людських помилок. Формат YAML робить ці файли зрозумілими і легко читаними як людьми, так і машинами.