rembik.dcos_requirements

Roles de Ansible: Mesosphere DC/OS

Un conjunto de Roles de Ansible que gestionan el ciclo de vida de un clúster de DC/OS en Linux RedHat/CentOS.

Requisitos

Para aprovechar al máximo estos roles, tus nodos deben 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 maestro ('masters')
  • Un nodo de arranque ('bootstraps')
  • Cero o más nodos agentes, utilizados para servicios de cara al público ('agents_public')
  • Uno o más nodos agentes, no utilizados 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/EarlyAccess/dcos_generate_config.sh"
  version: "1.12.0-beta1"
  version_to_upgrade_from: "1.12.0-dev"
  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 el instalador de Mesosphere DC/OS
version REQUERIDO Cadena de versión que refleja la versión que instala el instalador (dado por download). Se puede obtener ejecutando dcos_generate_config.sh --version.
version_to_upgrade_from para actualizaciones Cadena de versión de Mesosphere DC/OS que el procedimiento de actualización espera para actualizar DE. Se generará un script de actualización por versión en la máquina de arranque, cada nodo del clúster descarga la actualización adecuada para su versión actualmente en ejecución de DC/OS.
image_commit no Se puede utilizar para forzar actualizaciones de la misma versión / misma configuración. Útil principalmente para desplegar/actualizar versiones no liberadas, 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 'empresarial' de Mesosphere DC/OS. Esto es necesario ya que hay verificaciones adicionales post-actualización para componentes solo empresariales.
selinux_mode REQUERIDO Indica el modo SELinux del sistema operativo 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 config.yml válido de Mesosphere DC/OS, ver más abajo.

Parámetros del config.yml de DC/OS

Por favor consulta la referencia de configuración oficial de Mesosphere DC/OS para una lista completa de parámetros posibles. Hay algunos parámetros que se utilizan en estos roles fuera del config.yml de DC/OS, específicamente:

  • bootstrap_url: Debe apuntar a http://tu nodo de arranque:8080. Se utilizará internamente y se sobrescribirá convenientemente para que el instalador/actualizador apunte a un subdirectorio específico para la versión.
  • ip_detect_contents: Se utiliza 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 en local.
  • ip_detect_public_contents: Se utiliza 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 en local.
  • fault_domain_detect_contents: Se utiliza 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 en local.

Advertencia sobre el comportamiento de fusión del diccionario de Ansible

Debido a la estructura anidada de la configuración de dcos, puede ser necesario establecer Ansible para 'fusionar' en lugar de 'reemplazar', al combinar configuraciones de múltiples lugares.

Ejemplo
# ansible.cfg
hash_behaviour = merge

Salvaguarda 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 salvaguarda para evitar actualizaciones o cambios de configuración inesperados. En juegos no interactivos, se puede establecer una variable para saltar 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 completo de múltiples nodos. Hay algunas restricciones al hacer que un playbook utilice los roles proporcionados:

  1. Orden de grupos para ejecutar sus respectivos roles (por ejemplo, nodo de arranque primero, luego maestros, luego 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 abierta como empresarial

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 rembik.dcos_requirements
Licencia
Unknown
Descargas
69
Propietario