brianshumate.consul

Consul

Molecule Tiempo promedio para resolver un problema Porcentaje de problemas aún abiertos

Este rol de Ansible instala Consul, incluyendo el establecimiento de una estructura de sistema de archivos y la configuración del agente del servidor o cliente con soporte para algunas funciones operativas comunes.

También puede inicializar un clúster de desarrollo o evaluación de 3 servidores corriendo en un entorno basado en Vagrant y VirtualBox. Consulte README_VAGRANT.md y el Vagrantfile asociado para más detalles.

Filosofía del Rol

“Otro defecto en el carácter humano es que todos quieren construir y nadie quiere hacer mantenimiento.”
― Kurt Vonnegut, Hocus Pocus

Tenga en cuenta que el objetivo de diseño original de este rol se centró más en la instalación inicial y la creación de un entorno de clúster de servidores Consul, por lo que actualmente no se preocupa (tanto) por el mantenimiento continuo de un clúster.

Muchos usuarios han expresado que el entorno basado en Vagrant facilita que un clúster de servidores Consul funcione localmente, así que este rol se orientará hacia esa experiencia como un motivador principal para su existencia.

¡Si lo utiliza de otras maneras, mucho mejor!

Migración e Instalación del Rol

Este rol fue desarrollado originalmente por Brian Shumate y era conocido en Ansible Galaxy como brianshumate.consul. Brian pidió a la comunidad que lo aliviara de la carga de mantenimiento, y por lo tanto Bas Meijer transfirió el rol a ansible-collections para que un equipo de voluntarios pudiera mantenerlo. Para instalar este rol en su proyecto, debe crear un archivo requirements.yml en la subcarpeta roles/ de su proyecto con este contenido:

---
- src: https://github.com/ansible-collections/ansible-consul.git
  name: ansible-consul
  scm: git
  version: master

Este repositorio tiene versiones etiquetadas que puede utilizar para fijar la versión.

Tower instalará el rol automáticamente; si utiliza la CLI para controlar Ansible, instálelo así:

ansible-galaxy install -p roles -r roles/requirements.yml

Requisitos

Este rol requiere una distribución de FreeBSD, Debian, Red Hat Enterprise Linux o Windows Server 2012 R2.

El rol podría funcionar con otras distribuciones y versiones de SO, pero se sabe que funciona bien con las siguientes versiones de software:

  • Consul: 1.8.7
  • Ansible: 2.8.2
  • Alma Linux: 8, 9
  • Alpine Linux: 3.8
  • CentOS: 7, 8
  • Debian: 9
  • FreeBSD: 11
  • Mac OS X: 10.15 (Catalina)
  • RHEL: 7, 8
  • Rocky Linux: 8
  • Oracle Linux: 7, 8
  • Ubuntu: 16.04
  • Windows: Server 2012 R2

Tenga en cuenta que para el modo de instalación "local" (el predeterminado), este rol descargará localmente solo una instancia del archivo comprimido de Consul, lo descomprimirá e instalará el binario resultante en todos los hosts de Consul deseados.

Para ello, es necesario que unzip esté disponible en el host de control de Ansible y el rol fallará si no detecta unzip en el PATH.

Los requisitos de colección para este rol están listados en el archivo requirements.yml. Es su responsabilidad asegurarse de instalar estas colecciones para garantizar que el rol funcione correctamente. Por lo general, esto se puede hacer con:

ansible-galaxy collection install -r requirements.yml

Advertencias

Este rol no admite completamente la opción de límite (ansible -l) para limitar los hosts, ya que esto romperá la población de las variables de host requeridas. Si utiliza la opción de límite con este rol, puede encontrar errores de plantilla como:

Undefined is not JSON serializable.

Variables del Rol

