Bessonov.docker-swarm
Rol de Ansible para configurar un clúster de Docker Swarm
Este rol:
- Configura un clúster
- Gestiona los nodos de administración y trabajo
La ejecución se basa en una máquina de estados finitos, por lo que este rol puede transformar un clúster existente en el estado deseado. ¡Consulta las advertencias y prueba la transformación antes de la ejecución!
Consulta rol de Ansible para Docker para la instalación de Docker.
Requisitos
Ansible 2.3 y Docker instalado.
Advertencias
Si cambia algún nodo de administración, al menos uno de ellos debe permanecer estático en cada ejecución del playbook. Por ejemplo, para cambiar el nodo-1 por el nodo-2:
- Agrega el nodo-2 a los administradores
- Ejecuta el playbook
- Elimina el nodo-1 de los administradores
- Ejecuta el playbook
Para degradar o eliminar nodos con un playbook:
- Mantén los nodos en el inventario (consulta el ejemplo a continuación)
- Ejecuta el playbook
- Ahora puedes eliminar los nodos que no participan en el clúster del inventario
Ejemplo de Playbook
Instala el rol globalmente con:
ansible-galaxy install Bessonov.docker-swarm
o localmente:
ansible-galaxy install --roles-path roles Bessonov.docker-swarm
Inventario (puedes elegir cualquier nombre para los grupos, removed-nodes
es opcional para un nuevo clúster):
[managers]
nodo-1
nodo-2
nodo-3
[workers]
nodo-1
nodo-3
nodo-4
[removed-nodes]
nodo-5
nodo-6
Playbook:
# recopila datos sobre los nodos que deben ser eliminados o degradados del clúster existente
- hosts: removed-nodes:workers
tasks: []
# Docker debe estar instalado antes
# puedes usar cualquier rol para la instalación de Docker
- hosts: managers:workers
roles:
- role: Bessonov.docker
- hosts: managers
# la CLI de Docker no admite acceso concurrente
serial: 1
roles:
- role: Bessonov.docker-swarm
swarm_worker_hosts: workers
# opcional: sobrescribir parámetros predeterminados, consulta `defaults/main.yml`
swarm_cluster_bootstrap_parameters:
--advertise-addr: enp0s8
Licencia
Licencia MIT (MIT)
Copyright (c) 2017, Anton Bessonov
Por la presente se concede permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para manejar el Software sin restricciones, incluyendo sin limitación los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y para permitir a las personas a quienes se les proporciona el Software hacerlo, sujeto a las siguientes condiciones:
El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITÁNDOSE A LAS GARANTÍAS DE COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO EN PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE COPYRIGHT SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑO O OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO U OTRA, QUE SURJA DE, FUERA O EN CONEXIÓN CON EL SOFTWARE O EL USO O OTROS TRATOS EN EL SOFTWARE.
Setup and manage a docker swarm cluster
ansible-galaxy install Bessonov.docker-swarm