Spec-Zone.ru › Ansible 2.7

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
строка
    Варианты:
  • vip
  • dnsrr
Режим конечной точки сервиса.
Сопоставление с параметром 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
-
    Варианты:
  • none ←
  • on-failure
  • any
Условие перезапуска сервиса.
Сопоставляется с опцией 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
- / обязательно
    Варианты:
  • present ←
  • absent
Состояние сервиса.
timeout
-
Значение по умолчанию:
60
Максимальное время ожидания ответа от API в секундах.
Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_TIMEOUT. Если переменная окружения не задана, будет использовано значение по умолчанию.
tls
логический
    Варианты:
  • no ←
  • yes
Защитить соединение с API с помощью TLS без проверки подлинности сервера Docker.
Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_TLS. Если переменная окружения не задана, будет использовано значение по умолчанию.
tls_hostname
-
Значение по умолчанию:
"localhost"
При проверке подлинности сервера Docker укажите ожидаемое имя сервера.
Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_TLS_HOSTNAME. Если переменная окружения не задана, будет использовано значение по умолчанию.
tls_verify
логический
    Варианты:
  • no ←
  • yes
Защитить соединение с API с помощью TLS и проверить подлинность сервера Docker.
Если значение не указано в задании, вместо него будет использовано значение переменной окружения DOCKER_TLS_VERIFY. Если переменная окружения не задана, будет использовано значение по умолчанию.
tty
логический
    Варианты:
  • no ←
  • yes
Выделить псевдо-терминал
Сопоставляется с опцией docker service --tty.
Требуется версия API >= 1.25
update_delay
-
Значение по умолчанию:
10
Задержка при обновлении
Сопоставляется с опцией docker service --update-delay
update_failure_action
-
    Варианты:
  • continue ←
  • pause
Действие в случае сбоя контейнера
Сопоставляется с опцией 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
-
    Варианты:
  • stop-first ←
  • start-first
Указывает порядок операций при развертывании обновленной задачи.
Сопоставляется с 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API