dcos.dcos_requirements
Roles de Ansible: Mesosphere DC/OS
Un conjunto de Roles de Ansible que gestionan el ciclo de vida de un clúster DC/OS en Linux RedHat/CentOS.
Requisitos
Para aprovechar al máximo estos roles, tus nodos deberían parecerse a la forma recomendada por Mesosphere para configurar la infraestructura. Dependiendo de tu configuración, se espera desplegar en:
- Uno o más nodos maestros ('masters')
- Un nodo bootstrap ('bootstraps')
- Cero o más nodos agentes, usados para servicios de cara al público ('agents_public')
- Uno o más nodos agentes, no usados para servicios de cara al público ('agents_private')
Se proporciona un archivo de inventario de ejemplo como se muestra aquí:
[bootstraps]
bootstrap1-dcos112s.example.com
[masters]
master1-dcos112s.example.com
master2-dcos112s.example.com
master3-dcos112s.example.com
[agents_private]
agent1-dcos112s.example.com
remoteagent1-dcos112s.example.com
[agents_public]
publicagent1-dcos112s.example.com
[agents:children]
agents_private
agents_public
[common:children]
bootstraps
masters
agents
agents_public
Variables del Rol
Los roles de Ansible de Mesosphere DC/OS utilizan dos conjuntos de variables:
- Un conjunto de
group_var
por tipo de nodo - Un diccionario de múltiples niveles llamado
dcos
, que debe estar disponible para todos los nodos
Variables por grupo
[bootstraps:vars]
node_type=bootstrap
[masters:vars]
node_type=master
dcos_legacy_node_type_name=master
[agents_private:vars]
node_type=agent
dcos_legacy_node_type_name=slave
[agents_public:vars]
node_type=agent_public
dcos_legacy_node_type_name=slave_public
Variables globales
dcos:
download: "https://downloads.dcos.io/dcos/stable/1.13.4/dcos_generate_config.sh"
download_checksum: "sha256:a3d295de33ad55b10f5dc66c9594d9175a40f5aaec7734d664493968a9f751fd"
version: "1.13.4"
enterprise_dcos: false
selinux_mode: enforcing
config:
cluster_name: "examplecluster"
security: strict
bootstrap_url: http://int-bootstrap1-examplecluster.example.com:8080
exhibitor_storage_backend: static
master_discovery: static
master_list:
- 172.31.42.1
Variables a nivel de clúster
Nombre | ¿Requerido? | Descripción |
---|---|---|
download | REQUERIDO | URL (https) para descargar Mesosphere DC/OS. |
download_checksum | no | Suma de verificación para comprobar la descarga. Debe comenzar con el método utilizado. Por ejemplo, "sha256: |
version | REQUERIDO | Cadena de versión que refleja la versión que el instalador (dada por download ) instala. Se puede obtener ejecutando dcos_generate_config.sh --version . |
version_to_upgrade_from | para upgrades | Cadena de versión de Mesosphere DC/OS que se espera actualizar. Se generará un script de actualización por versión en la máquina bootstrap, cada nodo del clúster descarga la actualización adecuada para su versión actualmente en ejecución. |
image_commit | no | Se puede usar para forzar actualizaciones de la misma versión / misma configuración. Útil principalmente para desplegar/actualizar versiones no lanzadas, por ejemplo 1.12-dev . Este parámetro tiene prioridad sobre version . |
enterprise_dcos | REQUERIDO | Especifica si el instalador (dado por download ) instala una versión 'abierta' o 'enterprise' de Mesosphere DC/OS. Esto es necesario ya que hay comprobaciones adicionales de posactualización para componentes solo de enterprise. |
selinux_mode | REQUERIDO | Indica el modo SELinux de los sistemas operativos de los nodos del clúster. Mesosphere DC/OS admite la ejecución en modo enforcing a partir de 1.12. Las versiones anteriores requieren permissive . |
config | sí | Estructura Yaml que representa un valid config.yml de Mesosphere DC/OS, ver abajo. |
Parámetros de config.yml de DC/OS
Por favor, consulta la referencia de configuración oficial de Mesosphere DC/OS para una lista completa de los parámetros posibles. Hay algunos parámetros que son utilizados por estos roles fuera del config.yml de DC/OS, específicamente:
bootstrap_url
: Debe apuntar a http://tu nodo bootstrap:8080. Se utilizará internamente y se sobrescribirá de manera conveniente para el instalador/actualizador para que apunte a un subdirectorio específico de la versión.ip_detect_contents
: Se usa para determinar un script de detección de IP proporcionado por el usuario. Sobrescribe la detección de entorno incorporada y el uso de un script genérico de AWS y/o local. Referencia oficial de detección de IP de Mesosphere DC/OSip_detect_public_contents
: Se usa para determinar un script de detección de IP pública proporcionado por el usuario. Sobrescribe la detección de entorno incorporada y el uso de un script genérico de AWS y/o local. Referencia oficial de detección de IP de Mesosphere DC/OSfault_domain_detect_contents
: Se usa para determinar un script de detección de dominio de falla proporcionado por el usuario. Sobrescribe la detección de entorno incorporada y el uso de un script genérico de AWS y/o local.
Cuidado con el comportamiento de fusión de diccionarios de Ansible
Debido a la estructura anidada de la configuración dcos
, puede ser necesario configurar Ansible a 'merge' en lugar de 'replace', al combinar configuraciones de múltiples lugares.
Ejemplo
# ansible.cfg
hash_behaviour = merge
Seguridad durante el uso interactivo: dcos_cluster_name_confirmed
Al invocar estos roles de forma interactiva (por ejemplo, desde la máquina del operador), el rol DCOS.bootstrap
requerirá una confirmación manual del clúster contra el cual se ejecutará. Este es un mecanismo de seguridad para evitar actualizaciones o cambios de configuración no intencionados. En ejecuciones no interactivas, se puede establecer una variable para omitir este paso, por ejemplo:
ansible-playbook -e 'dcos_cluster_name_confirmed=True' dcos.yml
Ejemplo de playbook
Mesosphere DC/OS es un sistema complejo, que abarca múltiples nodos para formar un clúster multinodo completo. Hay algunas restricciones para hacer que un playbook use los roles proporcionados:
- Orden de los grupos para ejecutar sus respectivos roles (por ejemplo, primero el nodo bootstrap, luego los maestros, luego los agentes)
- Concurrencia para actualizaciones (por ejemplo,
serial: 1
para nodos maestros)
El playbook dcos.yml
proporcionado se puede usar tal cual para instalar y actualizar Mesosphere DC/OS.
Versiones de OS y Mesosphere DC/OS probadas
- CentOS 7, RHEL 7
- DC/OS 1.12, tanto versión open como enterprise
Licencia
Información del Autor
Este rol fue creado por el equipo SRE @ Mesosphere y otros en 2018, basado en múltiples herramientas internas y roles de Ansible no públicos que se han desarrollado internamente a lo largo de los años.
Life cycle management of a Mesosphere DC/OS agent node. Part of a set of Ansible roles that manage DC/OS on RedHat/CentOS Linux.
ansible-galaxy install dcos.dcos_requirements