docker_swarm_service – docker swarm service
Новое в версии 2.7.
Краткое описание
- Управление службами docker. Позволяет изменять уже определенные службы в реальном времени
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- docker-py >= 2.0
- Обратите внимание, что модуль Python docker-py был заменён на docker (подробнее см. здесь). Версия 2.1.0 или выше доступна только с модулем
docker.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_version - | Значение по умолчанию: "auto" | Версия Docker API, работающая на Docker Host. По умолчанию устанавливается последняя версия API, поддерживаемая docker-py. Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_API_VERSION. Если переменная среды не задана, используется значение по умолчанию.Псевдонимы: docker_api_version |
| args - | Значение по умолчанию: [] | Список, содержащий команду и аргументы, которые будут выполнены внутри контейнера |
| cacert_path - | Используйте сертификат CA при проверке сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче, и переменная среды DOCKER_CERT_PATH установлена, будет использован файл ca.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH. Псевдонимы: tls_ca_cert | |
| cert_path - | Путь к файлу TLS-сертификата клиента. Если значение не указано в задаче, и переменная среды DOCKER_CERT_PATH установлена, будет использован файл cert.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH. Псевдонимы: tls_client_cert | |
| configs - | Значение по умолчанию: [] | Список словарей, описывающих конфигурации сервиса. Каждый элемент должен быть словарем, содержащим ключи config_id, config_name, filename, uid (по умолчанию 0), gid (по умолчанию 0), mode (по умолчанию 0444) Сопоставление с параметром docker service --config. Требуется версия API >= 1.30 |
| constraints - | Значение по умолчанию: [] | Список ограничений сервиса. Сопоставление с параметром docker service --constraint. |
| container_labels словарь | Словарь пар ключ-значение. Сопоставление с параметром docker service --container-label. | |
| debug булево |
| Режим отладки |
| dns - | Значение по умолчанию: [] | Список пользовательских DNS-серверов. Сопоставление с параметром docker service --dns. Требуется версия API >= 1.25 |
| dns_options - | Значение по умолчанию: [] | Список пользовательских DNS-опций. Сопоставление с параметром docker service --dns-option. Требуется версия API >= 1.25 |
| dns_search - | Значение по умолчанию: [] | Список пользовательских DNS-доменов поиска. Сопоставление с параметром docker service --dns-search. Требуется версия API >= 1.25 |
| docker_host - | Значение по умолчанию: "unix://var/run/docker.sock" | URL или путь к Unix-сокету для подключения к Docker API. Для подключения к удалённому хосту, укажите строку TCP-соединения. Например, 'tcp://192.0.2.23:2376'. Если для шифрования соединения используется TLS, модуль автоматически заменит 'tcp' в URL соединения на 'https'. Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_HOST. Если переменная среды не задана, используется значение по умолчанию.Псевдонимы: docker_url |
| endpoint_mode строка |
| Режим конечной точки сервиса. Сопоставление с параметром docker service --endpoint-mode. |
| env - | Значение по умолчанию: [] | Список переменных окружения сервиса. Сопоставление с параметром docker service --env. |
| force_update булево |
| Принудительное обновление, даже если не требуется. Сопоставление с параметром docker service update --force. Требуется версия API >= 1.25 |
| hostname - | Значение по умолчанию: "" | Имя хоста контейнера Сопоставление с параметром docker service --hostname. Требуется версия API >= 1.25 |
| image - / обязательно | Путь и тег изображения сервиса. Сопоставление с параметром docker service IMAGE. | |
| key_path - | Путь к файлу TLS-ключа клиента. Если значение не указано в задаче, и переменная среды DOCKER_CERT_PATH установлена, будет использован файл key.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH. Псевдонимы: tls_client_key | |
| labels словарь | Словарь пар ключ-значение. Сопоставление с параметром docker service --label. | |
| limit_cpu - | Значение по умолчанию: 0.0 | Предел ЦП сервиса. 0 означает отсутствие ограничения. Сопоставление с параметром docker service --limit-cpu. |
| limit_memory - | Значение по умолчанию: 0 | Предел памяти сервиса (формат: <number>[<unit>]). Число — положительное целое число. Единица измерения может быть B (байт), K (кибибайт, 1024Б), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).0 означает отсутствие ограничения. Опущение единицы измерения по умолчанию означает байты. Сопоставление с параметром docker service --limit-memory. |
| log_driver - | Значение по умолчанию: "json-file" | Настройка драйвера регистрации для сервиса |
| log_driver_options - | Значение по умолчанию: [] | Параметры для драйвера регистрации сервиса |
| mode - | Значение по умолчанию: "replicated" | Режим репликации сервиса. Сопоставление с параметром docker service --mode. |
| mounts - | Значение по умолчанию: [] | Список словарей, описывающих подключения сервиса. Каждый элемент должен быть словарем, содержащим ключи source, target, type (по умолчанию 'bind'), readonly (по умолчанию false) Сопоставление с параметром docker service --mount. |
| name - / обязательно | Имя сервиса | |
| networks - | Значение по умолчанию: [] | Список имён сетей сервиса. Сопоставление с параметром docker service --network. |
| publish - | Значение по умолчанию: [] | Список словарей, описывающих опубликованные порты сервиса. Каждый элемент должен быть словарем, содержащим ключи published_port, target_port, protocol (по умолчанию 'tcp'), mode <ingress|host>, по умолчанию ingress. Используется только с api_version >= 1.25 Если версия API >= 1.32 и docker python library >= 3.0.0, атрибут 'mode' может быть установлен в 'ingress' или 'host' (по умолчанию 'ingress'). |
| replicas - | Значение по умолчанию: -1 | Количество созданных контейнеров в сервисе. Действительно только если ``mode=='replicated'``. Если установлено -1 и сервис отсутствует, реплики сервиса будут установлены в 1. Если установлено -1 и сервис присутствует, реплики сервиса останутся без изменений. Сопоставление с параметром docker service --replicas. |
| reserve_cpu - | Значение по умолчанию: 0.0 | Зарезервированное время процессора сервиса. 0 означает отсутствие резервирования. Сопоставляется с опцией docker service --reserve-cpu. |
| reserve_memory - | Значение по умолчанию: 0 | Зарезервированное количество памяти сервиса (формат: <number>[<unit>]). Число — положительное целое. Единицей измерения может быть B (байт), K (кибибайт, 1024 байт), M (мебибайт), G (гибибайт), T (тебибайт) или P (пебибайт).0 означает отсутствие резервирования. Опускание единицы измерения по умолчанию означает байты. Сопоставляется с опцией docker service --reserve-memory. |
| restart_policy - |
| Условие перезапуска сервиса. Сопоставляется с опцией docker service --restart-condition. |
| restart_policy_attempts - | Значение по умолчанию: 0 | Максимальное количество перезапусков сервиса. Сопоставляется с опцией docker service --restart-max-attempts. |
| restart_policy_delay - | Значение по умолчанию: 0 | Задержка между перезапусками. Сопоставляется с опцией docker service --restart-delay. |
| restart_policy_window - | Значение по умолчанию: 0 | Окно оценки политики перезапуска. Сопоставляется с опцией docker service --restart-window. |
| secrets - | Значение по умолчанию: [] | Список словарей, описывающих секреты сервиса. Каждый элемент должен быть словарем, содержащим ключи secret_id, secret_name, filename, uid (по умолчанию 0), gid (по умолчанию 0), mode (по умолчанию 0444) Сопоставляется с опцией docker service --secret. Требуется версия API >= 1.25 |
| ssl_version - | Укажите версию SSL. Значение по умолчанию определяется модулем ssl.py. Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_SSL_VERSION. | |
| state - / обязательно |
| Состояние сервиса. |
| timeout - | Значение по умолчанию: 60 | Максимальное время ожидания ответа от API в секундах. Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_TIMEOUT. Если переменная окружения не задана, будет использовано значение по умолчанию. |
| tls логический |
| Защитить соединение с API с помощью TLS без проверки подлинности сервера Docker. Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_TLS. Если переменная окружения не задана, будет использовано значение по умолчанию. |
| tls_hostname - | Значение по умолчанию: "localhost" | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_TLS_HOSTNAME. Если переменная окружения не задана, будет использовано значение по умолчанию. |
| tls_verify логический |
| Защитить соединение с API с помощью TLS и проверить подлинность сервера Docker. Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_TLS_VERIFY. Если переменная окружения не задана, будет использовано значение по умолчанию. |
| tty логический |
| Выделить псевдо-терминал Сопоставляется с опцией docker service --tty. Требуется версия API >= 1.25 |
| update_delay - | Значение по умолчанию: 10 | Задержка при обновлении Сопоставляется с опцией docker service --update-delay |
| update_failure_action - |
| Действие в случае сбоя контейнера Сопоставляется с опцией docker service --update-failure-action |
| update_max_failure_ratio - | Значение по умолчанию: 0.0 | Доля задач, которые могут завершиться ошибкой во время обновления, прежде чем будет выполнено действие по обработке ошибок Сопоставляется с docker service --update-max-failure-ratio |
| update_monitor - | Значение по умолчанию: 5000000000 | Время мониторинга обновленных задач на наличие ошибок в наносекундах. Сопоставляется с опцией docker service --update-monitor |
| update_order - |
| Указывает порядок операций при развертывании обновленной задачи. Сопоставляется с docker service --update-order Требуется версия API >= 1.29 |
| update_parallelism - | Значение по умолчанию: 1 | Параллелизм обновления Сопоставляется с опцией docker service --update-parallelism |
| user - | Значение по умолчанию: "root" | Имя пользователя или UID. Если установлено значение null, будет использоваться значение из предоставленного изображения (или уже установленное для сервиса) |
Примечания
Примечание
- Подключитесь к демону Docker, предоставив параметры в каждом задании или определив переменные окружения. Вы можете определить DOCKER_HOST, DOCKER_TLS_HOSTNAME, DOCKER_API_VERSION, DOCKER_CERT_PATH, DOCKER_SSL_VERSION, DOCKER_TLS, DOCKER_TLS_VERIFY и DOCKER_TIMEOUT. Если вы используете docker machine, запустите предоставленный с продуктом скрипт для настройки окружения. Он установит эти переменные за вас. Дополнительные сведения см. в https://docker-py.readthedocs.io/en/stable/machine/.
- При подключении к демону Docker с TLS, возможно, потребуется установить дополнительные пакеты Python. Для Docker SDK для Python версии 2.4 или новее это можно сделать, установив
docker[tls]с помощью pip. - Обратите внимание, что Docker SDK для Python позволяет указать путь к конфигурации Docker только для очень немногих функций. В общем случае, он будет использовать
$HOME/docker/config.json, если переменная окруженияDOCKER_CONFIGне указана, и$DOCKER_CONFIG/config.json, в противном случае.
Примеры
- name: define myservice
docker_swarm_service:
name: myservice
image: "alpine"
args:
- "sleep"
- "3600"
mounts:
- source: /tmp/
target: /remote_tmp/
type: bind
env:
- "ENVVAR1=envvar1"
log_driver: fluentd
log_driver_options:
fluentd-address: "127.0.0.1:24224"
fluentd-async-connect: true
tag: "{{.Name}}/{{.ID}}"
restart_policy: any
restart_policy_attempts: 5
restart_policy_window: 30
register: dss_out1
- name: change myservice.env
docker_swarm_service:
name: myservice
image: "alpine"
args:
- "sleep"
- "7200"
mounts:
- source: /tmp/
target: /remote_tmp/
type: bind
env:
- "ENVVAR1=envvar1"
restart_policy: any
restart_policy_attempts: 5
restart_policy_window: 30
register: dss_out2
- name: test for changed myservice facts
fail:
msg: unchanged service
when: "{{ dss_out1 == dss_out2 }}"
- name: change myservice.image
docker_swarm_service:
name: myservice
image: "alpine:edge"
args:
- "sleep"
- "7200"
mounts:
- source: /tmp/
target: /remote_tmp/
type: bind
env:
- "ENVVAR1=envvar1"
restart_policy: any
restart_policy_attempts: 5
restart_policy_window: 30
register: dss_out3
- name: test for changed myservice facts
fail:
msg: unchanged service
when: "{{ dss_out2 == dss_out3 }}"
- name: remove mount
docker_swarm_service:
name: myservice
image: "alpine:edge"
args:
- "sleep"
- "7200"
env:
- "ENVVAR1=envvar1"
restart_policy: any
restart_policy_attempts: 5
restart_policy_window: 30
register: dss_out4
- name: test for changed myservice facts
fail:
msg: unchanged service
when: "{{ dss_out3 == dss_out4 }}"
- name: keep service as it is
docker_swarm_service:
name: myservice
image: "alpine:edge"
args:
- "sleep"
- "7200"
env:
- "ENVVAR1=envvar1"
restart_policy: any
restart_policy_attempts: 5
restart_policy_window: 30
register: dss_out5
- name: test for changed service facts
fail:
msg: changed service
when: "{{ dss_out5 != dss_out5 }}"
- name: remove myservice
docker_swarm_service:
name: myservice
state: absent
Значения возврата
Общие значения возврата документированы здесь, следующие — поля, уникальные для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| changes список | всегда | Список изменённых атрибутов службы, если служба была изменена, иначе [] Пример: ['container_labels', 'replicas'] |
| rebuilt логический | всегда | True, если служба была пересоздана (удалена и создана заново) Пример: True |
| swarm_service словарь | всегда | Словарь переменных, представляющих текущее состояние службы. Соответствует формату параметров модуля. Обратите внимание, что факты не являются частью зарегистрированных переменных, но к ним можно получить доступ напрямую. Обратите внимание, что до Ansible 2.7.9 переменная возврата была задокументирована как ansible_swarm_service, в то время как модуль фактически возвращал переменную, названную ansible_docker_service. Переменная была переименована в swarm_service как в коде, так и в документации для Ansible 2.7.9 и Ansible 2.8.0. В Ansible 2.7.x старое имя ansible_docker_service всё ещё может использоваться.Пример: { "args": [ "sleep", "3600" ], "constraints": [], "container_labels": {}, "endpoint_mode": "vip", "env": [ "ENVVAR1=envvar1" ], "force_update": False, "image": "alpine", "labels": {}, "limit_cpu": 0.0, "limit_memory": 0, "log_driver": "json-file", "log_driver_options": {}, "mode": "replicated", "mounts": [ { "source": "/tmp/", "target": "/remote_tmp/", "type": "bind" } ], "secrets": [], "configs": [], "networks": [], "publish": [], "replicas": 1, "reserve_cpu": 0.0, "reserve_memory": 0, "restart_policy": "any", "restart_policy_attempts": 5, "restart_policy_delay": 0, "restart_policy_window": 30, "update_delay": 10, "update_parallelism": 1, "update_failure_action": "continue", "update_monitor": 5000000000 "update_max_failure_ratio": 0, "update_order": "stop-first" } |
Статус
- Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- Dario Zanzico (@dariko), Jason Witkowski (@jwitko)
Подсказка
Если вы обнаружите какие-либо проблемы в этом документе, вы можете отредактировать его, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/modules/docker_swarm_service_module.html