Модуль community.docker.docker_swarm_service — служба Docker Swarm
Примечание
Этот модуль входит в коллекцию community.docker (версия 5.2.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.docker. Для использования этого модуля требуются дополнительные компоненты; подробности см. в разделе Требования.
Чтобы использовать модуль в плейбуке, укажите: community.docker.docker_swarm_service.
Краткое описание
- Управляет службами Docker через узел-менеджер Swarm.
- Этот модуль не поддерживает обновление служб в стеке.
Требования
Следующие требования должны быть выполнены на хосте, на котором выполняется этот модуль.
- Docker API >= 1.25
- Docker SDK for Python: обратите внимание, что модуль Python docker-py заменён модулем docker (подробности см. здесь). Этот модуль не работает с docker-py.
- Docker SDK for Python >= 2.0.2
Параметры
Параметр | Комментарии |
|---|---|
api_version aliases: docker_api_version string | Версия API Docker, работающего на хосте Docker. По умолчанию используется последняя версия API, поддерживаемая Docker SDK for Python и демоном Docker. Если значение не указано в задаче, вместо него будет использоваться значение переменной окружения По умолчанию: |
args list / elements=string | Список аргументов, передаваемых контейнеру. Соответствует параметру |
ca_path aliases: ca_cert, tls_ca_cert, cacert_path path | Используйте сертификат CA для проверки сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче, а переменная окружения Этот параметр назывался |
cap_add list / elements=string добавлено в community.docker 2.2.0 | Список возможностей, добавляемых контейнеру. Требуется версия API >= 1.41. |
cap_drop list / elements=string добавлено в community.docker 2.2.0 | Список возможностей, удаляемых из контейнера. Требуется версия API >= 1.41. |
client_cert aliases: tls_client_cert, cert_path path | Путь к файлу TLS-сертификата клиента. Если значение не указано в задаче, а переменная окружения |
client_key aliases: tls_client_key, key_path path | Путь к файлу TLS-ключа клиента. Если значение не указано в задаче, а переменная окружения |
command any | Команда, выполняемая при запуске контейнера. Команда может быть строкой, списком или списком строк. Соответствует параметру |
configs list / elements=dictionary | Список словарей с описанием конфигураций сервиса. Соответствует параметру Требуется версия API >= 1.30. |
|
config_id string |
Идентификатор конфигурации. |
|
config_name string / обязательный |
Имя конфигурации, заданное при ее создании. |
|
filename string |
Имя файла с конфигурацией. Если не указано, используется |
|
gid string |
GID группы файла конфигурации. |
|
mode integer |
Режим доступа к файлу внутри контейнера. Должно быть восьмеричное число (например, |
|
uid string |
UID владельца файла конфигурации. |
container_labels dictionary | Словарь пар «ключ — значение». Соответствует параметру |
debug boolean | Режим отладки. Варианты:
|
dns list / elements=string | Список пользовательских DNS-серверов. Соответствует параметру |
dns_options list / elements=string | Список пользовательских параметров DNS. Соответствует параметру |
dns_search list / elements=string | Список пользовательских доменов поиска DNS. Соответствует параметру |
docker_host aliases: docker_url string | URL или путь к сокету Unix, используемый для подключения к API Docker. Для подключения к удаленному хосту укажите строку TCP-подключения. Например, Если значение не указано в задаче, вместо него будет использоваться значение переменной окружения По умолчанию: |
endpoint_mode string | Режим конечной точки сервиса. Соответствует параметру Варианты:
|
env any | Список или словарь переменных окружения сервиса. Если передан список, каждый элемент должен иметь формат Если передан словарь, значения, которые YAML-парсер может интерпретировать как числа, логические значения или другие типы, необходимо заключать в кавычки (например, Соответствует параметру |
env_files list / elements=path | |
force_update boolean | Принудительно обновить, даже если изменения не требуют этого. Соответствует параметру Варианты:
|
groups list / elements=string | Список дополнительных имен и/или идентификаторов групп, от имени которых будет запущен процесс контейнера. Соответствует параметру |
healthcheck dictionary | Настройка проверки, определяющей, являются ли контейнеры этого сервиса «здоровыми». Подробные сведения о работе проверок состояния см. в документации по инструкции HEALTHCHECK в Dockerfile. Параметры |
|
interval string |
Интервал между проверками. |
|
retries integer |
Количество последовательных сбоев, необходимое для признания состояния нездоровым. Принимает целочисленное значение. |
|
start_period string |
Период запуска, в течение которого контейнер инициализируется до начала отсчета повторных проверок состояния. |
|
test any |
Команда для проверки состояния. Должна быть строкой или списком. Если это список, первым элементом должно быть одно из значений |
|
timeout string |
Максимальное время выполнения одной проверки. |
hostname string | Имя хоста контейнера. Соответствует параметру |
hosts dictionary | Словарь соответствий имен хостов IP-адресам, где каждое имя хоста является ключом словаря. Каждое имя хоста будет добавлено в файл /etc/hosts контейнера. Соответствует параметру |
image string | Путь к образу сервиса и его тег. Соответствует параметру |
init boolean | Использовать init в каждом контейнере сервиса для передачи сигналов и сбора завершившихся процессов. Соответствует параметру Требуется версия API >= 1.37. Варианты:
|
labels dictionary | Словарь пар «ключ — значение». Соответствует параметру |
limits dictionary | Настройка ограничений ресурсов сервиса. |
|
cpus float |
Ограничение CPU сервиса. Соответствует параметру |
|
memory string |
Ограничение памяти сервиса в формате
Если единица измерения не указана, используются байты. Соответствует параметру |
logging dictionary | Настройка ведения журналов для сервиса. |
|
driver string |
Настройка драйвера ведения журналов для сервиса. Соответствует параметру |
|
options dictionary |
Параметры драйвера ведения журналов сервиса. Соответствует параметру |
mode string | Режим репликации сервиса. При изменении сервис будет удален и создан заново. Соответствует параметру Значение Варианты:
|
mounts list / elements=dictionary | Список словарей с описанием подключаемых ресурсов сервиса. Соответствует параметру |
|
driver_config dictionary |
Конфигурация драйвера тома. Можно использовать только при условии |
|
name string |
Имя плагина драйвера тома, используемого для тома. |
|
options dictionary |
Параметры в виде пар «ключ — значение», передаваемые драйверу для этого тома. |
|
labels dictionary |
Метки, назначаемые тому. |
|
no_copy boolean |
Отключить копирование данных из контейнера при создании тома. Можно использовать только при условии Варианты:
|
|
propagation string |
Режим распространения. Можно использовать только при условии Варианты:
|
|
readonly boolean |
Должно ли монтирование быть доступно только для чтения. Варианты:
|
|
source string |
Источник монтирования (например, имя тома или путь на хосте). Необходимо указать, если |
|
target string / обязательный |
Путь в контейнере. |
|
tmpfs_mode integer |
Режим доступа к файлам tmpfs в восьмеричном формате. Можно использовать только при |
|
tmpfs_size string |
Размер монтирования tmpfs в формате Можно использовать только при |
|
type string |
Тип монтирования. Обратите внимание, что Варианты:
|
name string / обязательный | Имя службы. Соответствует параметру |
networks list / elements=any | Список имен сетей службы или словарей. При передаче словарей допустимы вложенные параметры До версии API 1.29 обновление и удаление сетей не поддерживается. При внесении изменений служба будет удалена и создана заново. Соответствует параметру |
placement dictionary | Настраивает предпочтения и ограничения размещения службы. |
|
constraints list / elements=string |
Список ограничений службы. Соответствует параметру |
|
preferences list / elements=dictionary |
Список предпочтений размещения в виде пар ключ-значение. Соответствует параметру Требуется версия API >= 1.27. |
|
replicas_max_per_node integer добавлено в community.docker 1.3.0 |
Максимальное число задач на узел. Соответствует параметру Требуется версия API >= 1.40. |
publish list / elements=dictionary | Список словарей с описанием опубликованных портов службы. Соответствует параметру |
|
mode string |
Режим публикации. Требуется версия API >= 1.32. Варианты:
|
|
protocol string |
Используемый протокол. Варианты:
|
|
published_port integer |
Порт, который будет доступен извне. |
|
target_port integer / обязательный |
Порт внутри контейнера, который нужно открыть. |
read_only boolean | Подключить корневую файловую систему контейнеров только для чтения. Соответствует параметру Варианты:
|
replicas integer | Количество контейнеров, запущенных в службе. Допустимо только при Если задано значение Если задано значение Соответствует параметру По умолчанию: |
reservations dictionary | Настраивает резервирование ресурсов службы. |
|
cpus float |
Резервирование ЦП для службы. Значение Соответствует параметру |
|
memory string |
Резервирование памяти для службы в формате Значение Если единица измерения не указана, по умолчанию используются байты. Соответствует параметру |
resolve_image boolean | Следует ли получать текущий дайджест образа из реестра и обновлять его при изменении. Требуется версия API >= 1.30. Варианты:
|
restart_config dictionary | Настраивает, нужно ли и как перезапускать контейнеры после их завершения. |
|
condition string |
Условие перезапуска службы. Соответствует параметру Варианты:
|
|
delay string |
Задержка между перезапусками. Принимает строку в формате, например: Соответствует параметру |
|
max_attempts integer |
Максимальное число перезапусков службы. Соответствует параметру |
|
window string |
Окно оценки политики перезапуска. Принимает строку в формате, например: Соответствует параметру |
rollback_config dictionary | Настраивает откат службы в случае неудачного обновления. |
|
delay string |
Задержка между откатами задач. Принимает строку в формате, например: Соответствует параметру Требуется версия API >= 1.28. |
|
failure_action string |
Действие при неудачном откате. Соответствует параметру Требуется версия API >= 1.28. Варианты:
|
|
max_failure_ratio float |
Доля задач, которые могут завершиться с ошибкой во время отката. Соответствует параметру Требуется версия API >= 1.28. |
|
monitor string |
Период наблюдения за ошибками после отката каждой задачи. Принимает строку в формате, например: Соответствует параметру Требуется версия API >= 1.28. |
|
order string |
Определяет порядок операций при откате. Соответствует параметру Требуется версия API >= 1.29. |
|
parallelism integer |
Число контейнеров, откатываемых одновременно. Если задано значение 0, все контейнеры откатываются одновременно. Соответствует параметру Требуется версия API >= 1.28. |
secrets list / elements=dictionary | Список словарей с описанием секретов службы. Соответствует параметру |
|
filename string |
Имя файла, содержащего секрет. Если не указано, по умолчанию используется Соответствует ключу |
|
gid string |
GID группы файла секрета. |
|
mode integer |
Режим доступа к файлу внутри контейнера. Должно быть указано восьмеричное число (например, |
|
secret_id string |
Идентификатор секрета. |
|
secret_name string / обязательный |
Имя секрета, заданное при его создании. |
|
uid string |
UID владельца файла секрета. |
state string |
Варианты:
|
stop_grace_period string | Время ожидания перед принудительным завершением контейнера. Принимает длительность в виде строки в формате, например: Соответствует параметру |
stop_signal string | Переопределяет сигнал, используемый по умолчанию для остановки контейнера. Соответствует параметру |
sysctls dictionary добавлено в community.docker 3.10.0 | Словарь пар ключ-значение. |
timeout integer | Максимальное время в секундах ожидания ответа от API. Если значение не указано в задаче, вместо него будет использоваться значение переменной среды По умолчанию: |
tls boolean | Защищает соединение с API с помощью TLS без проверки подлинности сервера узла Docker. Обратите внимание: если Если значение не указано в задаче, вместо него будет использоваться значение переменной среды Варианты:
|
tls_hostname string | При проверке подлинности сервера узла Docker укажите ожидаемое имя сервера. Если значение не указано в задаче, вместо него будет использоваться значение переменной среды Обратите внимание, что в более ранних версиях для этого параметра использовалось значение по умолчанию Примечание: этот параметр больше не поддерживается в Docker SDK for Python 7.0.0+. Его указание в Docker SDK for Python версии 7.0.0 или более новой приведет к ошибке. |
tty boolean | Выделить псевдотерминал (TTY). Соответствует параметру Варианты:
|
update_config dictionary | Настраивает способ обновления службы. Полезно для настройки поэтапных обновлений. |
|
delay string |
Задержка поэтапного обновления. Принимает строку в формате, например: Соответствует параметру |
|
failure_action string |
Действие, выполняемое в случае сбоя контейнера. Соответствует параметру Для использования Варианты:
|
|
max_failure_ratio float |
Доля задач, которые могут завершиться с ошибкой во время обновления до применения действия при сбое. Соответствует параметру |
|
monitor string |
Время наблюдения за обновлёнными задачами на предмет сбоев. Принимает строку в формате, например: Соответствует параметру |
|
order string |
Задаёт порядок операций при развёртывании обновлённой задачи. Соответствует параметру Требуется версия API >= 1.29. |
|
parallelism integer |
Параллелизм поэтапного обновления. Соответствует параметру |
use_ssh_client boolean добавлено в community.docker 1.5.0 | Для SSH-транспорта используйте инструмент командной строки Требуется Docker SDK for Python версии 4.4.0 или новее. Варианты:
|
user string | Задаёт имя пользователя или UID, используемые для указанной команды. До Ansible 2.8 значением по умолчанию для этого параметра было Значение по умолчанию удалено, чтобы при отсутствии указанного здесь пользователя использовался пользователь, заданный в образе. Соответствует параметру |
validate_certs псевдонимы: tls_verify boolean | Защищает соединение с API с помощью TLS и проверяет подлинность сервера Docker. Если значение не указано в задаче, вместо него будет использовано значение переменной окружения Варианты:
|
working_dir string | Путь к рабочему каталогу. Соответствует параметру |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
action_group | Группы действий: community.docker.docker, docker | Используйте |
check_mode | Поддержка: полная | Может работать в режиме |
diff_mode | Поддержка: полная | В режиме diff возвращает сведения об изменениях (или о возможных изменениях в |
idempotent | Поддержка: полная | При повторном запуске с теми же аргументами вне режима check второй запуск сообщает об отсутствии изменений. Предполагается, что система, управляемая модулем или запрашиваемая им, не изменилась существенным образом. |
Примечания
Примечание
- Образы будут обновляться до последнего дайджеста только при использовании Docker API >= 1.30 и Docker SDK for Python >= 3.2.0. При использовании более старых версий задайте
force_update=true, чтобы инициировать обновление образа в swarm. - Подключайтесь к демону Docker, передавая параметры в каждой задаче или задавая переменные окружения. Можно задать
DOCKER_HOST,DOCKER_TLS_HOSTNAME,DOCKER_API_VERSION,DOCKER_CERT_PATH,DOCKER_TLS,DOCKER_TLS_VERIFYиDOCKER_TIMEOUT. Если используется docker machine, запустите поставляемый с продуктом скрипт настройки окружения. Он задаст эти переменные. Дополнительные сведения см. на странице https://docs.docker.com/machine/reference/env/. - При подключении к демону Docker с использованием TLS может потребоваться установить дополнительные пакеты Python. Для Docker SDK for Python версии 2.4 или новее это можно сделать, установив
docker[tls]с помощью ansible.builtin.pip. - Обратите внимание, что Docker SDK for Python позволяет указать путь к конфигурации Docker лишь для немногих функций. Как правило, если переменная окружения
DOCKER_CONFIGне задана, будет использоваться$HOME/.docker/config.json, в противном случае —$DOCKER_CONFIG/config.json. - Этот модуль использует Docker SDK for Python для взаимодействия с демоном Docker.
Примеры
---
- name: Set command and arguments
community.docker.docker_swarm_service:
name: myservice
image: alpine
command: sleep
args:
- "3600"
- name: Set a bind mount
community.docker.docker_swarm_service:
name: myservice
image: alpine
mounts:
- source: /tmp/
target: /remote_tmp/
type: bind
- name: Set service labels
community.docker.docker_swarm_service:
name: myservice
image: alpine
labels:
com.example.description: "Accounting webapp"
com.example.department: "Finance"
- name: Set environment variables
community.docker.docker_swarm_service:
name: myservice
image: alpine
env:
ENVVAR1: envvar1
ENVVAR2: envvar2
env_files:
- envs/common.env
- envs/apps/web.env
- name: Set fluentd logging
community.docker.docker_swarm_service:
name: myservice
image: alpine
logging:
driver: fluentd
options:
fluentd-address: "127.0.0.1:24224"
fluentd-async-connect: "true"
tag: myservice
- name: Set restart policies
community.docker.docker_swarm_service:
name: myservice
image: alpine
restart_config:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
- name: Set update config
community.docker.docker_swarm_service:
name: myservice
image: alpine
update_config:
parallelism: 2
delay: 10s
order: stop-first
- name: Set rollback config
community.docker.docker_swarm_service:
name: myservice
image: alpine
update_config:
failure_action: rollback
rollback_config:
parallelism: 2
delay: 10s
order: stop-first
- name: Set placement preferences
community.docker.docker_swarm_service:
name: myservice
image: alpine:edge
placement:
preferences:
- spread: node.labels.mylabel
constraints:
- node.role == manager
- engine.labels.operatingsystem == ubuntu 14.04
replicas_max_per_node: 2
- name: Set configs
community.docker.docker_swarm_service:
name: myservice
image: alpine:edge
configs:
- config_name: myconfig_name
filename: "/tmp/config.txt"
- name: Set networks
community.docker.docker_swarm_service:
name: myservice
image: alpine:edge
networks:
- mynetwork
- name: Set networks as a dictionary
community.docker.docker_swarm_service:
name: myservice
image: alpine:edge
networks:
- name: "mynetwork"
aliases:
- "mynetwork_alias"
options:
foo: bar
- name: Set secrets
community.docker.docker_swarm_service:
name: myservice
image: alpine:edge
secrets:
- secret_name: mysecret_name
filename: "/run/secrets/secret.txt"
- name: Start service with healthcheck
community.docker.docker_swarm_service:
name: myservice
image: nginx:1.13
healthcheck:
# Check if nginx server is healthy by curl'ing the server.
# If this fails or timeouts, the healthcheck fails.
test: ["CMD", "curl", "--fail", "http://nginx.host.com"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 30s
- name: Configure service resources
community.docker.docker_swarm_service:
name: myservice
image: alpine:edge
reservations:
cpus: 0.25
memory: 20M
limits:
cpus: 0.50
memory: 50M
- name: Remove service
community.docker.docker_swarm_service:
name: myservice
state: absent
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
changes list / elements=string | Список изменённых атрибутов службы, если служба была изменена; в противном случае — []. Возвращается: всегда Пример: |
rebuilt boolean | True, если служба была пересоздана (удалена и создана заново). Возвращается: всегда Пример: |
swarm_service dictionary | Словарь переменных, представляющих текущее состояние службы. Формат соответствует параметрам модуля. Обратите внимание: факты не входят в зарегистрированные переменные, но доступны напрямую. Обратите внимание: до Ansible 2.7.9 возвращаемая переменная в документации называлась Возвращается: всегда Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/docker/docker_swarm_service_module.html