Введение в условные операторы
Условные операторы в Ansible позволяют контролировать выполнение задач на основе определенных условий. Это чрезвычайно полезно, когда вам нужно выполнять разные действия в зависимости от состояния вашей системы или значения определенных переменных.
Создадим простой плейбук, который демонстрирует использование условных операторов:
nano conditional_example.yml
Эта команда открывает текстовый редактор nano для создания нового файла с именем conditional_example.yml. Теперь добавим следующее содержимое:
---
- name: Conditional Example
hosts: localhost
gather_facts: yes
tasks:
- name: Check OS family
debug:
msg: "This is a Debian-based system"
when: ansible_os_family == "Debian"
- name: Check OS family (alternative)
debug:
msg: "This is not a Debian-based system"
when: ansible_os_family!= "Debian"
Разберем это на части:
--- в начале файла указывает на начало документа YAML.
name: Conditional Example дает имя нашему плейбуку.
hosts: localhost указывает, что этот плейбук будет выполняться на локальной машине.
gather_facts: yes сообщает Ansible собрать информацию о системе перед выполнением задач. Это важно, так как мы будем использовать эти факты в наших условиях.
tasks: начинает список задач, которые будут выполнены.
Каждая задача использует модуль debug для вывода сообщения, но выполнение контролируется условием when:
- Первая задача будет выполнена только если система основана на Debian (
ansible_os_family == "Debian").
- Вторая задача будет выполнена только если система не основана на Debian (
ansible_os_family!= "Debian").
ansible_os_family - это факт, собранный Ansible о целевой системе. Здесь он используется для демонстрации работы условных операторов.
Сохраните и выйдите из редактора nano (Ctrl+X, затем Y, затем Enter).
Теперь запустим плейбук:
ansible-playbook -i../inventory.ini conditional_example.yml
Эта команда сообщает Ansible запустить наш плейбук. Опция -i../inventory.ini указывает на файл инвентаря, который мы создали ранее.
Вы должны увидеть вывод, показывающий, является ли ваша система Debian-совместимой или нет. Будет отображено только одно из отладочных сообщений, в зависимости от семейства операционной системы вашей системы.
Этот пример демонстрирует, как условные операторы можно использовать для того, чтобы сделать ваши плейбуки адаптивными к разным окружениям. В реальных сценариях вы можете использовать условные операторы для установки разных пакетов на разных типах операционных систем или для пропуска определенных задач, если файл уже существует.
Помните, сила условных операторов заключается в их способности сделать ваши плейбуки гибкими и способными обрабатывать различные сценарии без необходимости создавать отдельные плейбуки для каждого случая.