Playbook

Ansible Playbook - це текстовий файл, написаний у форматі YAML, який містить набір інструкцій (tasks), що описують конфігураційні налаштування або процедури автоматизації для керування віддаленими системами. Playbooks можуть використовуватись для налаштування серверів, встановлення програмного забезпечення, виконання рутинних операцій адміністрування та іншої автоматизації ІТ-процесів.

Для чого необхідно?

  1. Автоматизація: Зменшує кількість ручних операцій, зменшуючи ризик людських помилок.
  2. Повторюваність: Забезпечує однакові результати при повторному виконанні скриптів.
  3. Масштабування: Дозволяє керувати великою кількістю серверів одночасно.
  4. Документування: Playbooks можна використовувати як документацію для процесів налаштування і адміністрування систем.

Як це можна використовувати?

Ansible Playbooks можуть використовуватись для:

  1. Конфігурування систем: Виконання налаштувань серверів або робочих станцій.
  2. Розгортання додатків: Встановлення та налаштування програмного забезпечення.
  3. Управління системами: Виконання рутинних задач адміністрування.
  4. Оркестрація: Координація складних процесів розгортання, які включають декілька незалежних компонентів.

Синтаксис конфігураційного файлу

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 робить ці файли зрозумілими і легко читаними як людьми, так і машинами.

Посилання

results matching ""

    No results matching ""