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:

  1. Un conjunto de group_var por tipo de nodo
  2. 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 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/OS
  • ip_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/OS
  • fault_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:

  1. Orden de los grupos para ejecutar sus respectivos roles (por ejemplo, primero el nodo bootstrap, luego los maestros, luego los agentes)
  2. 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

Apache 2.0

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.

Acerca del proyecto

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.

Instalar
ansible-galaxy install dcos.dcos_requirements
Licencia
Unknown
Descargas
135
Propietario
Datacenter Operating System