brianshumate.consul
Consul
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
- Anule con la variable de entorno
- Valor por defecto en Linux: false
consul_log_path
- Si
consul_syslog_enable
es false- Ruta del registro para usar en log_file o -log-file
- 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.
- Ruta del registro para usar en la configuración de rsyslogd en Linux. Ignorado si
- Valor por defecto en Linux:
/var/log/consul
- Anule con la variable de entorno
CONSUL_LOG_PATH
- Anule con la variable de entorno
- Valor por defecto en Windows:
C:\ProgramData\consul\log
consul_log_file
- Si
consul_syslog_enable
es false- Archivo de registro para usar en log_file o -log-file
- 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.
- Archivo de registro para usar en la configuración de rsyslogd en Linux. Ignorado si
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- Valor por defecto en Linux: local0
syslog_user
- Propietario del proceso
rsyslogd
en Linux. La propiedad deconsul_log_path
se establece en este usuario en Linux. Ignorado siconsul_configure_syslogd
es false.- Anule con la variable de entorno
SYSLOG_USER
- Anule con la variable de entorno
- Valor por defecto en Linux: syslog
syslog_group
- Grupo del usuario que ejecuta el proceso
rsyslogd
en Linux. La propiedad deconsul_log_path
se establece en este grupo en Linux. Ignorado siconsul_configure_syslogd
es false.- Anule con la variable de entorno
SYSLOG_GROUP
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
conconsul_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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- Valor por defecto:
{{ ansible_default_ipv4.interface }}
consul_bind_address
- Dirección de enlace
- Anule con la variable de entorno
CONSUL_BIND_ADDRESS
- Anule con la variable de entorno
- 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
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- Valor por defecto: false
consul_acl_enable
- Habilitar ACLs
- Anule mediante la variable de entorno
CONSUL_ACL_ENABLE
- Anule mediante la variable de entorno
- Valor por defecto: false
consul_acl_ttl
- TTL para ACLs
- Anule mediante la variable de entorno
CONSUL_ACL_TTL
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- Valor por defecto: true
consul_acl_datacenter
- Nombre del datacenter autoritativo de ACL
- Anule mediante la variable de entorno
CONSUL_ACL_DATACENTER
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- Valor por defecto: ''
consul_acl_default_policy
- Política de ACL predeterminada
- Anule mediante la variable de entorno
CONSUL_ACL_DEFAULT_POLICY
- Anule mediante la variable de entorno
- Valor por defecto: allow
consul_acl_master_token
- Token maestro de ACL
- Anule mediante la variable de entorno
CONSUL_ACL_MASTER_TOKEN
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- Valor por defecto: ''
consul_acl_replication_token
- Token de replicación de ACL
- Anule mediante la variable de entorno
CONSUL_ACL_REPLICATION_TOKEN_DISPLAY
- Anule mediante la variable de entorno
- Valor por defecto: SN4K3OILSN4K3OILSN4K3OILSN4K3OIL
consul_tls_enable
- Habilitar TLS
- Anule mediante la variable de entorno
CONSUL_ACL_TLS_ENABLE
- Anule mediante la variable de entorno
- 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
- Desactívelo si activa TLS (
- Valor por defecto: true
consul_tls_dir
- Directorio de destino para los archivos TLS
- Anule mediante la variable de entorno
CONSUL_TLS_DIR
- Anule mediante la variable de entorno
- 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
- Anule mediante la variable de entorno
- Valor por defecto:
ca.crt
consul_tls_server_crt
- Certificado del servidor
- Anule mediante la variable de entorno
CONSUL_TLS_SERVER_CRT
- Anule mediante la variable de entorno
- Valor por defecto:
server.crt
consul_tls_server_key
- Clave del servidor
- Anule mediante la variable de entorno
CONSUL_TLS_SERVER_KEY
- Anule mediante la variable de entorno
- 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
- Anule con la variable de entorno
- Valor por defecto: false
consul_tls_verify_outgoing
- Verificar conexiones salientes
- Anule con la variable de entorno
CONSUL_TLS_VERIFY_OUTGOING
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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,...'
- Puede ser anulado con la variable de entorno
- Valor por defecto: TLSv1_2
consul_tls_cipher_suites
- Lista de suites de cifrado soportadas separadas por comas
- Valor por defecto: ""
consul_tls_prefer_server_cipher_suites
- Preferir la suite de cifrado del servidor sobre la suite de cifrado del cliente
- Puede anularse con la variable de entorno
CONSUL_TLS_PREFER_SERVER_CIPHER_SUITES
- Puede anularse con la variable de entorno
- Valor por defecto: false
auto_encrypt
- Auto cifrado
- Valor por defecto:
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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Anule con la variable de entorno
- 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
- Multiplicador Raft escala parámetros de tiempo clave de Raft
- Valor por defecto: 1
leave_drain_time
Tiempo de drenado de salida del nodo es el tiempo de permanencia para que un servidor honre las solicitudes mientras sale amablemente
Valor por defecto: 5s
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:
- Ejecuta el rol de Consul (instala Consul y arranca el clúster)
- Reconfigura el nodo de arranque para funcionar sin la configuración bootstrap-expect
- 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
- Anule con la variable de entorno
- 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
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.
ansible-galaxy install brianshumate.consul