Расширенная структура задачи (task) в Ansible
Расширенная структура задач Ansible, которая включает дополнительные параметры для более сложного управления выполнением задач. В расширенной структуре задач можно задать более детальные условия, обработки ошибок, временные параметры и многое другое, что позволяет гибко контролировать выполнение задач в плейбуке.
Расширенная структура задачи (task) в Ansible:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
tasks: - name: <описание задачи> # Описание задачи <модуль>: # Имя используемого модуля (например, apt, copy, shell и т.д.) <аргументы модуля> # Параметры, передаваемые модулю action: <модуль> # Используется для более сложных вызовов модуля с аргументами в виде строки delegate_to: <хост> # Выполнение задачи на другом хосте local_action: <модуль> # Выполнение задачи на локальном хосте, как вариант delegate_to: localhost run_once: true # Выполняет задачу только один раз независимо от количества хостов check_mode: <yes|no> # Запуск задачи в режиме проверки (без реальных изменений) changed_when: <условие> # Определяет, что считать изменением состояния failed_when: <условие> # Определяет, что считать ошибкой выполнения retries: <число> # Количество повторов задачи при ошибке delay: <число> # Задержка между повторами задачи (в секундах) until: <условие> # Условие завершения выполнения задачи poll: <число> # Интервал проверки статуса выполнения задачи, используется с async async: <число> # Асинхронное выполнение задачи в течение заданного времени (в секундах) register: <variable> # Регистрация результата выполнения задачи в переменной ignore_errors: <yes|no> # Продолжение выполнения при ошибке ignore_unreachable: <yes|no> # Игнорирование недоступности узла become: <yes|no> # Включение привилегированного выполнения задачи (sudo) become_user: <пользователь> # Выполнение задачи от имени другого пользователя no_log: <yes|no> # Отключение логирования вывода задачи (например, для конфиденциальных данных) notify: # Уведомление обработчиков - <handler_name> when: <условие> # Условие выполнения задачи with_items: # Цикл выполнения задачи по элементам списка - <элемент1> - <элемент2> with_dict: # Цикл выполнения по словарю - <ключ1>: <значение1> - <ключ2>: <значение2> loop: # Более современный вариант для итераций по спискам - <элемент1> - <элемент2> until: <условие> # Условие для завершения повтора задачи tags: # Теги для фильтрации задач - <тег1> - <тег2> environment: # Установка переменных окружения для задачи <переменная>: <значение> args: # Дополнительные аргументы для модуля executable: /bin/bash # Указание исполняемого файла для shell или command vars: # Локальные переменные для задачи <переменная>: <значение> loop_control: # Управление циклами (например, пауза, метки) pause: <время> # Пауза между итерациями label: <метка> # Метка для текущей итерации delegate_facts: <yes|no> # Обновление фактов на делегированном хосте |
Пример задачи с расширенной структурой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
tasks: - name: Установка Nginx на всех хостах, кроме localhost apt: name: nginx state: present when: ansible_fqdn != "localhost" retries: 3 delay: 10 until: install_result is succeeded register: install_result notify: Restart Nginx tags: - install ignore_errors: yes delegate_to: web_server become: yes become_user: root environment: http_proxy: http://proxy.example.com:8080 |
Recommended Posts
Плейбук Ansible по развертыванию haproxy
15.02.2024