Ветвление по сведениям о семействе ОС
Разные шаги для Debian и RedHat
«Ветвление по сведениям о семействе ОС» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Один плейбук — много дистрибутивов
Debian использует apt, а RedHat — dnf. Благодаря фактам и when один плейбук адаптируется к каждой операционной системе. 🐧
Факт os_family
Ansible собирает факт ansible_os_family — общее обозначение, например Debian или RedHat, объединяющее родственные дистрибутивы.
when: ansible_facts["os_family"] == "Debian"Семейство и дистрибутив
os_family — общее понятие, а ansible_distribution указывает точный дистрибутив. Ubuntu и Debian относятся к семейству Debian, но являются разными дистрибутивами.
Задача только для Debian
Ограничьте задачу с apt, чтобы она выполнялась только в семействе Debian. Узлы RedHat просто пропустят её.
- name: Install nginx (apt)
ansible.builtin.apt:
name: nginx
when: ansible_os_family == "Debian"Аналогичный вариант для RedHat
Добавьте соседнюю задачу для семейства RedHat. Теперь оба варианта охвачены одним и тем же плеем.
- name: Install nginx (dnf)
ansible.builtin.dnf:
name: nginx
when: ansible_os_family == "RedHat"Сокращённый вариант с package
Для простых установок универсальный модуль package автоматически выбирает нужный инструмент, поэтому ветвление может вообще не понадобиться.
Строки чувствительны к регистру
Названия семейств должны совпадать точно: это RedHat, а не Redhat и не redhat. Неверный регистр молча пропустит каждый узел. ⚠️
Другие полезные факты об OS
Помимо семейства доступны ansible_distribution_version и ansible_distribution_major_version, которые позволяют принимать более точные решения с учётом версии.
when: ansible_distribution_major_version == "9"Проверьте значение перед ветвлением
Не уверены в значении? Простая задача debug выведет факт, чтобы Вы могли записать нужное точное условие.
- ansible.builtin.debug:
var: ansible_os_familyФакты необходимо собрать
Для ветвления по фактам об OS параметр gather_facts должен быть включён. Если Вы его отключили, переменная os_family будет неопределённой.
Переносимые плейбуки — лучший выбор
Один файл, работающий с любым дистрибутивом, проще поддерживать, чем отдельные копии для каждой OS. Факты и when делают автоматизацию переносимой. 🌍
Быстрая проверка
Давайте разберём ветвление по OS.
Итоги
Используйте ansible_os_family в when, чтобы разделить Debian и RedHat. Не отключайте сбор фактов и сопоставляйте точное имя. ✅
Часто задаваемые вопросы
Урок «Ветвление по сведениям о семействе ОС» бесплатный?
Да — полный текст урока «Ветвление по сведениям о семействе ОС» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Ветвление по сведениям о семействе ОС»?
Разные шаги для Debian и RedHat Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Ветвление по сведениям о семействе ОС»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Запуск задачи только при значении True
- Ветвление по сведениям о семействе ОС
- Объединение условий с and / or
- Регистрация результата и принятие решения