nahsi.consul

Consul

Instalar, configurar y mantener Consul - una malla de servicios de HashiCorp.

Filosofía del Rol

En lugar de duplicar cada opción de configuración como una variable de Ansible, la configuración de Consul se almacena en el inventario de Ansible en formato yaml:

consul_config:
  data_dir: "/var/lib/consul/"

  enable_syslog: true
  # "trace", "debug", "info", "warn", "err"
  log_level: "info"
  syslog_facility: "LOCAL5"

  rejoin_after_leave: true

  bind_addr: !unsafe '{{ GetInterfaceIP "eth0" }}'

  telemetry:
    disable_hostname: true
    prometheus_retention_time: "30s"

  server: false

Y luego se copia al host usando el filtro no_nice_json:

- name: copiar configuración de consul
  copy:
    content: "{{ consul_config | to_nice_json }}"
    dest: "/opt/consul/consul.json"
    validate: "consul validate -config-format=json %s"

Cuando la variable es un mapa (por ejemplo, consul_services), cada clave del mapa se copiará como un archivo con el valor como contenido.

El siguiente mapa

consul_services:
  consul:
    service:
      id: "consul-api"
      name: "consul-api"
      port: 8500
      tags:
        - "traefik.enable=true"
        - "traefik.http.routers.consul.entrypoints=https"
        - "traefik.http.routers.consul.rule=Host(`consul.example.com`)"
      meta:
        external-source: "consul"
      check:
        id: "consul-api-health"
        name: "consul-api-health"
        http: "http://localhost:8500/v1/agent/self"
        interval: "20s"
        timeout: "2s"

  telegraf:
    service:
      id: "telegraf-exporter"
      name: "telegraf-exporter"
      port: 9271
      meta:
        external-source: "consul"
      check:
        id: "telegraf-exporter-health"
        name: "telegraf-exporter-health"
        http: "http://localhost:9270"
        interval: "20s"
        timeout: "2s"

generará los archivos consul.json y telegraf.json en /opt/consul/service.d/.

Los archivos que no estén presentes en el mapa serán eliminados, permitiendo mantener un estado con el inventario de Ansible.

Variables del Rol

Consulta defaults/ para detalles y ejemplos.

consul_version

  • versión a utilizar

consul_dirs

  • un mapa de directorios a crear
  • por defecto:
consul_dir: "/opt/consul"
consul_dirs:
  main:
    path: "{{ consul_dir }}"
  configs:
    path: "{{ consul_dir }}/config.d"
  services:
    path: "{{ consul_dir }}/service.d"
  certs:
    path: "{{ consul_dir }}/certs"
    mode: "u=rwX,g=rX,o="
  scripts:
    path: "{{ consul_dir }}/script.d"
  logs:
    path: "/var/log/consul"
  data:
    path: "/var/lib/consul"
    mode: "u=rwX,g=rX,o="

consul_config

consul_configs

  • mapa de archivos de configuración a crear en el directorio config.d. Se reinicia al realizar cambios

consul_services

  • mapa de archivos de servicios a crear en el directorio service.d. Se recarga al realizar cambios

consul_scripts

  • mapa de scripts a crear en el directorio scripts.d

consul_user

  • propietario del proceso y archivos de Consul
  • por defecto: consul

consul_group

  • grupo del consul_user
  • por defecto: consul

consul_download_url

  • url para descargar el archivo de Consul
  • por defecto: https://releases.hashicorp.com

consul_service

consul_unitfile

skip_handlers

  • omitir reinicio/carga de consul - útil al construir imágenes con packer
  • por defecto: false

Etiquetas

  • config - actualizar el archivo de unidad/servicio de Consul y sincronizar archivos de configuración
  • services - sincronizar servicios de Consul
  • scripts - sincronizar scripts de Consul

Autor

  • Anatoly Laskaris - nahsi
Instalar
ansible-galaxy install nahsi.consul
Licencia
mit
Descargas
1.8k
Propietario