El rol utiliza variables definidas en estos 3 lugares:

  • Archivo de inventario de hosts (ver examples/vagrant_hosts para un ejemplo)
  • vars/*.yml (principalmente variables específicas de sistema operativo/distribución)
  • defaults/main.yml (todo lo demás)

:warning: NOTA: El rol depende de que el grupo de hosts de inventario para los servidores consul esté definido como la variable consul_group_name y no funcionará correctamente de otra manera. Alternativamente, los servidores consul pueden colocarse en el grupo de hosts por defecto [consul_instances] en el inventario como se muestra en los ejemplos a continuación.

Muchas variables del rol también pueden tomar sus valores de variables de entorno; estas se mencionan en la descripción cuando corresponde.

consul_version

  • Versión a instalar
  • Establezca el valor como latest para la versión más reciente disponible de consul
  • Valor por defecto: 1.8.7

consul_architecture_map

  • Diccionario para traducir los valores de ansible_architecture a los valores de arquitectura en Go convención de nomenclatura
  • Valor por defecto: dict

consul_architecture

  • Arquitectura del sistema determinada por {{ consul_architecture_map[ansible_architecture] }}
  • Valor por defecto (determinado en tiempo de ejecución): amd64, arm, o arm64

consul_os

  • Nombre del sistema operativo en representación en minúsculas
  • Valor por defecto: {{ ansible_os_family | lower }}

consul_install_dependencies

  • Instalación de dependencias de python y paquetes requeridos para que funcione el rol.
  • Valor por defecto: true

consul_zip_url

  • URL de descarga del archivo comprimido de Consul
  • Valor por defecto: https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_{{ consul_os }}_{{ consul_architecture }}.zip

consul_checksum_file_url

  • URL del archivo de sumarios SHA256 del paquete
  • Valor por defecto: https://releases.hashicorp.com/consul/{{ consul_version }}/{{ consul_version }}_SHA256SUMS

consul_bin_path

  • Ruta de instalación del binario
  • Valor por defecto en Linux: /usr/local/bin
  • Valor por defecto en Windows: C:\ProgramData\consul\bin

consul_config_path

  • Ruta del archivo de configuración base
  • Valor por defecto en Linux: /etc/consul
  • Valor por defecto en Windows: C:\ProgramData\consul\config

consul_configd_path

  • Directorio de configuración adicional
  • Valor por defecto en Linux: {{ consul_config_path }}/consul.d
  • Valor por defecto en Windows: C:\ProgramData\consul\config.d

consul_data_path

  • Ruta del directorio de datos como se define en data_dir o -data-dir
  • Valor por defecto en Linux: /opt/consul
  • Valor por defecto en Windows: C:\ProgramData\consul\data

consul_configure_syslogd

  • Habilitar la configuración de rsyslogd o syslog-ng en Linux. Si está deshabilitado, Consul seguirá registrando en syslog si consul_syslog_enable es verdadero, pero el daemon de syslog no estará configurado para escribir los registros de Consul en su propio archivo de registro.
    • Anule con la variable de entorno CONSUL_CONFIGURE_SYSLOGD
  • Valor por defecto en Linux: false

consul_log_path

  • Si consul_syslog_enable es false
  • Si consul_syslog_enable es true
    • Ruta del registro para usar en la configuración de rsyslogd en Linux. Ignorado si consul_configure_syslogd es false.
  • Valor por defecto en Linux: /var/log/consul
    • Anule con la variable de entorno CONSUL_LOG_PATH
  • Valor por defecto en Windows: C:\ProgramData\consul\log

consul_log_file

  • Si consul_syslog_enable es false
  • Si consul_syslog_enable es true
    • Archivo de registro para usar en la configuración de rsyslogd en Linux. Ignorado si consul_configure_syslogd es false.
  • Anule con la variable de entorno CONSUL_LOG_FILE
  • Valor por defecto en Linux: consul.log

consul_log_rotate_bytes

  • Bytes de rotación del registro según se define en log_rotate_bytes o -log-rotate-bytes
    • Anule con la variable de entorno CONSUL_LOG_ROTATE_BYTES
  • Ignorado si consul_syslog_enable es true
  • Valor por defecto: 0

consul_log_rotate_duration

  • Duración de rotación del registro según se define en log_rotate_duration o -log-rotate-duration
    • Anule con la variable de entorno CONSUL_LOG_ROTATE_DURATION
  • Ignorado si consul_syslog_enable es true
  • Valor por defecto: 24h

consul_log_rotate_max_files

  • Máx. archivos de rotación del registro según se define en log_rotate_max_files o -log-rotate-max-files
    • Anule con la variable de entorno CONSUL_LOG_ROTATE_MAX_FILES
  • Ignorado si consul_syslog_enable es true
  • Valor por defecto: 0

consul_syslog_facility

  • Instalación de syslog como se define en syslog_facility
    • Anule con la variable de entorno CONSUL_SYSLOG_FACILITY
  • Valor por defecto en Linux: local0

syslog_user

  • Propietario del proceso rsyslogd en Linux. La propiedad de consul_log_path se establece en este usuario en Linux. Ignorado si consul_configure_syslogd es false.
    • Anule con la variable de entorno SYSLOG_USER
  • Valor por defecto en Linux: syslog

syslog_group

  • Grupo del usuario que ejecuta el proceso rsyslogd en Linux. La propiedad de consul_log_path se establece en este grupo en Linux. Ignorado si consul_configure_syslogd es false.
    • Anule con la variable de entorno SYSLOG_GROUP
  • Valor por defecto: adm

consul_run_path

  • Ruta de ejecución para el archivo del identificador de proceso (PID)
  • Valor por defecto en Linux: /run/consul
  • Valor por defecto en Windows: C:\ProgramData\consul

consul_user

  • Usuario del SO
  • Valor por defecto en Linux: consul
  • Valor por defecto en Windows: LocalSystem

consul_manage_user

  • Si crea o no el usuario definido por consul_user
  • Valor por defecto: true

consul_group

  • Grupo del SO
  • Valor por defecto: bin

consul_manage_group

  • Si crea o no el grupo definido por consul_group
  • Valor por defecto: true

consul_group_name

  • Nombre del grupo de inventario
    • Anule con la variable de entorno CONSUL_GROUP_NAME
  • Valor por defecto: consul_instances

consul_retry_interval

  • Intervalo para intentos de reconexión a servidores LAN
  • Valor por defecto: 30s

consul_retry_interval_wan

  • Intervalo para intentos de reconexión a servidores WAN
  • Valor por defecto: 30s

consul_retry_join_skip_hosts

  • Si es verdadero, el valor de configuración para retry_join no se poblará con los servidores principales predeterminados. El valor puede inicializarse usando consul_join
  • Valor por defecto: false

consul_retry_max

  • Máx. intentos de reconexión a servidores LAN antes de fallar (0 = infinito)
  • Valor por defecto: 0

consul_retry_max_wan

  • Máx. intentos de reconexión a servidores WAN antes de fallar (0 = infinito)
  • Valor por defecto: 0

consul_join

  • Lista de servidores LAN, no gestionados por este rol, para unirse (direcciones IPv4 IPv6 o DNS)
  • Valor por defecto: []

consul_join_wan

  • Lista de servidores WAN, no gestionados por este rol, para unirse (direcciones IPv4 IPv6 o DNS)
  • Valor por defecto: []

consul_servers

Generalmente no es necesario alterar manualmente esta lista.

  • Lista de nodos del servidor
  • Valor por defecto: Lista de todos los nodos en consul_group_name con consul_node_role establecido en server o bootstrap

consul_bootstrap_expect

  • Booleano que añade el valor bootstrap_expect en el archivo de configuración de los servidores Consul
  • Valor por defecto: false

consul_bootstrap_expect_value

  • Entero para definir el número mínimo de servidores consul unidos al clúster para elegir al líder.
  • Valor por defecto: Calculado en tiempo de ejecución basado en la cantidad de nodos

consul_gather_server_facts

Esta función hace posible recopilar la consul_advertise_address(_wan) de los servidores que actualmente no son objetivo del playbook.

Para hacer esto posible se utiliza la opción delegate_facts; note que esta opción ha sido problemática.

  • Recopilar hechos de servidores que actualmente no son objetivo
  • Valor por defecto: false

consul_datacenter

  • Etiqueta de datacenter
    • Anule con la variable de entorno CONSUL_DATACENTER
  • Valor por defecto: dc1

consul_domain

  • Nombre del dominio de Consul según se define en domain o -domain
    • Anule con la variable de entorno CONSUL_DOMAIN
  • Valor por defecto: consul

consul_alt_domain

  • Nombre del dominio alternativo de Consul según se define en alt_domain o -alt-domain
    • Anule con la variable de entorno CONSUL_ALT_DOMAIN
  • Valor por defecto: Cadena vacía

consul_node_meta

  • Metadatos del nodo Consul (clave-valor)
  • Soportado en la versión de Consul 0.7.3 o posterior
  • Valor por defecto: {}
  • Ejemplo:
consul_node_meta:
    node_type: "my-custom-type"
    node_meta1: "metadata1"
    node_meta2: "metadata2"

consul_log_level

  • Nivel de registro según se define en log_level o -log-level
    • Anule con la variable de entorno CONSUL_LOG_LEVEL
  • Valor por defecto: INFO

consul_syslog_enable

  • Registrar en syslog según se define en enable_syslog o -syslog
    • Anule con la variable de entorno CONSUL_SYSLOG_ENABLE
  • Valor por defecto en Linux: false
  • Valor por defecto en Windows: false

consul_iface

  • Interfaz de red de Consul
    • Anule con la variable de entorno CONSUL_IFACE
  • Valor por defecto: {{ ansible_default_ipv4.interface }}

consul_bind_address

  • Dirección de enlace
    • Anule con la variable de entorno CONSUL_BIND_ADDRESS
  • Valor por defecto: dirección ipv4 predeterminada, o dirección de la interfaz configurada por consul_iface

consul_advertise_address

  • Dirección de anuncio LAN
  • Valor por defecto: consul_bind_address

consul_advertise_address_wan

  • Dirección de anuncio WAN
  • Valor por defecto: consul_bind_address

consul_translate_wan_address

  • Preferir la dirección WAN configurada de un nodo al servir DNS
  • Valor por defecto: false

consul_advertise_addresses

  • Configuración avanzada de direcciones anfitrionas
  • Las direcciones individuales pueden ser sobreescritas utilizando las variables consul_advertise_addresses_*
  • Valor por defecto:
    consul_advertise_addresses:
      serf_lan: "{{ consul_advertise_addresses_serf_lan | default(consul_advertise_address+':'+consul_ports.serf_lan) }}"
      serf_wan: "{{ consul_advertise_addresses_serf_wan | default(consul_advertise_address_wan+':'+consul_ports.serf_wan) }}"
      rpc: "{{ consul_advertise_addresses_rpc | default(consul_bind_address+':'+consul_ports.server) }}"
    

consul_client_address

  • Dirección del cliente
  • Valor por defecto: 127.0.0.1

consul_addresses

  • Configuración avanzada de direcciones
  • Las direcciones individuales pueden ser sobrescritas utilizando las variables consul_addresses_*
  • Valor por defecto:
    consul_addresses:
      dns: "{{ consul_addresses_dns | default(consul_client_address, true) }}"
      http: "{{ consul_addresses_http | default(consul_client_address, true) }}"
      https: "{{ consul_addresses_https | default(consul_client_address, true) }}"
      rpc: "{{ consul_addresses_rpc | default(consul_client_address, true) }}"
      grpc: "{{ consul_addresses_grpc | default(consul_client_address, true) }}"
      grpc_tls: "{{ consul_addresses_grpc_tls | default(consul_client_address, true) }}"
    

consul_ports

  • La documentación oficial sobre los Puertos Utilizados
  • La asignación de puertos es un objeto dict anidado que permite configurar los puertos de enlace para las siguientes claves:
    • dns - El servidor DNS, -1 para deshabilitar. Predeterminado 8600.
    • http - La API HTTP, -1 para deshabilitar. Predeterminado 8500.
    • https - La API HTTPS, -1 para deshabilitar. Predeterminado -1 (deshabilitado).
    • rpc - La CLI RPC. Predeterminado 8400. Esto está en desuso en Consul 0.8 y versiones posteriores.
    • grpc - El punto final gRPC, -1 para deshabilitar. Predeterminado -1 (deshabilitado).
    • grpc_tls - El punto final gRPC TLS, -1 para deshabilitar. Predeterminado -1 (deshabilitado). Esto está disponible en Consul 1.14.0 y versiones posteriores.
    • serf_lan - El puerto Serf LAN. Predeterminado 8301.
    • serf_wan - El puerto Serf WAN. Predeterminado 8302.
    • server - Dirección RPC del servidor. Predeterminado 8300.

Por ejemplo, para habilitar la API HTTPS de Consul, se puede establecer la variable de la siguiente manera:

  • Valores predeterminados:
  consul_ports:
    dns: "{{ consul_ports_dns | default('8600', true) }}"
    http: "{{ consul_ports_http | default('8500', true) }}"
    https: "{{ consul_ports_https | default('-1', true) }}"
    rpc: "{{ consul_ports_rpc | default('8400', true) }}"
    serf_lan: "{{ consul_ports_serf_lan | default('8301', true) }}"
    serf_wan: "{{ consul_ports_serf_wan | default('8302', true) }}"
    server: "{{ consul_ports_server | default('8300', true) }}"
    grpc: "{{ consul_ports_grpc | default('-1', true) }}"
    grpc_tls: "{{ consul_ports_grpc_tls | default('-1', true) }}"

Observe que el objeto dict debe usar exactamente los nombres indicados en la documentación. Y todos los puertos deben ser especificados. Sobrescribir uno o varios puertos se puede hacer utilizando las variables consul_ports_*.

consul_node_name

  • Definir un nombre personalizado para el nodo (no debe incluir puntos) Ver node_name
    • Valor por defecto: ''

consul_recursors

  • Lista de servidores DNS ascendentes Ver recursors
    • Anule mediante la variable de entorno CONSUL_RECURSORS
  • Valor por defecto: Lista vacía

consul_iptables_enable

  • Si habilitar las reglas de iptables para el reenvío de DNS a Consul
    • Anule mediante la variable de entorno CONSUL_IPTABLES_ENABLE
  • Valor por defecto: false

consul_acl_policy

  • Agregar archivo de configuración básica de ACL
    • Anule mediante la variable de entorno CONSUL_ACL_POLICY
  • Valor por defecto: false

consul_acl_enable

  • Habilitar ACLs
    • Anule mediante la variable de entorno CONSUL_ACL_ENABLE
  • Valor por defecto: false

consul_acl_ttl

  • TTL para ACLs
    • Anule mediante la variable de entorno CONSUL_ACL_TTL
  • Valor por defecto: 30s

consul_acl_token_persistence

  • Definir si los tokens establecidos mediante la API se persistirán en disco o no
    • Anule mediante la variable de entorno CONSUL_ACL_TOKEN_PERSISTENCE
  • Valor por defecto: true

consul_acl_datacenter

  • Nombre del datacenter autoritativo de ACL
    • Anule mediante la variable de entorno CONSUL_ACL_DATACENTER
  • Valor por defecto: {{ consul_datacenter }} (dc1)

consul_acl_down_policy

  • Política de pérdida de ACL predeterminada
    • Anule mediante la variable de entorno CONSUL_ACL_DOWN_POLICY
  • Valor por defecto: allow

consul_acl_token

  • Token de ACL predeterminado, solo se establece si se proporciona
    • Anule mediante la variable de entorno CONSUL_ACL_TOKEN
  • Valor por defecto: ''

consul_acl_agent_token

  • Usado para clientes y servidores para realizar operaciones internas en el catálogo de servicios. Ver: acl_agent_token
    • Anule mediante la variable de entorno CONSUL_ACL_AGENT_TOKEN
  • Valor por defecto: ''

consul_acl_agent_master_token

  • Un token de acceso especial que tiene privilegios de escritura de política ACL de agente en cada agente donde está configurado
    • Anule mediante la variable de entorno CONSUL_ACL_AGENT_MASTER_TOKEN
  • Valor por defecto: ''

consul_acl_default_policy

  • Política de ACL predeterminada
    • Anule mediante la variable de entorno CONSUL_ACL_DEFAULT_POLICY
  • Valor por defecto: allow

consul_acl_master_token

  • Token maestro de ACL
    • Anule mediante la variable de entorno CONSUL_ACL_MASTER_TOKEN
  • Valor por defecto: UUID

consul_acl_master_token_display

  • Mostrar el Token Maestro ACL generado
    • Anule mediante la variable de entorno CONSUL_ACL_MASTER_TOKEN_DISPLAY
  • Valor por defecto: false

consul_acl_replication_enable

  • Habilitar la replicación de ACL sin token (hace posible establecer el token a través de la API)
    • Anule mediante la variable de entorno CONSUL_ACL_REPLICATION_TOKEN_ENABLE
  • Valor por defecto: ''

consul_acl_replication_token

  • Token de replicación de ACL
    • Anule mediante la variable de entorno CONSUL_ACL_REPLICATION_TOKEN_DISPLAY
  • Valor por defecto: SN4K3OILSN4K3OILSN4K3OILSN4K3OIL

consul_tls_enable

  • Habilitar TLS
    • Anule mediante la variable de entorno CONSUL_ACL_TLS_ENABLE
  • Valor por defecto: false

consul_tls_copy_keys

  • Habilita o deshabilita la gestión de los archivos TLS
    • Desactívelo si activa TLS (consul_tls_enable) pero desea gestionar los archivos TLS por su cuenta
  • Valor por defecto: true

consul_tls_dir

  • Directorio de destino para los archivos TLS
    • Anule mediante la variable de entorno CONSUL_TLS_DIR
  • Valor por defecto: /etc/consul/ssl

consul_tls_ca_crt

  • Nombre del archivo del certificado CA
    • Anule mediante la variable de entorno CONSUL_TLS_CA_CRT
  • Valor por defecto: ca.crt

consul_tls_server_crt

  • Certificado del servidor
    • Anule mediante la variable de entorno CONSUL_TLS_SERVER_CRT
  • Valor por defecto: server.crt

consul_tls_server_key

  • Clave del servidor
    • Anule mediante la variable de entorno CONSUL_TLS_SERVER_KEY
  • Valor por defecto: server.key

consul_tls_files_remote_src

  • Copiar desde una fuente remota si los archivos TLS ya están en el host
  • Valor por defecto: false

consul_encrypt_enable

  • Habilitar el cifrado Gossip
  • Valor por defecto: true

consul_encrypt_verify_incoming

  • Verificar conexiones Gossip entrantes
  • Valor por defecto: true

consul_encrypt_verify_outgoing

  • Verificar conexiones Gossip salientes
  • Valor por defecto: true

consul_disable_keyring_file

  • Si se establece, el keyring no se persistirá en un archivo. Cualquier clave instalada se perderá al apagarse, y solo la clave -encrypt dada estará disponible al inicio.
  • Valor por defecto: false

consul_raw_key

  • Establecer la clave de cifrado; debe ser la misma en todo un clúster. Si no está presente, la clave se generará y recuperará del servidor inicializado.
  • Valor por defecto: ''

consul_tls_verify_incoming

  • Verificar conexiones entrantes
    • Anule con la variable de entorno CONSUL_TLS_VERIFY_INCOMING
  • Valor por defecto: false

consul_tls_verify_outgoing

  • Verificar conexiones salientes
    • Anule con la variable de entorno CONSUL_TLS_VERIFY_OUTGOING
  • Valor por defecto: true

consul_tls_verify_incoming_rpc

  • Verificar conexiones entrantes en puntos finales RPC (certificados de cliente)
    • Anule con la variable de entorno CONSUL_TLS_VERIFY_INCOMING_RPC
  • Valor por defecto: false

consul_tls_verify_incoming_https

  • Verificar conexiones entrantes en puntos finales HTTPS (certificados de cliente)
    • Anule con la variable de entorno CONSUL_TLS_VERIFY_INCOMING_HTTPS
  • Valor por defecto: false

consul_tls_verify_server_hostname

  • Verificar el nombre del servidor
    • Anule con la variable de entorno CONSUL_TLS_VERIFY_SERVER_HOSTNAME
  • Valor por defecto: false

consul_tls_min_version

  • Versión TLS mínima aceptable
    • Puede ser anulado con la variable de entorno CONSUL_TLS_MIN_VERSION
    • Para versiones < 1.12.0 use 'tls12,tls13,...'
  • Valor por defecto: TLSv1_2

consul_tls_cipher_suites

consul_tls_prefer_server_cipher_suites

auto_encrypt

auto_encrypt:
  enabled: false
  • Ejemplo:
auto_encrypt:
  enabled: true
  dns_san: ["consul.com"]
  ip_san: ["127.0.0.1"]

consul_force_install

  • Si es verdadero, entonces siempre instalar consul. De lo contrario, Consul solo se instalará si no está presente en el host, o si la versión instalada difiere de consul_version.
  • El rol no gestiona la orquestación de una actualización gradual de servidores seguida de nodos cliente
  • Valor por defecto: false

consul_install_remotely

  • Si descargar los archivos para la instalación directamente en los hosts remotos
  • Esta es la única opción en Windows ya que WinRM es algo limitado en este aspecto
  • Valor por defecto: false

consul_install_from_repo

  • Booleano, si instalar consul desde el repositorio en vez de instalar el binario directamente.
  • Distribuciones soportadas: Alma Linux, Amazon Linux, CentOS, Debian, Fedora, Ubuntu, Red Hat, Rocky.
  • Valor por defecto: false

consul_ui

  • ¿Habilitar la interfaz de usuario de Consul?
  • Valor por defecto: true

consul_ui_legacy

  • Habilitar el modo de interfaz de usuario heredado de Consul
  • Valor por defecto: false

consul_disable_update_check

  • ¿Desactivar la verificación de actualizaciones de Consul?
  • Valor por defecto: false

consul_enable_script_checks

  • ¿Habilitar verificaciones basadas en scripts?
  • Valor por defecto: false
  • Esto se desaconseja a favor de consul_enable_local_script_checks.

consul_enable_local_script_checks

  • ¿Habilitar verificaciones de script definidas localmente?
  • Valor por defecto: false

consul_raft_protocol

  • Protocolo Raft a utilizar.
  • Valor por defecto:
    • Versiones de Consul <= 0.7.0: 1
    • Versiones de Consul > 0.7.0: 3

consul_node_role

  • El rol de Consul del nodo, uno de: bootstrap, server, o client
  • Valor por defecto: client

Un servidor debe ser designado como el servidor de arranque, y los demás servidores se conectarán a este servidor. También puede especificar client como el rol, y el Consul se configurará como un agente cliente en lugar de un servidor.

Hay dos métodos para configurar un clúster, el primero es elegir explícitamente el servidor de arranque, el otro es dejar que los servidores elijan un líder entre ellos.

Aquí hay un ejemplo de cómo podría definirse el inventario de hosts para un clúster simple de 3 servidores, siendo el primero el designado bootstrap/líder:

[consul_instances]
consul1.consul consul_node_role=bootstrap
consul2.consul consul_node_role=server
consul3.consul consul_node_role=server
consul4.local consul_node_role=client

O puede usar el método más simple de dejar que realicen su proceso electoral:

[consul_instances]
consul1.consul consul_node_role=server consul_bootstrap_expect=true
consul2.consul consul_node_role=server consul_bootstrap_expect=true
consul3.consul consul_node_role=server consul_bootstrap_expect=true
consul4.local consul_node_role=client

Tenga en cuenta que esta segunda forma es la preferida, porque es más sencilla.

consul_autopilot_enable

Autopilot es un conjunto de nuevas características añadidas en Consul 0.8 para permitir una gestión automática amigable con el operador de los servidores Consul. Incluye limpieza de servidores muertos, monitoreo del estado del clúster Raft y introducción estable de servidores.

https://www.consul.io/docs/guides/autopilot.html

  • Habilitar la configuración de Autopilot (se escribirá en el nodo de arranque)
    • Anule con la variable de entorno CONSUL_AUTOPILOT_ENABLE
  • Valor por defecto: false

consul_autopilot_cleanup_dead_servers

Los servidores muertos se limpiarán y eliminarán periódicamente del conjunto de pares Raft, para evitar que interfieran con el tamaño del quórum y las elecciones de líderes. Esta limpieza también ocurrirá cada vez que se agregue un nuevo servidor al clúster con éxito.

  • Habilitar la configuración de Autopilot (se escribirá en el nodo de arranque)
    • Anule con la variable de entorno CONSUL_AUTOPILOT_CLEANUP_DEAD_SERVERS
  • Valor por defecto: false

consul_autopilot_last_contact_threshold

Utilizado en la verificación de salud de serf para determinar la salud del nodo.

  • Establece el umbral para el tiempo desde el último contacto
    • Anule con la variable de entorno CONSUL_AUTOPILOT_LAST_CONTACT_THRESHOLD
  • Valor por defecto: 200ms

consul_autopilot_max_trailing_logs

  • Utilizado en la verificación de salud de serf para establecer un número máximo de entradas de registro que los nodos pueden seguir al líder
    • Anule con la variable de entorno CONSUL_AUTOPILOT_MAX_TRAILING_LOGS
  • Valor por defecto: 250

consul_autopilot_server_stabilization_time

  • Tiempo para permitir que un nuevo nodo se estabilice
    • Anule con la variable de entorno CONSUL_AUTOPILOT_SERVER_STABILIZATION_TIME
  • Valor por defecto: 10s

consul_autopilot_redundancy_zone_tag

Consul Enterprise Only (requiere que CONSUL_ENTERPRISE esté configurado como verdadero)

  • Anule con la variable de entorno CONSUL_AUTOPILOT_REDUNDANCY_ZONE_TAG
  • Valor por defecto: az

consul_autopilot_disable_upgrade_migration

Consul Enterprise Only (requiere que CONSUL_ENTERPRISE esté configurado como verdadero)

  • Anule con la variable de entorno CONSUL_AUTOPILOT_DISABLE_UPGRADE_MIGRATION
  • Valor por defecto: false

consul_autopilot_upgrade_version_tag

Consul Enterprise Only (requiere que CONSUL_ENTERPRISE esté configurado como verdadero)

  • Anule con la variable de entorno CONSUL_AUTOPILOT_UPGRADE_VERSION_TAG
  • Valor por defecto: ''

consul_debug

  • Habilita la generación de archivos de configuración adicionales en el directorio de configuración de Consul con fines de depuración
  • Valor por defecto: false

consul_config_template_path

  • Si la plantilla de configuración predeterminada no se ajusta a sus necesidades, puede reemplazarla con la suya.
  • Valor por defecto: templates/config.json.j2.

consul_rolling_restart

  • Reinicia el nodo consul uno por uno para evitar interrupciones en el servicio en el clúster existente (solo plataformas Unix).
  • Valor por defecto: false

consul_rolling_restart_delay_sec

  • Agrega un retraso entre el abandono de consul y el reinicio del nodo (solo plataformas Linux).
  • Valor por defecto: 5

Sección de Configuración Personalizada

Como Consul carga la configuración desde archivos y directorios en orden léxico, por lo general fusionando en la parte superior de los archivos de configuración ya analizados, puede establecer configuraciones personalizadas a través de consul_config_custom, las cuales se expandirán en un archivo llamado config_z_custom.json dentro de su consul_config_path, que se cargará después de toda la otra configuración por defecto.

Un ejemplo de uso para habilitar telemetry:

  vars:
    consul_config_custom:
      telemetry:
        dogstatsd_addr: "localhost:8125"
        dogstatsd_tags:
          - "security"
          - "compliance"
        disable_hostname: true

Agente de Snapshot de Consul

El agente de snapshot de Consul toma copias de seguridad en un intervalo establecido y las almacena. Debe tener la versión enterprise

consul_snapshot

  • Bool, verdadero configurará e iniciará el agente de snapshot (solo enterprise)
  • Valor por defecto: false

consul_snapshot_storage

  • Ubicación donde se almacenarán los snapshots. NOTA: la ruta debe terminar en snaps
  • Valor por defecto: {{ consul_config_path }}/snaps

consul_snapshot_interval

  • Valor por defecto: 1h

consul_snapshot_retain

Variables de SO y Distribución

El binario de consul funciona en la mayoría de las plataformas Linux y no es específico de una distribución. Sin embargo, algunas distribuciones requieren la instalación de paquetes específicos del SO con nombres de paquete diferentes.

consul_centos_pkg

  • Nombre del archivo del paquete Consul
  • Valor por defecto: {{ consul_version }}_linux_amd64.zip

consul_centos_url

  • URL de descarga del paquete Consul
  • Valor por defecto: {{ consul_zip_url }}

consul_centos_sha256

  • Resumen SHA256 de la descarga de Consul
  • Valor por defecto: Resumen SHA256

consul_centos_os_packages

  • Lista de paquetes del SO para instalar
  • Valor por defecto: lista

consul_debian_pkg

  • Nombre del archivo del paquete Consul
  • Valor por defecto: {{ consul_version }}_linux_amd64.zip

consul_debian_url

  • URL de descarga del paquete Consul
  • Valor por defecto: {{ consul_zip_url }}

consul_debian_sha256

  • Resumen SHA256 de la descarga de Consul
  • Valor por defecto: Resumen SHA256

consul_debian_os_packages

  • Lista de paquetes del SO para instalar
  • Valor por defecto: lista

consul_redhat_pkg

  • Nombre del archivo del paquete Consul
  • Valor por defecto: {{ consul_version }}_linux_amd64.zip

consul_redhat_url

  • URL de descarga del paquete Consul
  • Valor por defecto: {{ consul_zip_url }}

consul_redhat_sha256

  • Resumen SHA256 de la descarga de Consul
  • Valor por defecto: Resumen SHA256

consul_redhat_os_packages

  • Lista de paquetes del SO para instalar
  • Valor por defecto: lista

consul_systemd_restart_sec

  • Valor entero para la opción RestartSec de la unidad systemd
  • Valor por defecto: 42

consul_systemd_limit_nofile

  • Valor entero para la opción LimitNOFILE de la unidad systemd
  • Valor por defecto: 65536

consul_systemd_restart

  • Valor de cadena para la opción Restart de la unidad systemd
  • Valor por defecto: on-failure

consul_ubuntu_pkg

  • Nombre del archivo del paquete Consul
  • Valor por defecto: {{ consul_version }}_linux_amd64.zip

consul_ubuntu_url

  • URL de descarga del paquete Consul
  • Valor por defecto: {{ consul_zip_url }}

consul_ubuntu_sha256

  • Resumen SHA256 de la descarga de Consul
  • Valor por defecto: Resumen SHA256

consul_ubuntu_os_packages

  • Lista de paquetes del SO para instalar
  • Valor por defecto: lista

consul_windows_pkg

  • Nombre del archivo del paquete Consul
  • Valor por defecto: {{ consul_version }}_windows_amd64.zip

consul_windows_url

  • URL de descarga del paquete Consul
  • Valor por defecto: {{ consul_zip_url }}

consul_windows_sha256

  • Resumen SHA256 de la descarga de Consul
  • Valor por defecto: Resumen SHA256

consul_windows_os_packages

  • Lista de paquetes del SO para instalar
  • Valor por defecto: lista

consul_performance

  • Lista de elementos de afinación de rendimiento de Consul
  • Valor por defecto: lista

raft_multiplier

leave_drain_time

rpc_hold_timeout

  • Tiempo de espera de RPC es la duración durante la cual un cliente o servidor volverá a intentar solicitudes internas de RPC durante las elecciones de líder
  • Valor por defecto: 7s

leave_on_terminate

  • leave_on_terminate Si se habilita, cuando el agente recibe una señal TERM, enviará un mensaje de Salir al resto del clúster y se marchará amablemente. El comportamiento predeterminado para esta función varía según si el agente se ejecuta como cliente o servidor. En agentes en modo cliente, esto tiene un valor predeterminado de verdadero y para agentes en modo servidor, esto tiene un valor predeterminado de falso.

consul_limit

  • Límites del nodo Consul (clave-valor)
  • Soportado en la versión de Consul 0.9.3 o posterior
  • Valor por defecto: {}
  • Ejemplo:
consul_limits:
    http_max_conns_per_client: 250
    rpc_max_conns_per_client: 150

Dependencias

Ansible requiere tar de GNU y este rol realiza algunos usos locales del módulo unarchive para eficiencia, por lo que asegúrese de que su sistema tenga gtar y unzip instalados y en el PATH. Si no lo tiene, este rol instalará unzip en las máquinas remotas para descomprimir los archivos ZIP.

Si está en un sistema con un tar diferente (es decir, BSD), como macOS y ve errores extraños durante las tareas de descompresión, podría faltar gtar.

Instalar Ansible en Windows requiere las PowerShell Community Extensions. Estas ya están instaladas en Windows Server 2012 R2 y posterior. Si está intentando este rol en Windows Server 2008 o antes, querrá instalar las extensiones aquí.

Ejemplo de Playbook

La instalación básica es posible utilizando el playbook incluido site.yml:

ansible-playbook -i hosts site.yml

También puede pasar variables usando la opción --extra-vars al comando ansible-playbook:

ansible-playbook -i hosts site.yml --extra-vars "consul_datacenter=maui"

Tenga en cuenta que para la agrupación, el site.yml incluido hace lo siguiente:

  1. Ejecuta el rol de Consul (instala Consul y arranca el clúster)
  2. Reconfigura el nodo de arranque para funcionar sin la configuración bootstrap-expect
  3. Reinicia el nodo de arranque

Soporte ACL

Soporte básico para ACLs está incluido en el rol. Puede establecer las variables de entorno CONSUL_ACL_ENABLE en verdadero, y también establecer la variable de entorno CONSUL_ACL_DATACENTER en su valor correcto para su entorno antes de ejecutar su playbook; por ejemplo:

CONSUL_ACL_ENABLE=true CONSUL_ACL_DATACENTER=maui \
CONSUL_ACL_MASTER_TOKEN_DISPLAY=true ansible-playbook -i uat_hosts aloha.yml

Si desea que se emita automáticamente el valor del Token Maestro ACL generado a estándar durante la reproducción, establezca la variable de entorno CONSUL_ACL_MASTER_TOKEN_DISPLAY en verdadero como en el ejemplo anterior.

Si desea usar tokens existentes, establezca las variables de entorno CONSUL_ACL_MASTER_TOKEN y CONSUL_ACL_REPLICATION_TOKEN también, por ejemplo:

CONSUL_ACL_ENABLE=true CONSUL_ACL_DATACENTER=stjohn \
CONSUL_ACL_MASTER_TOKEN=0815C55B-3AD2-4C1B-BE9B-715CAAE3A4B2 \
CONSUL_ACL_REPLICATION_TOKEN=C609E56E-DD0B-4B99-A0AD-B079252354A0 \
CONSUL_ACL_MASTER_TOKEN_DISPLAY=true ansible-playbook -i uat_hosts sail.yml

Hay varias variables de Ansible ACL que puede anular para refinar aún más su configuración inicial de ACL. No todas se están utilizando actualmente desde variables de entorno, pero tienen algunos valores predeterminados sensatos.

Consulte defaults/main.yml para ver cómo se generan automáticamente algunos de los valores predeterminados (es decir, tokens).

Soporte para Reenvío DNS de Dnsmasq

El rol ahora incluye soporte para reenvío DNS con Dnsmasq.

Habilítelo así:

ansible-playbook -i hosts site.yml --extra-vars "consul_dnsmasq_enable=true"

Luego, puede consultar cualquiera de los agentes a través de DNS directamente a través del puerto 53, por ejemplo:

dig @consul1.consul consul3.node.consul

; <<>> DiG 9.8.3-P1 <<>> @consul1.consul consul3.node.consul
; (1 servidor encontrado)
;; opciones globales: +cmd
;; Recibió respuesta:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29196
;; banderas: qr aa rd ra; QUERY: 1, RESPUESTA: 1, AUTORIDAD: 0, ADICIONAL: 0

;; SECCIÓN DE PREGUNTAS:
;consul3.node.consul.   EN  A

;; SECCIÓN DE RESPUESTAS:
consul3.node.consul.  0 EN  A 10.1.42.230

;; Tiempo de consulta: 42 mseg
;; SERVIDOR: 10.1.42.210#53(10.1.42.210)
;; CUANDO: Dom Ago  7 18:06:32 2016
;;

consul_delegate_datacenter_dns

  • Si delegar el dominio de DNS del datacenter de Consul a Consul
  • Valor por defecto: false

consul_dnsmasq_enable

  • Si instalar y configurar el reenvío de API DNS en el puerto 53 usando DNSMasq
    • Anule con la variable de entorno CONSUL_DNSMASQ_ENABLE
  • Valor por defecto: false

consul_dnsmasq_bind_interfaces

  • Establecer esta opción en verdadero evita que DNSmasq se vincule por defecto en 0.0.0.0, sino que le indica que se vincule a las interfaces de red específicas que corresponden a la opción consul_dnsmasq_listen_addresses
  • Valor por defecto: false

consul_dnsmasq_consul_address

  • Dirección utilizada por DNSmasq para consultar consul
  • Valor por defecto: consul_address.dns
  • Los valores predeterminados a 127.0.0.1 si el DNS de consulado está vinculado a todas las interfaces (por ejemplo, 0.0.0.0)

consul_dnsmasq_cache

  • tamaño de caché de dnsmasq
  • Si es menor que 0, se utilizarán la configuración predeterminada de dnsmasq.
  • Valor por defecto: -1

consul_dnsmasq_servers

  • Servidores DNS ascendentes utilizados por dnsmasq
  • Valor por defecto: 8.8.8.8 y 8.8.4.4

consul_dnsmasq_revservers

  • Subredes de búsqueda inversa
  • Valor por defecto: []

consul_dnsmasq_no_poll

  • No sondear /etc/resolv.conf
  • Valor por defecto: false

consul_dnsmasq_no_resolv

  • Ignorar el archivo /etc/resolv.conf
  • Valor por defecto: false

consul_dnsmasq_local_service

  • Permitir solo solicitudes de subredes locales
  • Valor por defecto: false

consul_dnsmasq_listen_addresses

  • Lista personalizada de direcciones para escuchar.
  • Valor por defecto: []

consul_connect_enabled

  • Habilitar la función Connect de Consul
  • Valor por defecto: false

consul_cleanup_ignore_files

  • Lista de archivos a ignorar durante los pasos de limpieza
  • Valor por defecto: [{{ consul_configd_path }}/consul.env]

Soporte de Reenvío DNS de iptables

Este rol también puede utilizar iptables en lugar de Dnsmasq para reenviar consultas DNS a Consul. Puede habilitarlo así:

ansible-playbook -i hosts site.yml --extra-vars "consul_iptables_enable=true"

Tenga en cuenta que la reanudación de reenvío iptables y DNSmasq no se pueden usar simultáneamente y la ejecución del rol se detendrá con un error si se especifica tal configuración.

Soporte TLS

Puede habilitar el cifrado TLS colocando un certificado CA, un certificado de servidor y una clave de servidor en el directorio files del rol.

Por defecto, estos se nombran:

  • ca.crt (puede ser anulado por {{ consul_tls_ca_crt }})
  • server.crt (puede ser anulado por {{ consul_tls_server_crt }})
  • server.key (puede ser anulado por {{ consul_tls_server_key }})

Luego, configure la variable de entorno CONSUL_TLS_ENABLE=true o use la variable de Ansible consul_tls_enable=true en el tiempo de ejecución del rol.

Soporte de gestión de servicios

Puede crear un archivo de configuración para servicios de consul. Agregue una lista de servicios en el consul_services.

nombre Requerido Tipo Predeterminado Comentario
consul_services Falso Lista [] Lista de objetos de servicio (ver abajo)

Objeto de servicios:

nombre Requerido Tipo Predeterminado Comentario
nombre Verdadero cadena Nombre del servicio
id Falso cadena Id del servicio
tags Falso lista Lista de etiquetas de cadenas
address Falso cadena Dirección IP específica del servicio
meta Falso dict Dict de 64 claves/valores con semántica de cadena
puerto Falso int Puerto del servicio
enable_tag_override Falso bool habilitar/deshabilitar la función de anti-entropy para el servicio
kind Falso cadena identificar el servicio como una instancia proxy Connect
proxy Falso dict configuración de proxy
checks Falso lista Lista de configuración de comprobaciones
connect Falso dict Configuración del objeto Connect
weights Falso dict Peso de un servicio en respuestas DNS SRV
token Falso cadena Token de ACL para usar para registrar este servicio

Ejemplo de configuración:

consul_services:
  - name: "openshift"
    tags: ['producción']
  - name: "redis"
    id: "redis"
    tags: ['primario']
    address: ""
    meta:
      meta: "para mi servicio"
    proxy:
      destination_service_name: "redis"
      destination_service_id: "redis1"
      local_service_address: "127.0.0.1"
      local_service_port: 9090
      config: {}
      upstreams:  []
    checks:
      - args: ["/home/consul/check.sh"]
        interval: "10s"

Luego podrá comprobar que el servicio se haya añadido correctamente al catálogo

> consul catalog services
consul
openshift
redis

Nota: para eliminar un servicio que ha sido agregado desde este rol, elimínelo de la lista consul_services y aplique el rol nuevamente.

Vagrant y VirtualBox

Consulte examples/README_VAGRANT.md para detalles sobre despliegues rápidos de Vagrant bajo VirtualBox para desarrollo, evaluación, pruebas, etc.

Licencia

BSD

Información del Autor

Brian Shumate

Contribuidores

Agradecimientos especiales a las personas que se listan en CONTRIBUTORS.md por sus contribuciones a este proyecto.

Las contribuciones son bienvenidas, siempre que puedas aceptar los términos descritos en CONTRIBUTING.md.

Acerca del proyecto

Consul cluster role

Instalar
ansible-galaxy install brianshumate.consul
Licencia
bsd-2-clause
Descargas
492.4k
Propietario
Art ⁂ Data ⁂ Boards ⁂ Water