Стадия жизненного цикла модуля: 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.