nahsi.consul

Consul

Installer, configurer et maintenir Consul - un service mesh de HashiCorp.

Philosophie du Rôle

Au lieu de dupliquer chaque option de configuration en tant que variable Ansible, la configuration de Consul est stockée dans l'inventaire Ansible au format 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

Ensuite, il est copié sur l'hôte à l'aide du filtre no_nice_json :

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

Lorsque la variable est une carte (consul_services par exemple), chaque clé de la carte sera copiée en tant que fichier avec la valeur comme contenu.

La carte suivante

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"

produira les fichiers consul.json et telegraf.json dans /opt/consul/service.d/.

Les fichiers qui ne sont pas présents dans la carte seront supprimés, permettant ainsi de maintenir un état avec l'inventaire Ansible.

Variables du Rôle

Voir defaults/ pour plus de détails et d'exemples.

consul_version

  • version à utiliser

consul_dirs

  • une carte des répertoires à créer
  • par défaut :
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

  • carte des fichiers de configuration à créer dans le répertoire config.d. Redémarrage sur modifications

consul_services

  • carte des fichiers de services à créer dans le répertoire service.d. Recharge sur modifications

consul_scripts

  • carte des scripts à créer dans le répertoire scripts.d

consul_user

  • propriétaire du processus et des fichiers Consul
  • par défaut : consul

consul_group

  • groupe de consul_user
  • par défaut : consul

consul_download_url

  • url pour obtenir l'archive Consul
  • par défaut : https://releases.hashicorp.com

consul_service

consul_unitfile

skip_handlers

  • sauter le redémarrage/rechargement de consul - utile lors de la création d'images avec packer
  • par défaut : false

Tags

  • config - mettre à jour le fichier d'unité/service de Consul et synchroniser les fichiers de configuration
  • services - synchroniser les services Consul
  • scripts - synchroniser les scripts Consul

Auteur

  • Anatoly Laskaris - nahsi
Installer
ansible-galaxy install nahsi.consul
Licence
mit
Téléchargements
1.8k
Propriétaire