docker-swarm
Ansible роль для настройки кластера Docker Swarm
Эта роль:
- Настраивает кластер
- Управляет управляющими узлами и рабочими узлами
Выполнение основано на конечном автомате, поэтому эта роль может преобразовать существующий кластер в желаемое состояние. См. замечания и протестируйте преобразование перед выполнением!
Смотрите ansible роль для Docker для установки Docker.
Требования
Ansible 2.3 и установленный Docker.
Замечания
Если изменяются управляющие узлы, хотя бы один из них должен оставаться статичным для каждого выполнения плейбука. Например, чтобы заменить manager-1 на manager-2:
- Добавьте manager-2 в управляющие узлы
- Запустите плейбук
- Удалите manager-1 из управляющих узлов
- Запустите плейбук
Уменьшите или удалите узлы с помощью плейбука:
- Оставьте узлы в инвентаре (см. пример ниже)
- Запустите плейбук
- Теперь вы можете удалить узлы, которые не участвуют в кластере, из инвентаря
Пример плейбука
Установите роль глобально с помощью:
ansible-galaxy install Bessonov.docker-swarm
или локально:
ansible-galaxy install --roles-path roles Bessonov.docker-swarm
Инвентарь (вы можете выбрать любые имена для групп, removed-nodes
является необязательным для нового кластера):
[managers]
node-1
node-2
node-3
[workers]
node-1
node-3
node-4
[removed-nodes]
node-5
node-6
Плейбук:
# собираем информацию о узлах, которые должны быть удалены или понижены в существующем кластере
- hosts: removed-nodes:workers
tasks: []
# Docker должен быть установлен заранее
# вы можете использовать любую роль для установки Docker
- hosts: managers:workers
roles:
- role: Bessonov.docker
- hosts: managers
# CLI Docker не поддерживает параллельный доступ
serial: 1
roles:
- role: Bessonov.docker-swarm
swarm_worker_hosts: workers
# необязательно: переопределите параметры по умолчанию, смотрите `defaults/main.yml`
swarm_cluster_bootstrap_parameters:
--advertise-addr: enp0s8
Лицензия
MIT License (MIT)
Авторские права (c) 2017, Антон Бессонов
Разрешение настоящим данным, безвозмездно, любому лицу, получающему копию это программного обеспечения и сопутствующих документационных файлов ("Программное обеспечение"), пользоваться в Программном обеспечении без ограничений, включая, помимо прочего, права использовать, копировать, модифицировать, объединять, публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым Программное обеспечение предоставлено, делать это, при соблюдении следующих условий:
Указанные выше права автоподдает и это разрешение должны быть включены во все копии или значительные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ КАКОГО-ЛИБО РОДА, ЯВНЫХ И ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ДЕЛОВОЙ УСПЕШНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ. В НИКАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВОДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ НЕ НОСЯТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ИСКИ, УБЫТКИ ИЛИ ИНЫЕ ОТВЕТСТВЕННОСТИ, БУДЬ ТО В РАМКАХ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ИЗ, В РЕЗУЛЬТАТЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ СДЕЛКАМИ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ.
ansible-galaxy install Bessonov/ansible-role-docker-swarm