community.docker.docker_swarm – Управление кластером Swarm
Примечание
Этот плагин входит в состав коллекции community.docker (версия 1.2.2).
Для его установки используйте: ansible-galaxy collection install community.docker
Для использования в playbook укажите: community.docker.docker_swarm
Обзор
- Создание нового кластера Swarm.
- Добавление/удаление узлов или менеджеров в существующий кластер.
Требования
Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.
- API Docker >= 1.25
- Docker SDK для Python: Обратите внимание, что модуль Python docker-py был заменён на docker (подробнее см. здесь). Для Python 2.6 необходимо использовать
docker-py. В противном случае рекомендуется установить модуль Pythondocker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и последующем удалении одного из модулей другой может перестать работать, и потребуется его переустановка. - Docker SDK для Python >= 1.10.0 (для Python 2.6 используйте docker-py)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| advertise_addr строка | Раскрываемый внешне адрес, рекламируемый другим узлам. Это может быть комбинация адреса/порта в формате 192.168.1.1:4567, или интерфейс, за которым следует номер порта, например eth0:4567.Если номер порта опущен, используется номер порта из адреса прослушивания. Если advertise_addr не указан, он будет автоматически обнаружен, когда это возможно. Используется только при инициализации или присоединении к рою. По этой причине не учитывается при проверке идемпотентности. | |
| api_version строка | По умолчанию: "auto" | Версия Docker API, работающая на Docker хосте. По умолчанию используется последняя версия API, поддерживаемая Docker SDK для Python и демоном docker. Если значение не указано в задаче, вместо него используется значение переменной окружения DOCKER_API_VERSION. Если переменная окружения не задана, используется значение по умолчанию.псевдонимы: docker_api_version |
| autolock_managers логическое значение |
| Если установлено, генерирует ключ и использует его для блокировки данных, хранящихся на менеджерах. Значение по умолчанию Docker — no.
community.docker.docker_swarm_info можно использовать для получения ключа разблокировки. |
| ca_cert путь | Используйте сертификат CA при проверке сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH задана, используется файл ca.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.псевдонимы: tls_ca_cert, cacert_path | |
| ca_force_rotate целое число | Целое число, предназначенное для принудительного генерации нового сертификата и ключа CA подписи роем, если ни один из них не был указан. Значение по умолчанию Docker — 0.Требуется версия API >= 1.30. | |
| client_cert путь | Путь к файлу TLS-сертификата клиента. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH задана, используется файл cert.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.псевдонимы: tls_client_cert, cert_path | |
| client_key путь | Путь к файлу TLS-ключа клиента. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH задана, используется файл key.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.псевдонимы: tls_client_key, key_path | |
| debug логическое значение |
| Режим отладки |
| default_addr_pool список / элементы=строка | Бассейн адресов по умолчанию в формате CIDR. Используется только при инициализации роя. По этой причине не учитывается при проверке идемпотентности. Требуется версия API >= 1.39. | |
| dispatcher_heartbeat_period целое число | Задержка отправки пульса агентом диспетчеру. Значение по умолчанию Docker — 5s. | |
| docker_host строка | По умолчанию: "unix://var/run/docker.sock" | URL или путь к сокету Unix, используемые для подключения к API Docker. Для подключения к удаленному хосту укажите строку TCP-соединения. Например, tcp://192.0.2.23:2376. Если для шифрования соединения используется TLS, модуль автоматически заменит tcp в URL подключения на https.Если значение не указано в задаче, вместо него используется значение переменной окружения DOCKER_HOST.псевдонимы: docker_url |
| election_tick целое число | Количество тиков (в секундах), необходимых без лидера для запуска новой выборочной процедуры. Значение по умолчанию Docker — 10s. | |
| force логическое значение |
| Используйте со значением present, чтобы принудительно создать новый рой, даже если вы уже являетесь частью одного.Используйте со значением absent, чтобы выйти из роя, даже если этот узел является менеджером. |
| heartbeat_tick целое число | Количество тиков (в секундах) между каждым пульсом. Значение по умолчанию Docker — 1s. | |
| join_token строка | Токен роя, используемый для присоединения к кластеру роя. Используется со значением state=join. | |
| keep_old_snapshots целое число | Количество снимков, сохраняемых за пределами текущего снимка. Значение по умолчанию Docker — 0. | |
| labels словарь | Пользовательские данные в формате ключ/значение. Операции с метками в этом модуле применяются к кластеру docker swarm. Используйте модуль community.docker.docker_node для добавления, изменения или удаления меток узлов роя. Требуется версия API >= 1.32. | |
| listen_addr строка | По умолчанию: "0.0.0.0:2377" | Адрес прослушивания, используемый для межменеджерного взаимодействия. Это может быть комбинация адреса/порта в формате 192.168.1.1:4567, или интерфейс, за которым следует номер порта, например eth0:4567.Если номер порта опущен, используется порт прослушивания роя по умолчанию. Используется только при инициализации или присоединении к рою. По этой причине не учитывается при проверке идемпотентности. |
| log_entries_for_slow_followers целое число | Количество записей журнала, которые нужно сохранить для синхронизации медленных последователей после создания снимка. | |
| name строка | Имя роя. | |
| node_cert_expiry целое число | Автоматическое истечение срока действия сертификатов узлов. Значение по умолчанию Docker — 3months. | |
| node_id строка | Идентификатор узла роя, который нужно удалить. Используется со значением state=remove. | |
| remote_addrs список / элементы=строка | Удаленный адрес одного или нескольких менеджерских узлов существующего роя для подключения. Используется со значением state=join. | |
| rotate_manager_token логическое значение |
| Сменить токен присоединения менеджера. |
| rotate_worker_token логическое значение |
| Сменить токен присоединения рабочего узла. |
| signing_ca_cert строка | Желаемый сертификат CA подписи для всех листовых TLS-сертификатов узлов роя в формате PEM. Это не должно быть путь к сертификату, а содержимое сертификата. Требуется версия API >= 1.30. | |
| signing_ca_key строка | Желаемый ключ CA подписи для всех листовых TLS-сертификатов узлов роя в формате PEM. Это не должно быть путь к ключу, а содержимое ключа. Требуется версия API >= 1.30. | |
| snapshot_interval целое число | Количество записей журнала между снимками. Значение по умолчанию Docker — 10000. | |
| ssl_version строка | Укажите допустимый номер версии SSL. Значение по умолчанию определяется модулем ssl.py. Если значение не указано в задаче, вместо него используется значение переменной окружения DOCKER_SSL_VERSION. | |
| state строка |
| Установите в present, чтобы создать/обновить новый кластер.Установите в join, чтобы присоединиться к существующему кластеру.Установите в absent, чтобы выйти из существующего кластера.Установите в remove, чтобы удалить отсутствующий узел из кластера. Обратите внимание, что для удаления требуется Docker SDK для Python >= 2.4.0. |
| subnet_size целое число | Длина маски подсети для стандартного пула адресов. Используется только при инициализации роя. По этой причине не учитывается при проверке идемпотентности. Требуется версия API >= 1.39. | |
| task_history_retention_limit целое число | Максимальное количество задач в истории, хранимых в памяти. Значение по умолчанию Docker — 5. | |
| timeout целое число | По умолчанию: 60 | Максимальное время ожидания ответа от API в секундах. Если значение не указано в задаче, вместо него используется значение переменной окружения DOCKER_TIMEOUT. |
| tls boolean |
| Обеспечьте подключение к API с использованием TLS без проверки подлинности сервера Docker. Обратите внимание, что если validate_certs также установлено в yes, то оно будет иметь приоритет.Если значение не указано в задаче, вместо него будет использовано значение переменной среды DOCKER_TLS. Если переменная среды не установлена, будет использовано значение по умолчанию. |
| tls_hostname string | Значение по умолчанию: "localhost" | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. Если значение не указано в задаче, вместо него будет использовано значение переменной среды DOCKER_TLS_HOSTNAME. Если переменная среды не установлена, будет использовано значение по умолчанию. |
| validate_certs boolean |
| Обеспечьте подключение к API с использованием TLS и проверкой подлинности сервера Docker. Если значение не указано в задаче, вместо него будет использовано значение переменной среды DOCKER_TLS_VERIFY. Если переменная среды не установлена, будет использовано значение по умолчанию.псевдонимы: tls_verify |
Примечания
Примечание
- Подключайтесь к демону 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://docs.docker.com/machine/reference/env/. - При подключении к демону Docker с TLS, возможно, потребуется установить дополнительные пакеты Python. Для Docker SDK для Python версии 2.4 или новее это можно сделать, установив
docker[tls]с помощью ansible.builtin.pip. - Обратите внимание, что Docker SDK для Python позволяет указать путь к конфигурации Docker только для очень немногих функций. В целом, он будет использовать
$HOME/.docker/config.json, если переменная средыDOCKER_CONFIGне указана, и$DOCKER_CONFIG/config.jsonв противном случае. - Этот модуль использует Docker SDK для Python для связи с демоном Docker.
Примеры
- name: Init a new swarm with default parameters
community.docker.docker_swarm:
state: present
- name: Update swarm configuration
community.docker.docker_swarm:
state: present
election_tick: 5
- name: Add nodes
community.docker.docker_swarm:
state: join
advertise_addr: 192.168.1.2
join_token: SWMTKN-1--xxxxx
remote_addrs: [ '192.168.1.1:2377' ]
- name: Leave swarm for a node
community.docker.docker_swarm:
state: absent
- name: Remove a swarm manager
community.docker.docker_swarm:
state: absent
force: true
- name: Remove node from swarm
community.docker.docker_swarm:
state: remove
node_id: mynode
Значения возврата
Общие значения возврата документированы здесь, следующие являются полями, уникальными для этого модуля:
| Ключ | Возвращаемое значение | Описание | ||
|---|---|---|---|---|
| actions list / elements=string | при ошибке действия. | Предоставляет действия, выполненные в контейнере. Пример: ['This cluster is already a swarm cluster'] | ||
| swarm_facts dictionary | успех | Информация о контейнере. | ||
| JoinTokens dictionary | успех | Токены для подключения к контейнеру. | ||
| Manager string | успех | Токен для создания нового узла *менеджера* Пример: SWMTKN-1--xxxxx | ||
| Worker string | успех | Токен для создания нового узла *рабочего* Пример: SWMTKN-1--xxxxx | ||
| UnlockKey string | при успехе, если autolock_managers равно true и контейнер инициализирован, или если autolock_managers изменился. | Ключ разблокировки контейнера, если autolock_managers равно true.Пример: SWMKEY-1-xxx | ||
Авторы
- Thierry Bouvet (@tbouvet)
- Piotr Wojciechowski (@WojciechowskiPiotr)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/docker/docker_swarm_module.html