Стадия жизненного цикла модуля: Experimental
У модуля есть требования для установки
Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
AnsibleRun
Scope: Namespaced
Version: v1alpha1
-
строкаapiVersionAPIVersion 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
-
строкаkindKind 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
- для SSH-адресов:
-
строка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.configMapRefConfigMap, из которого берётся файл.
-
строка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.secretRefSecret, из которого берётся файл. Значения передаются в раннер монтированием тома и не попадают ни в один объект, который создаёт контроллер.
-
строка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.playbookCommitSHA коммита 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
-
строкаapiVersionAPIVersion 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
-
строкаkindKind 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
- для SSH-адресов:
-
строка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.configMapRefConfigMap, из которого берётся файл.
-
строка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.secretRefSecret, из которого берётся файл. Значения передаются в раннер монтированием тома.
-
строка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Время последнего успешного завершения задания.
-