Основная структура задачи (task) в Ansible:
В Ansible плейбуке каждая задача (task
) представляет собой единицу работы, которая выполняется на целевых узлах. Задачи выполняются последовательно и описывают, что именно должно быть сделано на каждом узле. Задачи в плейбуке определяются как список под ключом tasks
.
Основная структура задачи (task) в Ansible:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
tasks: - name: <описание задачи> <модуль>: # Имя модуля, который будет использоваться для выполнения задачи <аргументы> # Аргументы, необходимые для модуля register: <variable> # (Опционально) Регистрация результата выполнения задачи в переменной when: <условие> # (Опционально) Условие выполнения задачи ignore_errors: <yes|no> # (Опционально) Игнорировать ошибки задачи changed_when: <условие> # (Опционально) Определяет, что считать изменением failed_when: <условие> # (Опционально) Определяет, что считать ошибкой retries: <число> # (Опционально) Количество попыток при ошибке delay: <число> # (Опционально) Задержка между попытками until: <условие> # (Опционально) Условие для повторного выполнения задачи notify: <handlers> # (Опционально) Уведомляет обработчики tags: <теги> # (Опционально) Теги для фильтрации задач environment: # (Опционально) Установить переменные окружения для задачи <ключ>: <значение> |
Подробное объяснение ключевых элементов задачи:
name
:- Описание задачи, которое помогает понять, что она делает. Это поле необязательно, но рекомендуется для ясности.
<модуль>
:- Основная часть задачи, указывающая модуль Ansible, который будет использоваться (например,
copy
,yum
,service
). - Аргументы модуля указываются как ключ-значение (например,
path: /tmp/file
,state: present
).
- Основная часть задачи, указывающая модуль Ansible, который будет использоваться (например,
register
:- Используется для сохранения результата выполнения задачи в переменной. Полезно для дальнейшего использования в других задачах.
when
:- Условие, которое должно быть выполнено, чтобы задача выполнялась. Например,
when: ansible_os_family == 'Debian'
.
- Условие, которое должно быть выполнено, чтобы задача выполнялась. Например,
ignore_errors
:- Позволяет задаче продолжить выполнение, даже если она завершится с ошибкой. Значение:
yes
илиno
.
- Позволяет задаче продолжить выполнение, даже если она завершится с ошибкой. Значение:
changed_when
:- Условие, которое указывает, что считать изменением состояния после выполнения задачи.
failed_when
:- Условие, определяющее, что считать ошибкой при выполнении задачи, даже если модуль завершился успешно.
retries
иdelay
:- Указывают, сколько раз повторять выполнение задачи и с какой задержкой между попытками. Используются совместно с
until
.
- Указывают, сколько раз повторять выполнение задачи и с какой задержкой между попытками. Используются совместно с
until
:- Условие, которое должно быть выполнено, чтобы завершить повторное выполнение задачи.
notify
:- Указывает на обработчик (handler), который должен быть вызван после успешного выполнения задачи.
tags
:- Позволяет помечать задачи тегами для последующего выполнения или исключения задач на основе тегов.
environment
:- Определяет переменные окружения, которые будут использоваться только в рамках данной задачи.
Пример задачи в Ansible плейбуке:
1 2 3 4 5 6 7 8 9 10 11 |
tasks: - name: Установка пакета Nginx apt: name: nginx state: present when: ansible_os_family == 'Debian' register: install_result notify: Restart Nginx tags: - webserver |
В этом примере задача устанавливает Nginx на целевых узлах с операционной системой семейства Debian, регистрирует результат установки в переменной install_result
, и, если задача выполнена успешно, уведомляет обработчик Restart Nginx
о необходимости перезапустить сервис.
Recommended Posts
Плейбук Ansible по развертыванию haproxy
15.02.2024