Стадия жизненного цикла модуля: Experimental
У модуля есть требования для установки
v0.1.0
Дата релиза: 20 августа 2026 года.
Первый релиз модуля ansible: плейбуки Ansible выполняются на виртуальных
машинах Deckhouse Virtualization Platform через Kubernetes API, без отдельного
управляющего узла с Ansible.
Ключевые изменения
- Плейбук запускается созданием ресурса. Модуль сам выбирает виртуальные
машины, выполняет на них
ansible-playbookво временном поде и записывает результат в ресурс — отдельный хост с установленным Ansible не нужен, инвентарь вручную вести не требуется. - Виртуальные машины выбираются так же, как всё остальное в Kubernetes: по лейблам или по именам. Инвентарь собирается из их текущих адресов на момент запуска.
- Плейбук берётся оттуда, где он уже лежит: прямо в ресурсе, в ConfigMap или в
Git-репозитории, в том числе приватном, с установкой зависимостей из
requirements.yml. - Задания можно поставить на расписание отдельным ресурсом, в формате cron с указанием часового пояса, поэтому для регулярной настройки не нужен внешний планировщик.
- Один плейбук обслуживает несколько окружений. Задание несёт свои переменные, заданные в манифесте или взятые из Secret либо ConfigMap, и может выполнить только ту часть плейбука, которую выбирают его теги.
- Результат виден без чтения логов: фаза задания, результаты по каждому хосту, задачи с ошибкой и причина, по которой машина была пропущена, находятся в статусе ресурса.
Новые возможности
AnsibleRun— задание выполнить плейбук один раз: целевые виртуальные машины, учётные данные SSH из Secret, сам Ansible-плейбук и параметры запуска.AnsibleRunSchedule— регулярные задания по шаблону, с часовым поясом, приостановкой, политикой одновременного выполнения и ограничением числа сохраняемых завершённых заданий.- Задание может идти через дополнительную сеть модуля
sdn— проектную или кластерную: раннер сам подключается к названной сети, а адрес машины берётся в ней же. У сети должен быть пул адресов: без него адрес не получат ни машина, ни раннер. Доступно в коммерческих редакциях. - Цели можно задать адресом (
target.type: Hosts) — для машин, чей адрес платформе не виден, и для всего, что отвечает по SSH рядом с ними: физических серверов, сетевых устройств, машин других кластеров. Переменные и группы такого хоста задаются в самом задании. Доступно в коммерческих редакциях. - Аутентификация по SSH-ключу или по паролю, повышение привилегий и Ansible
Vault — через тот же Secret с ключами
ssh-privatekey,password,username,become-passwordиansible-vault-password. - Переменные инвентаря можно задать аннотациями на виртуальной машине, поэтому один плейбук обслуживает машины, различающиеся в деталях.
- Задание несёт свои переменные (
playbook.vars): значение задаётся прямо в манифесте любым YAML, который ожидает плейбук, либо берётся из ключа Secret или ConfigMap. Значение из чужого объекта передаётся в плейбук, не попадая ни в один объект модуля и ни в аргументы процесса раннера. - Наборы переменных берутся целиком из YAML-документа в Secret или ConfigMap
(
playbook.varsFiles) — манифестный аналог-e @vars.ymlи то место, где проект держитgroup_vars. Значения сохраняют типы, с которыми записаны. - Задание может выполнить часть плейбука:
playbook.tagsвыбирает задачи,playbook.skipTagsих исключает — так же, как это делаетansible-playbook. Если под фильтр не попала ни одна задача, задание завершается успешно с нулевыми счётчиками и сообщает об этом в статусе, поэтому опечатку в имени тега видно по результату. - Параметры запуска: режим проверки (
dryRun),diffи уровень детализации вывода Ansible. - В статусе задания отражены фаза, сводка выполнения, результаты по хостам, задачи с ошибкой и их вывод, а также коммит, из которого взят плейбук для источника Git.
- Машины, которые сейчас настроить нельзя, попадают в список пропущенных с указанием причины, а не срывают всё задание. Например, машина, уже занятая другим заданием.
- Задания отдают метрики в Prometheus: фазу каждого задания, а для завершённых — их число по исходу, длительность и результаты по хостам. У расписания есть свой дашборд Grafana, он показывается на странице расписания в консоли. Дашборд показывает, выполняются ли задания, сколько они длятся и с каким исходом завершаются.
Известные ограничения
- Модуль работает с адресами, которые известны платформе: адрес основной сети из
status.ipAddressлибо адрес дополнительной сети с настроенным пулом. Адрес, настроенный вручную внутри гостевой ОС или полученный от внешнего DHCP-сервера, платформе не виден — такие хосты задаются адресом (target.type: Hosts). - Дополнительные сети требуют модуль
sdn, пул адресов у сети и DHCP-клиент в гостевой ОС на этом интерфейсе; поддерживается только IPv4. AnsibleRunнеизменяем: чтобы выполнить плейбук повторно, создайте новый ресурс.- Учётные данные SSH читаются из Secret в том же неймспейсе, что и задание.
- Модуль находится в стадии Experimental: API может измениться в следующих релизах.
Зависимости
- Deckhouse Kubernetes Platform 1.68 или новее. В Community Edition задание работает с виртуальными машинами платформы по основной сети; цели, заданные адресом, и дополнительные сети доступны только в коммерческих редакциях.
- Модуль
virtualization— рекомендуемая зависимость: жёстко она не объявлена, но единственная поддерживаемая цель — виртуальная машина Deckhouse Virtualization Platform, поэтому без неё запускать плейбуки не на чем. - Модуль
sdn— только для заданий в дополнительных сетях; задания по основной сети от него не зависят. - Ansible Core 2.21.2 в образе раннера. Коллекции в образ не включены: плейбук
приносит их сам через
requirements.yml.