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