consul

Consul

Установите, настройте и обслуживайте Consul - сервисную сетку от HashiCorp.

Философия Роли

Вместо того чтобы дублировать каждую опцию конфигурации как переменную Ansible, конфигурация Consul хранится в инвентаре Ansible в формате 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

Затем это копируется на хост с помощью фильтра no_nice_json:

- name: копировать конфигурацию consul
  copy:
    content: "{{ consul_config | to_nice_json }}"
    dest: "/opt/consul/consul.json"
    validate: "consul validate -config-format=json %s"

Когда переменная является картой (например, consul_services), каждый ключ карты будет скопирован как файл, а значение станет содержимым.

Следующая карта:

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"

создаст файлы consul.json и telegraf.json в /opt/consul/service.d/.

Файлы, которые отсутствуют в карте, будут удалены, что позволит поддерживать состояние с инвентарем Ansible.

Переменные Роли

Смотрите defaults/ для подробностей и примеров.

consul_version

  • версия для использования

consul_dirs

  • карта директорий для создания
  • по умолчанию:
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

  • карта конфигурационных файлов для создания в каталоге config.d. Перезапускается при изменениях.

consul_services

  • карта файлов сервисов для создания в каталоге service.d. Перезагружается при изменениях.

consul_scripts

  • карта скриптов для создания в каталоге scripts.d

consul_user

  • владелец процесса и файлов Consul
  • по умолчанию: consul

consul_group

  • группа consul_user
  • по умолчанию: consul

consul_download_url

  • URL для получения архива Consul
  • по умолчанию: https://releases.hashicorp.com

consul_service

  • файл службы openrc
  • по умолчанию: смотрите defaults/main.yml

consul_unitfile

  • файл единицы systemd
  • по умолчанию: смотрите defaults/main.yml

skip_handlers

  • пропустить перезапуск/перезагрузку consul - полезно при создании образов с помощью packer
  • по умолчанию: false

Теги

  • config - обновить единицу/файл службы Consul и синхронизировать конфигурационные файлы
  • services - синхронизировать сервисы Consul
  • scripts - синхронизировать скрипты Consul

Автор

  • Анатолий Ласкарис - nahsi
Установить
ansible-galaxy install nahsi/ansible-consul
Лицензия
mit
Загрузки
1779
Владелец