community.general.docker_swarm – Управление кластером Swarm
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в книге задач укажите: community.general.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.general.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, используемый для подключения к Docker API. Для подключения к удалённому хосту, укажите строку 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.general.docker_node для добавления/модификации/удаления меток узлов swarm. Требуется версия 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.Установите в inspect для отображения информации о рое. |
| 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 for Python версии 2.4 или выше это можно сделать, установив
docker[tls]с помощью ansible.builtin.pip. - Обратите внимание, что Docker SDK for Python позволяет указывать путь к конфигурации Docker только для очень немногих функций. В целом, он будет использовать
$HOME/.docker/config.json, если переменная средыDOCKER_CONFIGне указана, и использовать$DOCKER_CONFIG/config.jsonв противном случае.
Примеры
- name: Init a new swarm with default parameters
community.general.docker_swarm:
state: present
- name: Update swarm configuration
community.general.docker_swarm:
state: present
election_tick: 5
- name: Add nodes
community.general.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.general.docker_swarm:
state: absent
- name: Remove a swarm manager
community.general.docker_swarm:
state: absent
force: true
- name: Remove node from swarm
community.general.docker_swarm:
state: remove
node_id: mynode
- name: Inspect swarm
community.general.docker_swarm:
state: inspect
register: swarm_info
Значения возврата
Общие значения возврата описаны в здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание | ||
|---|---|---|---|---|
| actions list / elements=string | при ошибке действия. | Предоставляет действия, выполненные в кластере. Пример: ['Этот кластер уже является кластером Swarm'] | ||
| swarm_facts dictionary | успех | Информация о Swarm. | ||
| JoinTokens dictionary | успех | Токены для подключения к Swarm. | ||
| Manager string | успех | Токен для создания нового узла *менеджера* Пример: SWMTKN-1--xxxxx | ||
| Worker string | успех | Токен для создания нового узла *рабочего* Пример: SWMTKN-1--xxxxx | ||
| UnlockKey string | при успехе, если autolock_managers равно true и Swarm инициализирован, или если autolock_managers изменилось. | Ключ разблокировки Swarm, если autolock_managers равно true. Пример: SWMKEY-1-xxx | ||
Авторы
- Thierry Bouvet (@tbouvet)
- Piotr Wojciechowski (@WojciechowskiPiotr)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/docker_swarm_module.html