Стадия жизненного цикла модуля: Experimental
У модуля есть требования для установки

Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.

AnsibleRun

Scope: Namespaced
Version: v1alpha1

Задание однократно выполнить плейбук на выбранных целях.
  • apiVersion
    строка
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    строка
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    объект
  • spec
    объект
    Желаемое состояние ресурса AnsibleRun.
    • spec.connection
      объект

      Обязательный параметр

      Параметры подключения к целям по SSH.
      • spec.connection.network
        объект

        Сеть, в которой выполняется задание. Если параметр не указан, задание выполняется в основной сети: раннер остаётся в сети подов кластера и подключается к виртуальным машинам по адресу из status.ipAddress.

        Указание дополнительной сети модуля sdn определяет, в какой сети выполняется задание: под раннера подключается к этой сети, и адрес целевой виртуальной машины берётся в ней же. У сети должен быть пул адресов (spec.ipam.ipAddressPoolRef). Без него адрес не получат ни машина, ни раннер.

        Дополнительные сети доступны в коммерческих редакциях. В Community Edition задание выполняется в основной сети, любой другой тип сети отклоняется.

        • spec.connection.network.name
          строка
          Имя ресурса Network или ClusterNetwork. Обязательно для этих двух типов и недопустимо для Main, у которой своего имени нет.

          Минимальная длина: 1

        • spec.connection.network.type
          строка
          Тип сети.

          По умолчанию: Main

          Допустимые значения: Main, Network, ClusterNetwork

      • spec.connection.secretRef
        объект

        Обязательный параметр

        Ссылка на Secret с учётными данными SSH. Secret должен находиться в том же неймспейсе, что и ресурс AnsibleRun, и содержать хотя бы один из ключей (имена ключей соответствуют встроенным типам Secret kubernetes.io/ssh-auth и kubernetes.io/basic-auth):

        • ssh-privatekey — приватный SSH-ключ;
        • password — пароль SSH.

        Необязательные ключи:

        • username — имя пользователя SSH;
        • become-password — пароль для повышения привилегий;
        • ansible-vault-password — пароль для Ansible Vault, формата шифрования файлов в Ansible. Речь именно о нём, а не о хранилище секретов вида HashiCorp Vault или Deckhouse Stronghold.
        • spec.connection.secretRef.name
          строка

          Обязательный параметр

          Имя Secret.

          Минимальная длина: 1

      • spec.connection.type
        строка
        Транспорт, по которому задание подключается к целям. Сегодня доступен только SSH.

        По умолчанию: SSH

        Допустимые значения: SSH

    • spec.playbook
      объект

      Обязательный параметр

      Плейбук задания. Описывает, откуда он берётся, какая его часть выполняется и с какими значениями. Параметры, которые не влияют на состав задач (режим проверки, вывод изменений, детализация логов), задаются в runner.
      • spec.playbook.configMapRef
        объект
        Ссылка на ConfigMap, содержащий плейбук.
        • spec.playbook.configMapRef.key
          строка
          Ключ в данных ConfigMap, содержащий плейбук. По умолчанию — playbook.yaml.
        • spec.playbook.configMapRef.name
          строка

          Обязательный параметр

          Имя ConfigMap.
      • spec.playbook.git
        объект
        Получение проекта с плейбуком из Git-репозитория.
        • spec.playbook.git.path
          строка
          Путь к файлу плейбука внутри репозитория. По умолчанию — playbook.yaml.
        • spec.playbook.git.revision
          строка
          Ветка, тег или SHA коммита. По умолчанию — ветка по умолчанию репозитория.
        • spec.playbook.git.secretRef
          объект

          Ссылка на Secret с учётными данными репозитория (имена ключей соответствуют встроенным типам Secret kubernetes.io/ssh-auth и kubernetes.io/basic-auth):

          • для SSH-адресов: ssh-privatekey и known_hosts (оба обязательны);
          • для HTTP(S)-адресов: username и password (токен передаётся как пароль), а также опционально ca.crt — для сервера с собственным удостоверяющим центром.
          • spec.playbook.git.secretRef.name
            строка

            Обязательный параметр

            Имя Secret.

            Минимальная длина: 1

        • spec.playbook.git.url
          строка

          Обязательный параметр

          Адрес репозитория по HTTP(S) или SSH (только явная форма ssh://; сокращённая запись git@host:path не поддерживается). Для SSH-адресов обязателен secretRef.

          Шаблон: ^(https?|ssh)://.+

      • spec.playbook.inline
        строка
        Текст плейбука, заданный непосредственно в ресурсе.

        Максимальная длина: 65536

      • spec.playbook.skipTags
        массив строк

        Теги задач, которые нужно исключить из задания. то же, что ansible-playbook --skip-tags.

        Имя тега — любая строка без пробелов и запятой. Запятая разделяет теги в аргументе, а пробелы Ansible удаляет самостоятельно.

        • spec.playbook.skipTags.Элемент массива
          строка

          Длина: 1..63

          Шаблон: ^[^\s,]+$

      • spec.playbook.tags
        массив строк

        Теги задач, которые нужно выполнить. То же, что ansible-playbook --tags. Задание выполнит только помеченные ими задачи; вместе со skipTags выполняется их пересечение за вычетом исключённых.

        Служебные теги Ansible работают как в командной строке: always выполняется при любом фильтре, пока не назван в skipTags; never — только когда назван здесь явно; tagged, untagged и all выбирают задачи по наличию тега.

        Если под фильтр не попала ни одна задача, это не ошибка: ansible-playbook завершается успешно, ничего не сделав, и задание сообщает об этом в .status.message.

        • spec.playbook.tags.Элемент массива
          строка

          Длина: 1..63

          Шаблон: ^[^\s,]+$

      • spec.playbook.type
        строка
        Тип источника плейбука.

        По умолчанию: Inline

        Допустимые значения: Inline, ConfigMap, Git

      • spec.playbook.vars
        массив объектов

        Переменные, которые задание передаёт плейбуку, чтобы один плейбук выполнялся с разными значениями.

        Передаются в ansible-playbook как --extra-vars, это высший уровень приоритета переменных Ansible, поэтому они перекрывают значения, заданные самим плейбуком и его проектом, а также переменные хостов.

        Имя встречается один раз. Записи различаются по имени, поэтому server-side apply объединяет список по переменным, а не заменяет его целиком.

        • spec.playbook.vars.name
          строка
          Имя переменной — то, по которому к ней обращается плейбук. Идентификатор Ansible, то есть буква или подчёркивание, дальше буквы, цифры и подчёркивания.

          Длина: 1..63

          Шаблон: ^[A-Za-z_][A-Za-z0-9_]*$

        • spec.playbook.vars.value
          Значение переменной — любой YAML, который ожидает плейбук: строка, число, список или отображение.
        • spec.playbook.vars.valueFrom
          объект

          Источник значения — ключ Secret или ConfigMap.

          Такое значение всегда строка, потому что оно передаётся в раннер через переменные окружения пода, а окружение хранит строки. Если плейбуку нужен список или отображение, он разбирает строку самостоятельно фильтром from_yaml.

          • spec.playbook.vars.valueFrom.configMapKeyRef
            объект
            Ключ ConfigMap в том же неймспейсе.
            • spec.playbook.vars.valueFrom.configMapKeyRef.key
              строка

              Обязательный параметр

              Ключ, из которого берётся значение.
            • spec.playbook.vars.valueFrom.configMapKeyRef.name
              строка
              Имя ConfigMap. Пустое имя задание отклоняет.

              По умолчанию: ‘’

            • spec.playbook.vars.valueFrom.configMapKeyRef.optional
              булевый
              Не считать отсутствие ошибкой. Относится и к самому ConfigMap, и к ключу. Без него задание ждёт появления объекта в состоянии Pending, а отсутствующий ключ завершает задание ошибкой. С ним переменная не появляется, и плейбук видит её неопределённой, и default() и when: ... is defined работают.
          • spec.playbook.vars.valueFrom.secretKeyRef
            объект
            Ключ Secret в том же неймспейсе.
            • spec.playbook.vars.valueFrom.secretKeyRef.key
              строка

              Обязательный параметр

              Ключ, из которого берётся значение. Значение не попадает ни в один объект, который создаёт контроллер. Под получает ссылку на этот ключ, а файл переменных содержит обращение к переменной окружения.
            • spec.playbook.vars.valueFrom.secretKeyRef.name
              строка
              Имя Secret. Пустое имя задание отклоняет.

              По умолчанию: ‘’

            • spec.playbook.vars.valueFrom.secretKeyRef.optional
              булевый
              Не считать отсутствие ошибкой. Относится и к самому Secret, и к ключу. Без него задание ждёт появления объекта в состоянии Pending, а отсутствующий ключ завершает задание ошибкой. С ним переменная не появляется: плейбук видит её неопределённой.
      • spec.playbook.varsFiles
        массив объектов

        Наборы переменных, взятые файлами из Secret и ConfigMap. Это манифестный аналог -e @vars.yml в командной строке и group_vars в проекте.

        Ключ содержит отображение «имя переменной → значение», и значение сохраняет тип, с которым записано. Список остаётся списком, а "1.10" остаётся строкой, потому что взята в кавычки. Выбирайте файл, а не отдельный ключ на каждую переменную, когда у набора есть структура.

        Файл монтирует kubelet, контроллер его не читает, поэтому содержимое не попадает ни в один объект модуля, и имена переменных внутри не проверяются. Файлу доверяют так же, как плейбуку.

        Более поздняя запись списка перекрывает более раннюю, а всё, что задано в vars, перекрывает их все.

        • spec.playbook.varsFiles.configMapRef
          объект
          ConfigMap, из которого берётся файл.
          • spec.playbook.varsFiles.configMapRef.key
            строка
            Ключ с YAML-документом. По умолчанию vars.yaml.

            Максимальная длина: 253

          • spec.playbook.varsFiles.configMapRef.name
            строка

            Обязательный параметр

            Имя ConfigMap в том же неймспейсе.

            Длина: 1..253

          • spec.playbook.varsFiles.configMapRef.optional
            булевый
            Позволяет заданию выполниться без этих переменных, если объекта или ключа нет. Без него отсутствующий объект удерживает задание в Pending до появления, а отсутствующий ключ завершает задание ошибкой.
        • spec.playbook.varsFiles.secretRef
          объект
          Secret, из которого берётся файл. Значения передаются в раннер монтированием тома и не попадают ни в один объект, который создаёт контроллер.
          • spec.playbook.varsFiles.secretRef.key
            строка
            Ключ с YAML-документом. По умолчанию vars.yaml.

            Максимальная длина: 253

          • spec.playbook.varsFiles.secretRef.name
            строка

            Обязательный параметр

            Имя Secret в том же неймспейсе.

            Длина: 1..253

          • spec.playbook.varsFiles.secretRef.optional
            булевый
            Позволяет заданию выполниться без этих переменных, если объекта или ключа нет. Без него отсутствующий объект удерживает задание в Pending до появления, а отсутствующий ключ завершает задание ошибкой.
    • spec.runner
      объект
      Параметры запуска ansible-playbook.
      • spec.runner.diff
        булевый
        Включает вывод изменений (--diff) при запуске ansible-playbook.
      • spec.runner.dryRun
        булевый
        Запускает плейбук в режиме проверки (check mode). В выводе отображается, что изменилось бы, но никакие изменения на целевых хостах не выполняются. В сочетании с diff позволяет увидеть предполагаемые изменения в выводе ansible-playbook.
      • spec.runner.verbosity
        целочисленный
        Уровень детализации логов ansible-playbook. Значения 0–4 соответствуют none/-v/-vv/-vvv/-vvvv.

        Допустимые значения: 0 <= X <= 4

    • spec.target
      объект

      Обязательный параметр

      Тип цели и её параметры. Задаётся ровно один блок, соответствующий type.
      • spec.target.hosts
        массив объектов

        Хосты, указанные по адресу. Обязателен при type: Hosts.

        Доступно в коммерческих редакциях. В Community Edition задание работает с виртуальными машинами платформы, а цель Hosts отклоняется.

        • spec.target.hosts.address
          строка
          Адрес хоста: IP-адрес или DNS-имя.

          Длина: 1..253

        • spec.target.hosts.groups
          массив строк
          Группы Ansible, в которые входит хост дополнительно к all. Имя группы подчиняется тем же правилам, что и имя переменной.
          • spec.target.hosts.groups.Элемент массива
            строка

            Максимальная длина: 63

            Шаблон: ^[A-Za-z_][A-Za-z0-9_]*$

        • spec.target.hosts.vars
          массив объектов

          Переменные хоста для Ansible — факты об этой машине. Описываются так же, как переменные задания, с value или valueFrom.

          Имена подчиняются правилам, действующим везде, где переменная объявлена в спецификации. Отклоняется то, что модуль устанавливает сам, и magic-переменные Ansible. Остальные ansible_* (например, ansible_port или ansible_python_interpreter) разрешены.

          Переменная хоста — это факт о машине, а не параметр задания: одноимённая переменная из spec.playbook.vars перекрывает её.

          • spec.target.hosts.vars.name
            строка
            Имя переменной — то, по которому к ней обращается плейбук. Идентификатор Ansible, то есть буква или подчёркивание, дальше буквы, цифры и подчёркивания.

            Длина: 1..63

            Шаблон: ^[A-Za-z_][A-Za-z0-9_]*$

          • spec.target.hosts.vars.value
            Значение переменной — любой YAML, который ожидает плейбук: строка, число, список или отображение.
          • spec.target.hosts.vars.valueFrom
            объект
            Источник значения — ключ Secret или ConfigMap. Такое значение всегда строка.
            • spec.target.hosts.vars.valueFrom.configMapKeyRef
              объект
              Ключ ConfigMap в том же неймспейсе.
              • spec.target.hosts.vars.valueFrom.configMapKeyRef.key
                строка

                Обязательный параметр

                Ключ, из которого берётся значение.
              • spec.target.hosts.vars.valueFrom.configMapKeyRef.name
                строка
                Имя ConfigMap.

                По умолчанию: ‘’

              • spec.target.hosts.vars.valueFrom.configMapKeyRef.optional
                булевый
                Не считать отсутствие объекта или ключа ошибкой: переменная отсутствует.
            • spec.target.hosts.vars.valueFrom.secretKeyRef
              объект
              Ключ Secret в том же неймспейсе.
              • spec.target.hosts.vars.valueFrom.secretKeyRef.key
                строка

                Обязательный параметр

                Ключ, из которого берётся значение. Значение передаётся в раннер через переменные окружения пода, а в инвентарь попадает обращение к ним.
              • spec.target.hosts.vars.valueFrom.secretKeyRef.name
                строка
                Имя Secret.

                По умолчанию: ‘’

              • spec.target.hosts.vars.valueFrom.secretKeyRef.optional
                булевый
                Не считать отсутствие объекта или ключа ошибкой: переменная отсутствует.
      • spec.target.type
        строка

        Обязательный параметр

        Тип цели. Возможные значения: VirtualMachines, Hosts.

        Допустимые значения: VirtualMachines, Hosts

      • spec.target.virtualMachines
        объект
        Виртуальные машины, на которых выполняется плейбук. Обязателен при type: VirtualMachines.
        • spec.target.virtualMachines.names
          массив строк
          Список имён виртуальных машин. Взаимоисключим с selector.
        • spec.target.virtualMachines.selector
          объект
          Выбор виртуальных машин по лейблам. Селектор не может быть пустым. Задание выполняется один раз, поэтому случайный выбор всех виртуальных машин неймспейса не допускается. Перечислите лейблы явно или используйте names. Взаимоисключим с names.
          • spec.target.virtualMachines.selector.matchExpressions
            массив объектов
            Список селекторов лейблов. Требования селекторов объединяются, поэтому должны выполняться все условия списка. Под лейблом понимается пара: ключ = значение.
            • spec.target.virtualMachines.selector.matchExpressions.key
              строка
              Ключ лейбла, к которому применяется селектор.
            • spec.target.virtualMachines.selector.matchExpressions.operator
              строка
              Оператор, определяющий отношение ключа к набору значений. Возможные операторы: In, NotIn, Exists, DoesNotExist.
            • spec.target.virtualMachines.selector.matchExpressions.values
              массив строк
              Массив строковых значений. Если оператор — In или NotIn, массив не должен быть пустым. Если оператор — Exists или DoesNotExist, массив должен быть пустым.
          • spec.target.virtualMachines.selector.matchLabels
            объект

            Карта пар ключ=значение. Одна пара ключ=значение для matchLabels эквивалентна элементу matchExpressions, ключевым полем которого является «ключ», оператором — «In», а список значений содержит только «значение».

            Для выборки по данному критерию все значения логически суммируются.

  • status
    объект
    Наблюдаемое состояние ресурса AnsibleRun.
    • status.completionTime
      строка
      Время завершения задания.
    • status.conditions
      массив объектов
      Последнее подтверждённое состояние данного ресурса.
      • status.conditions.lastTransitionTime
        строка
        Время перехода условия из одного состояния в другое.
      • status.conditions.message
        строка
        Удобочитаемое сообщение с подробной информацией о последнем переходе.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный
        .metadata.generation, на основе которого было установлено условие. Например, если .metadata.generation в настоящее время имеет значение 12, а .status.conditions[x].observedGeneration имеет значение 9, то условие устарело.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка
        Краткая причина последнего перехода состояния.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        Статус условия. Возможные значения: True, False, Unknown.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия.

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.failures
      массив объектов
      Сведения о задачах, завершившихся с ошибкой (не более 20).
      • status.failures.host
        строка
        Хост, на котором задача завершилась с ошибкой.
      • status.failures.message
        строка
        Сообщение об ошибке.
      • status.failures.task
        строка
        Имя задачи, завершившейся с ошибкой.
    • status.hosts
      массив объектов
      По одной записи на каждый целевой хост. Запись содержит имя и адрес, определённые при старте плейбука, и статистика выполнения по хосту, заполняемая по завершении плейбука.
      • status.hosts.address
        строка
        Адрес хоста, определённый при старте плейбука.
      • status.hosts.changed
        целочисленный
        Количество задач, внёсших изменения.
      • status.hosts.failed
        целочисленный
        Количество задач, завершившихся с ошибкой.
      • status.hosts.ignored
        целочисленный
        Количество задач, завершившихся с ошибкой под ignore_errors и не приведших к ошибке плейбука.
      • status.hosts.name
        строка
        Имя хоста.
      • status.hosts.ok
        целочисленный
        Количество успешно выполненных задач.
      • status.hosts.rescued
        целочисленный
        Количество задач, ошибка которых была обработана блоком rescue.
      • status.hosts.skipped
        целочисленный
        Количество пропущенных задач.
      • status.hosts.unreachable
        целочисленный
        Счётчик unreachable из строки PLAY RECAP этого хоста: значение больше нуля означает, что хост оказался недоступен.
    • status.message
      строка
      Понятная человеку сводка текущего состояния. При ошибке также называет под раннера, в логах которого находится полный вывод плейбука. Заполняется всегда, независимо от того, удалось ли разобрать вывод Ansible.
    • status.phase
      строка

      Обязательный параметр

      Текущее состояние ресурса AnsibleRun:

      • Pending — проверяются зависимости и подходящие цели, пода ещё нет;
      • Running — под раннера создан, загружается образ, выполняются init-контейнеры, затем выполняется плейбук;
      • PlaybookSucceeded — плейбук выполнен успешно;
      • PlaybookFailed — плейбук выполнялся и завершился с ошибками на хостах либо с недоступными хостами;
      • Error — выполнение не началось, поэтому вывода Ansible нет. Этап, на котором задание остановилось, указан в причине условия Completed.

      Допустимые значения: Pending, Running, PlaybookSucceeded, PlaybookFailed, Error

    • status.playbookCommit
      строка
      SHA коммита Git, который был фактически получен и выполнен. Заполняется только для источника Git.
    • status.podRef
      объект
      Ссылка на под, выполняющий плейбук.
      • status.podRef.name
        строка

        Обязательный параметр

        Имя пода.
      • status.podRef.namespace
        строка

        Обязательный параметр

        Неймспейс пода.
    • status.skippedHosts
      массив объектов
      Хосты, пропущенные при определении целей задания.
      • status.skippedHosts.busyBy
        строка
        Имя ресурса AnsibleRun, который в данный момент использует эту цель. Заполняется только при причине TargetBusy.
      • status.skippedHosts.name
        строка
        Имя хоста.
      • status.skippedHosts.phase
        строка
        Состояние цели на момент определения целей.
      • status.skippedHosts.reason
        строка
        Причина пропуска.

        Допустимые значения: NoAddress, NetworkNotAttached, NoAddressInNetwork, TargetNotReady, TargetNotRunning, TargetNotFound, TargetBusy

    • status.startTime
      строка
      Время начала задания.
    • status.summary
      объект
      Сводная статистика по всем хостам.
      • status.summary.failed
        целочисленный

        Обязательный параметр

        Количество хостов, на которых плейбук завершился с ошибкой.
      • status.summary.skipped
        целочисленный

        Обязательный параметр

        Количество пропущенных хостов.
      • status.summary.successful
        целочисленный

        Обязательный параметр

        Количество успешно обработанных хостов.
      • status.summary.total
        целочисленный

        Обязательный параметр

        Общее количество хостов, на которые нацелено задание (пропущенные хосты учитываются отдельно в skipped).
      • status.summary.unreachable
        целочисленный

        Обязательный параметр

        Количество недоступных хостов.

AnsibleRunSchedule

Scope: Namespaced
Version: v1alpha1

Ресурс для создания ресурсов AnsibleRun по расписанию cron — аналогично тому, как CronJob создаёт ресурсы Job.
  • apiVersion
    строка
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    строка
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    объект
  • spec
    объект
    Желаемое состояние ресурса AnsibleRunSchedule.
    • spec.concurrencyPolicy
      строка
      Что делать, если к моменту следующего срабатывания предыдущее задание ещё выполняется: пропустить срабатывание (Forbid, по умолчанию), запустить параллельно (Allow) или удалить активное задание и создать новое (Replace).

      По умолчанию: Forbid

      Допустимые значения: Forbid, Allow, Replace

    • spec.failedRunsHistoryLimit
      целочисленный
      Количество сохраняемых заданий, завершившихся с ошибкой.

      По умолчанию: 1

      Допустимые значения: 0 <= X

    • spec.schedule
      строка

      Обязательный параметр

      Расписание в стандартном формате cron (пять полей).

      Минимальная длина: 1

    • spec.startingDeadlineSeconds
      целочисленный
      Максимальное опоздание, с которым пропущенное задание ещё может стартовать. Срабатывание, пропущенное более чем на это время, пропускается полностью; пропущенные задания не выполняются задним числом.

      Допустимые значения: 1 <= X

    • spec.successfulRunsHistoryLimit
      целочисленный
      Количество сохраняемых успешно завершённых заданий.

      По умолчанию: 3

      Допустимые значения: 0 <= X

    • spec.suspend
      булевый
      Приостанавливает создание новых заданий; уже выполняющиеся задания не затрагиваются.
    • spec.template
      объект

      Обязательный параметр

      Шаблон ресурса AnsibleRun, создаваемого при каждом срабатывании расписания.
      • spec.template.metadata
        объект
        Метаданные, применяемые к создаваемым ресурсам AnsibleRun.
        • spec.template.metadata.annotations
          объект
          Аннотации для создаваемых ресурсов AnsibleRun.
        • spec.template.metadata.labels
          объект
          Лейблы для создаваемых ресурсов AnsibleRun.
      • spec.template.spec
        объект

        Обязательный параметр

        Спецификация создаваемых ресурсов AnsibleRun.
        • spec.template.spec.connection
          объект

          Обязательный параметр

          Параметры подключения к целям по SSH.
          • spec.template.spec.connection.network
            объект

            Сеть, в которой выполняется задание. Если параметр не указан, задание выполняется в основной сети: раннер остаётся в сети подов кластера и подключается к виртуальным машинам по адресу из status.ipAddress.

            Указание дополнительной сети модуля sdn определяет, в какой сети выполняется задание: под раннера подключается к этой сети, и адрес целевой виртуальной машины берётся в ней же. У сети должен быть пул адресов (spec.ipam.ipAddressPoolRef). Без него адрес не получат ни машина, ни раннер.

            Дополнительные сети доступны в коммерческих редакциях. В Community Edition задание выполняется в основной сети, любой другой тип сети отклоняется.

            • spec.template.spec.connection.network.name
              строка
              Имя ресурса Network или ClusterNetwork. Обязательно для этих двух типов и недопустимо для Main, у которой своего имени нет.

              Минимальная длина: 1

            • spec.template.spec.connection.network.type
              строка
              Тип сети.

              По умолчанию: Main

              Допустимые значения: Main, Network, ClusterNetwork

          • spec.template.spec.connection.secretRef
            объект

            Обязательный параметр

            Ссылка на Secret с учётными данными SSH. Secret должен находиться в том же неймспейсе, что и ресурс AnsibleRun, и содержать хотя бы один из ключей (имена ключей соответствуют встроенным типам Secret kubernetes.io/ssh-auth и kubernetes.io/basic-auth):

            • ssh-privatekey — приватный SSH-ключ;
            • password — пароль SSH.

            Необязательные ключи:

            • username — имя пользователя SSH;
            • become-password — пароль для повышения привилегий;
            • ansible-vault-password — пароль для Ansible Vault, формата шифрования файлов в Ansible. Речь именно о нём, а не о хранилище секретов вида HashiCorp Vault или Deckhouse Stronghold.
            • spec.template.spec.connection.secretRef.name
              строка

              Обязательный параметр

              Имя Secret.

              Минимальная длина: 1

          • spec.template.spec.connection.type
            строка
            Транспорт, по которому задание подключается к целям. Сегодня доступен только SSH.

            По умолчанию: SSH

            Допустимые значения: SSH

        • spec.template.spec.playbook
          объект

          Обязательный параметр

          Плейбук задания. Описывает, откуда он берётся, какая его часть выполняется и с какими значениями. Параметры, которые не влияют на состав задач (режим проверки, вывод изменений, детализация логов), задаются в runner.
          • spec.template.spec.playbook.configMapRef
            объект
            Ссылка на ConfigMap, содержащий плейбук.
            • spec.template.spec.playbook.configMapRef.key
              строка
              Ключ в данных ConfigMap, содержащий плейбук. По умолчанию — playbook.yaml.
            • spec.template.spec.playbook.configMapRef.name
              строка

              Обязательный параметр

              Имя ConfigMap.
          • spec.template.spec.playbook.git
            объект
            Получение проекта с плейбуком из Git-репозитория.
            • spec.template.spec.playbook.git.path
              строка
              Путь к файлу плейбука внутри репозитория. По умолчанию — playbook.yaml.
            • spec.template.spec.playbook.git.revision
              строка
              Ветка, тег или SHA коммита. По умолчанию — ветка по умолчанию репозитория.
            • spec.template.spec.playbook.git.secretRef
              объект

              Ссылка на Secret с учётными данными репозитория (имена ключей соответствуют встроенным типам Secret kubernetes.io/ssh-auth и kubernetes.io/basic-auth):

              • для SSH-адресов: ssh-privatekey и known_hosts (оба обязательны);
              • для HTTP(S)-адресов: username и password (токен передаётся как пароль), а также опционально ca.crt — для сервера с собственным удостоверяющим центром.
              • spec.template.spec.playbook.git.secretRef.name
                строка

                Обязательный параметр

                Имя Secret.

                Минимальная длина: 1

            • spec.template.spec.playbook.git.url
              строка

              Обязательный параметр

              Адрес репозитория по HTTP(S) или SSH (только явная форма ssh://; сокращённая запись git@host:path не поддерживается). Для SSH-адресов обязателен secretRef.

              Шаблон: ^(https?|ssh)://.+

          • spec.template.spec.playbook.inline
            строка
            Текст плейбука, заданный непосредственно в ресурсе.

            Максимальная длина: 65536

          • spec.template.spec.playbook.skipTags
            массив строк

            Теги задач, которые нужно исключить из задания. то же, что ansible-playbook --skip-tags.

            Имя тега — любая строка без пробелов и запятой. Запятая разделяет теги в аргументе, а пробелы Ansible удаляет самостоятельно.

            • spec.template.spec.playbook.skipTags.Элемент массива
              строка

              Длина: 1..63

              Шаблон: ^[^\s,]+$

          • spec.template.spec.playbook.tags
            массив строк

            Теги задач, которые нужно выполнить. То же, что ansible-playbook --tags. Задание выполнит только помеченные ими задачи; вместе со skipTags выполняется их пересечение за вычетом исключённых.

            Служебные теги Ansible работают как в командной строке: always выполняется при любом фильтре, пока не назван в skipTags; never — только когда назван здесь явно; tagged, untagged и all выбирают задачи по наличию тега.

            Если под фильтр не попала ни одна задача, это не ошибка: ansible-playbook завершается успешно, ничего не сделав, и задание сообщает об этом в .status.message.

            • spec.template.spec.playbook.tags.Элемент массива
              строка

              Длина: 1..63

              Шаблон: ^[^\s,]+$

          • spec.template.spec.playbook.type
            строка
            Тип источника плейбука.

            По умолчанию: Inline

            Допустимые значения: Inline, ConfigMap, Git

          • spec.template.spec.playbook.vars
            массив объектов

            Переменные, которые создаваемое задание передаёт плейбуку, чтобы один плейбук выполнялся с разными значениями.

            Передаются в ansible-playbook как --extra-vars — высший уровень приоритета переменных Ansible, поэтому они перекрывают значения, заданные самим плейбуком и его проектом, а также переменные хостов.

            Имя встречается один раз.

            • spec.template.spec.playbook.vars.name
              строка
              Имя переменной — то, по которому к ней обращается плейбук. Идентификатор Ansible, то есть буква или подчёркивание, дальше буквы, цифры и подчёркивания.

              Длина: 1..63

              Шаблон: ^[A-Za-z_][A-Za-z0-9_]*$

            • spec.template.spec.playbook.vars.value
              Значение переменной — любой YAML, который ожидает плейбук: строка, число, список или отображение.
            • spec.template.spec.playbook.vars.valueFrom
              объект
              Источник значения — ключ Secret или ConfigMap. Такое значение всегда строка: оно передаётся в раннер через переменные окружения пода.
              • spec.template.spec.playbook.vars.valueFrom.configMapKeyRef
                объект
                Ключ ConfigMap в том же неймспейсе.
                • spec.template.spec.playbook.vars.valueFrom.configMapKeyRef.key
                  строка

                  Обязательный параметр

                  Ключ, из которого берётся значение.
                • spec.template.spec.playbook.vars.valueFrom.configMapKeyRef.name
                  строка
                  Имя ConfigMap. Пустое имя задание отклоняет.

                  По умолчанию: ‘’

                • spec.template.spec.playbook.vars.valueFrom.configMapKeyRef.optional
                  булевый
                  Не считать отсутствие ошибкой. Относится и к самому объекту, и к ключу: без него задание ждёт появления объекта в состоянии Pending, а отсутствующий ключ завершает его ошибкой. С ним переменная не появляется.
              • spec.template.spec.playbook.vars.valueFrom.secretKeyRef
                объект
                Ключ Secret в том же неймспейсе.
                • spec.template.spec.playbook.vars.valueFrom.secretKeyRef.key
                  строка

                  Обязательный параметр

                  Ключ, из которого берётся значение. Значение не попадает ни в один объект, который создаёт контроллер.
                • spec.template.spec.playbook.vars.valueFrom.secretKeyRef.name
                  строка
                  Имя Secret. Пустое имя задание отклоняет.

                  По умолчанию: ‘’

                • spec.template.spec.playbook.vars.valueFrom.secretKeyRef.optional
                  булевый
                  Не считать отсутствие ошибкой — так же, как для configMapKeyRef.
          • spec.template.spec.playbook.varsFiles
            массив объектов

            Наборы переменных, взятые файлами из Secret и ConfigMap. Это манифестный аналог -e @vars.yml и group_vars в проекте.

            Ключ содержит отображение «имя переменной → значение», и значение сохраняет тип, с которым записано.

            Файл монтирует kubelet, контроллер его не читает, поэтому содержимое не попадает ни в один объект модуля, и имена переменных внутри не проверяются.

            Более поздняя запись перекрывает более раннюю, а всё, что задано в vars, перекрывает их все.

            • spec.template.spec.playbook.varsFiles.configMapRef
              объект
              ConfigMap, из которого берётся файл.
              • spec.template.spec.playbook.varsFiles.configMapRef.key
                строка
                Ключ с YAML-документом. По умолчанию vars.yaml.

                Максимальная длина: 253

              • spec.template.spec.playbook.varsFiles.configMapRef.name
                строка

                Обязательный параметр

                Имя ConfigMap в том же неймспейсе.

                Длина: 1..253

              • spec.template.spec.playbook.varsFiles.configMapRef.optional
                булевый
                Позволяет заданию выполниться без этих переменных, если объекта или ключа нет. Без него отсутствующий объект удерживает задание в Pending.
            • spec.template.spec.playbook.varsFiles.secretRef
              объект
              Secret, из которого берётся файл. Значения передаются в раннер монтированием тома.
              • spec.template.spec.playbook.varsFiles.secretRef.key
                строка
                Ключ с YAML-документом. По умолчанию vars.yaml.

                Максимальная длина: 253

              • spec.template.spec.playbook.varsFiles.secretRef.name
                строка

                Обязательный параметр

                Имя Secret в том же неймспейсе.

                Длина: 1..253

              • spec.template.spec.playbook.varsFiles.secretRef.optional
                булевый
                Позволяет заданию выполниться без этих переменных, если объекта или ключа нет. Без него отсутствующий объект удерживает задание в Pending до появления, а отсутствующий ключ завершает задание ошибкой.
        • spec.template.spec.runner
          объект
          Параметры запуска ansible-playbook.
          • spec.template.spec.runner.diff
            булевый
            Включает вывод изменений (--diff) при запуске ansible-playbook.
          • spec.template.spec.runner.dryRun
            булевый
            Запускает плейбук в режиме проверки (check mode). В выводе отображается, что изменилось бы, но никакие изменения на целевых хостах не выполняются. В сочетании с diff позволяет увидеть предполагаемые изменения в выводе ansible-playbook.
          • spec.template.spec.runner.verbosity
            целочисленный
            Уровень детализации логов ansible-playbook. Значения 0–4 соответствуют none/-v/-vv/-vvv/-vvvv.

            Допустимые значения: 0 <= X <= 4

        • spec.template.spec.target
          объект

          Обязательный параметр

          Тип цели и её параметры. Задаётся ровно один блок, соответствующий type.
          • spec.template.spec.target.hosts
            массив объектов

            Хосты, указанные по адресу. Обязателен при type: Hosts.

            Доступно в коммерческих редакциях. В Community Edition задание работает с виртуальными машинами платформы, а цель Hosts отклоняется.

            • spec.template.spec.target.hosts.address
              строка
              Адрес хоста: IP-адрес или DNS-имя.

              Длина: 1..253

            • spec.template.spec.target.hosts.groups
              массив строк
              Группы Ansible, в которые входит хост дополнительно к all. Имя группы подчиняется тем же правилам, что и имя переменной.
              • spec.template.spec.target.hosts.groups.Элемент массива
                строка

                Максимальная длина: 63

                Шаблон: ^[A-Za-z_][A-Za-z0-9_]*$

            • spec.template.spec.target.hosts.vars
              массив объектов

              Переменные хоста для Ansible — факты об этой машине. Описываются так же, как переменные задания, с value или valueFrom.

              Имена подчиняются правилам, действующим везде, где переменная объявлена в спецификации: отклоняется то, что модуль устанавливает сам, и magic-переменные Ansible. Остальные ansible_* (например, ansible_port) разрешены.

              Переменная хоста — это факт о машине, а не параметр задания: одноимённая переменная из vars перекрывает её.

              • spec.template.spec.target.hosts.vars.name
                строка
                Имя переменной — то, по которому к ней обращается плейбук. Идентификатор Ansible, то есть буква или подчёркивание, дальше буквы, цифры и подчёркивания.

                Длина: 1..63

                Шаблон: ^[A-Za-z_][A-Za-z0-9_]*$

              • spec.template.spec.target.hosts.vars.value
                Значение переменной — любой YAML, который ожидает плейбук: строка, число, список или отображение.
              • spec.template.spec.target.hosts.vars.valueFrom
                объект
                Источник значения — ключ Secret или ConfigMap. Такое значение всегда строка.
                • spec.template.spec.target.hosts.vars.valueFrom.configMapKeyRef
                  объект
                  Ключ ConfigMap в том же неймспейсе.
                  • spec.template.spec.target.hosts.vars.valueFrom.configMapKeyRef.key
                    строка

                    Обязательный параметр

                    Ключ, из которого берётся значение.
                  • spec.template.spec.target.hosts.vars.valueFrom.configMapKeyRef.name
                    строка
                    Имя ConfigMap.

                    По умолчанию: ‘’

                  • spec.template.spec.target.hosts.vars.valueFrom.configMapKeyRef.optional
                    булевый
                    Не считать отсутствие объекта или ключа ошибкой: переменная отсутствует.
                • spec.template.spec.target.hosts.vars.valueFrom.secretKeyRef
                  объект
                  Ключ Secret в том же неймспейсе.
                  • spec.template.spec.target.hosts.vars.valueFrom.secretKeyRef.key
                    строка

                    Обязательный параметр

                    Ключ, из которого берётся значение. Значение передаётся в раннер через переменные окружения пода.
                  • spec.template.spec.target.hosts.vars.valueFrom.secretKeyRef.name
                    строка
                    Имя Secret.

                    По умолчанию: ‘’

                  • spec.template.spec.target.hosts.vars.valueFrom.secretKeyRef.optional
                    булевый
                    Не считать отсутствие объекта или ключа ошибкой: переменная отсутствует.
          • spec.template.spec.target.type
            строка

            Обязательный параметр

            Тип цели. Возможные значения: VirtualMachines, Hosts.

            Допустимые значения: VirtualMachines, Hosts

          • spec.template.spec.target.virtualMachines
            объект
            Виртуальные машины, на которых выполняется плейбук. Обязателен при type: VirtualMachines.
            • spec.template.spec.target.virtualMachines.names
              массив строк
              Список имён виртуальных машин. Взаимоисключим с selector.
            • spec.template.spec.target.virtualMachines.selector
              объект
              Выбор виртуальных машин по лейблам. Селектор не может быть пустым. Задание выполняется один раз, поэтому случайный выбор всех виртуальных машин неймспейса не допускается. Перечислите лейблы явно или используйте names. Взаимоисключим с names.
              • spec.template.spec.target.virtualMachines.selector.matchExpressions
                массив объектов
                Список селекторов лейблов. Требования селекторов объединяются, поэтому должны выполняться все условия списка. Под лейблом понимается пара: ключ = значение.
                • spec.template.spec.target.virtualMachines.selector.matchExpressions.key
                  строка
                  Ключ лейбла, к которому применяется селектор.
                • spec.template.spec.target.virtualMachines.selector.matchExpressions.operator
                  строка
                  Оператор, определяющий отношение ключа к набору значений. Возможные операторы: In, NotIn, Exists, DoesNotExist.
                • spec.template.spec.target.virtualMachines.selector.matchExpressions.values
                  массив строк
                  Массив строковых значений. Если оператор — In или NotIn, массив не должен быть пустым. Если оператор — Exists или DoesNotExist, массив должен быть пустым.
              • spec.template.spec.target.virtualMachines.selector.matchLabels
                объект

                Карта пар ключ=значение. Одна пара ключ=значение для matchLabels эквивалентна элементу matchExpressions, ключевым полем которого является «ключ», оператором — «In», а список значений содержит только «значение».

                Для выборки по данному критерию все значения логически суммируются.

    • spec.timeZone
      строка
      Часовой пояс расписания (IANA, например Europe/Moscow). По умолчанию — UTC.
  • status
    объект
    Наблюдаемое состояние ресурса AnsibleRunSchedule.
    • status.active
      массив строк
      Имена выполняющихся в данный момент ресурсов AnsibleRun, созданных этим расписанием.
    • status.conditions
      массив объектов
      Последнее подтверждённое состояние данного ресурса.
      • status.conditions.lastTransitionTime
        строка
        Время перехода условия из одного состояния в другое.
      • status.conditions.message
        строка
        Удобочитаемое сообщение с подробной информацией о последнем переходе.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный
        .metadata.generation, на основе которого было установлено условие. Например, если .metadata.generation в настоящее время имеет значение 12, а .status.conditions[x].observedGeneration имеет значение 9, то условие устарело.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка
        Краткая причина последнего перехода состояния.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        Статус условия. Возможные значения: True, False, Unknown.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия.

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.lastScheduleTime
      строка
      Время последнего создания задания.
    • status.lastSuccessfulTime
      строка
      Время последнего успешного завершения задания.