consul

Consul

Molecule Среднее время разрешения проблемы Процент все еще открытых проблем

Эта роль Ansible устанавливает Consul, включая создание структуры файловой системы и конфигурацию сервера или клиента с поддержкой некоторых общих операционных функций.

Она также может развернуть кластер разработки или оценки из 3 серверов, работающих в среде Vagrant и VirtualBox. См. README_VAGRANT.md и соответствующий Vagrantfile для получения дополнительной информации.

Философия роли

«Еще один недостаток характера человека в том, что все хотят строить, и никто не хочет заниматься обслуживанием.»
― Курт Воннегут, "Хокус Покус"

Следует отметить, что изначальная цель этой роли больше связано с начальной установкой и развертыванием окружения кластера Consul, а не с осуществлением текущего обслуживания кластера.

Многие пользователи выразили мнение, что среда на основе Vagrant делает процесс настройки работающего локального кластера Consul легким — поэтому эта роль будет нацелена на этот опыт как главный мотиватор для существования.

Если вы сможете использовать ее иными способами, тем лучше!

Миграция и установка роли

Эта роль была первоначально разработана Брайаном Шумейтом и была известна в Ansible Galaxy под именем brianshumate.consul. Брайан попросил сообщество освободить его от бремени обслуживания, и, поэтому, Бас Мейер перенес роль в ansible-collections, чтобы команда волонтеров смогла ее поддерживать. Чтобы установить эту роль в вашем проекте, необходимо создать файл requirements.yml в подкаталоге roles/ вашего проекта со следующим содержимым:

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

Этот репозиторий содержит помеченные версии, которые вы можете использовать для фиксации версии.

Tower автоматически установит роль, если вы используете CLI для управления ansible, тогда установите ее так:

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

Требования

Эта роль требует дистрибутив FreeBSD, Debian или Red Hat Enterprise Linux, либо Windows Server 2012 R2.

Роль может работать с другими дистрибутивами и версиями ОС, но хорошо функционирует с следующими версиями программного обеспечения:

  • 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
  • OracleLinux: 7, 8
  • Ubuntu: 16.04
  • Windows: Server 2012 R2

Обратите внимание, что для «локального» режима установки (по умолчанию) эта роль будет локально скачивать только один экземпляр архива Consul, распаковывать его и устанавливать полученный бинарный файл на всех желаемых хостах Consul.

Для этого необходимо, чтобы unzip был доступен на управляющем хосте Ansible, и роль завершится неудачей, если не сможет обнаружить unzip в PATH.

Требования к коллекциям для этой роли перечислены в файле requirements.yml. Вы несете ответственность за то, чтобы установить эти коллекции, чтобы убедиться, что роль работает должным образом. Обычно это можно сделать с помощью:

ansible-galaxy collection install -r requirements.yml

Предостережения

Эта роль не полностью поддерживает опцию ограничения (ansible -l) для ограничения хостов, так как это нарушит заполнение необходимых переменных хостов. Если вы используете опцию ограничения с этой ролью, вы можете столкнуться с ошибками шаблона, такими как:

Неопределенный объект не может быть сериализован JSON.

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

Роль использует переменные, определенные в трех местах:

  • Файл инвентаря хостов (см. examples/vagrant_hosts для примера)
  • vars/*.yml (в основном специфические для ОС/дистрибуций переменные)
  • defaults/main.yml (все остальные)

:warning: ПРИМЕЧАНИЕ: Роль полагается на группу хостов инвентаря для серверов consul, которая определяется как переменная consul_group_name, и она не будет работать должным образом в противном случае. В качестве альтернативы серверы Consul могут быть помещены в группу по умолчанию [consul_instances] в инвентаре, как показано в примерах ниже.

Многие переменные роли также могут принимать свои значения из переменных окружения; они отмечены в описании, где это уместно.

consul_version

  • Версия для установки
  • Установите значение как latest для последней доступной версии Consul
  • Значение по умолчанию: 1.8.7

consul_architecture_map

  • Словарь для преобразования значений ansible_architecture в значения архитектуры Go
  • Значение по умолчанию: dict

consul_architecture

  • Архитектура системы, определяемая {{ consul_architecture_map[ansible_architecture] }}
  • Значение по умолчанию (определяется во время выполнения): amd64, arm или arm64

consul_os

  • Имя операционной системы в нижнем регистре
  • Значение по умолчанию: {{ ansible_os_family | lower }}

consul_install_dependencies

  • Установить зависимости Python и пакетов, необходимые для работы роли.
  • Значение по умолчанию: true

consul_zip_url

  • URL для загрузки архива Consul
  • Значение по умолчанию: https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_{{ consul_os }}_{{ consul_architecture }}.zip

consul_checksum_file_url

  • URL файла с контрольными суммами SHA256 пакета
  • Значение по умолчанию: https://releases.hashicorp.com/consul/{{ consul_version }}/{{ consul_version }}_SHA256SUMS

consul_bin_path

  • Путь установки бинарного файла
  • Значение по умолчанию для Linux: /usr/local/bin
  • Значение по умолчанию для Windows: C:\ProgramData\consul\bin

consul_config_path

  • Базовый путь к конфигурационному файлу
  • Значение по умолчанию для Linux: /etc/consul
  • Значение по умолчанию для Windows: C:\ProgramData\consul\config

consul_configd_path

  • Дополнительный каталог конфигурации
  • Значение по умолчанию для Linux: {{ consul_config_path }}/consul.d
  • Значение по умолчанию для Windows: C:\ProgramData\consul\config.d

consul_data_path

  • Путь к каталогу данных, как определено в data_dir или -data-dir
  • Значение по умолчанию для Linux: /opt/consul
  • Значение по умолчанию для Windows: C:\ProgramData\consul\data

consul_configure_syslogd

  • Включение конфигурации rsyslogd или syslog-ng на Linux. Если отключено, Consul все равно будет записывать в syslog, если consul_syslog_enable установлено в true, но демон syslog не будет настроен на запись журналов Consul в их собственный файл журнала.
    • Переопределите с помощью переменной окружения CONSUL_CONFIGURE_SYSLOGD
  • Значение по умолчанию для Linux: false

consul_log_path

  • Если consul_syslog_enable равно false
  • Если consul_syslog_enable равно true
    • Път к журналу для использования в конфигурации rsyslogd на Linux. Игнорируется, если consul_configure_syslogd равно false.
  • Значение по умолчанию для Linux: /var/log/consul
    • Переопределите с помощью переменной окружения CONSUL_LOG_PATH
  • Значение по умолчанию для Windows: C:\ProgramData\consul\log

consul_log_file

  • Если consul_syslog_enable равно false
  • Если consul_syslog_enable равно true
    • Файл журнала для использования в конфигурации rsyslogd на Linux. Игнорируется, если consul_configure_syslogd равно false.
  • Переопределите с помощью переменной окружения CONSUL_LOG_FILE
  • Значение по умолчанию для Linux: consul.log

consul_log_rotate_bytes

  • Параметры для ротации журналов в байтах, как определено в log_rotate_bytes или -log-rotate-bytes
    • Переопределите с помощью CONSUL_LOG_ROTATE_BYTES переменной окружения
  • Игнорируется, если consul_syslog_enable равно true
  • Значение по умолчанию: 0

consul_log_rotate_duration

  • Параметры для ротации журналов, как определено в log_rotate_duration или -log-rotate-duration
    • Переопределите с помощью CONSUL_LOG_ROTATE_DURATION переменной окружения
  • Игнорируется, если consul_syslog_enable равно true
  • Значение по умолчанию: 24h

consul_log_rotate_max_files

  • Параметры для максимального количества файлов ротации журналов, как определено в log_rotate_max_files или -log-rotate-max-files
    • Переопределите с помощью CONSUL_LOG_ROTATE_MAX_FILES переменной окружения
  • Игнорируется, если consul_syslog_enable равно true
  • Значение по умолчанию: 0

consul_syslog_facility

  • Установка syslog, как определено в syslog_facility
    • Переопределите с помощью CONSUL_SYSLOG_FACILITY переменной окружения
  • Значение по умолчанию для Linux: local0

syslog_user

  • Владелец процесса rsyslogd на Linux. Владение consul_log_path устанавливается этому пользователю на Linux. Игнорируется, если consul_configure_syslogd равно false.
    • Переопределите с помощью переменной окружения SYSLOG_USER
  • Значение по умолчанию для Linux: syslog

syslog_group

  • Группа пользователя, запускающего процесс rsyslogd на Linux. Владение группой consul_log_path устанавливается этой группе на Linux. Игнорируется, если consul_configure_syslogd равно false.
    • Переопределите с помощью переменной окружения SYSLOG_GROUP
  • Значение по умолчанию: adm

consul_run_path

  • Путь для файла идентификатора процесса (PID)
  • Значение по умолчанию для Linux: /run/consul
  • Значение по умолчанию для Windows: C:\ProgramData\consul

consul_user

  • Пользователь ОС
  • Значение по умолчанию для Linux: consul
  • Значение по умолчанию для Windows: LocalSystem

consul_manage_user

  • Следует ли создавать пользователя, определенного переменной consul_user или нет
  • Значение по умолчанию: true

consul_group

  • Группа ОС
  • Значение по умолчанию: bin

consul_manage_group

  • Следует ли создавать группу, определенную переменной consul_group или нет
  • Значение по умолчанию: true

consul_group_name

  • Имя группы инвентаря
    • Переопределите с помощью CONSUL_GROUP_NAME переменной окружения
  • Значение по умолчанию: consul_instances

consul_retry_interval

  • Интервал для попыток переподключения к LAN-серверам
  • Значение по умолчанию: 30s

consul_retry_interval_wan

  • Интервал для попыток переподключения к WAN-серверам
  • Значение по умолчанию: 30s

consul_retry_join_skip_hosts

  • Если true, значение retry_join не будет заполняться хостами по умолчанию. Значение можно инициализировать с помощью consul_join
  • Значение по умолчанию: false

consul_retry_max

  • Максимальное количество попыток переподключения к LAN-серверам перед неудачей (0 = бесконечно)
  • Значение по умолчанию: 0

consul_retry_max_wan

  • Максимальное количество попыток переподключения к WAN-серверам перед неудачей (0 = бесконечно)
  • Значение по умолчанию: 0

consul_join

  • Список LAN-серверов, не управляемых этой ролью, к которым нужно присоединиться (IPv4, IPv6 или DNS-адреса)
  • Значение по умолчанию: []

consul_join_wan

  • Список WAN-серверов, не управляемых этой ролью, к которым нужно присоединиться (IPv4, IPv6 или DNS-адреса)
  • Значение по умолчанию: []

consul_servers

Обычно не требуется вручную изменять этот список.

  • Список серверных узлов
  • Значение по умолчанию: Список всех узлов в consul_group_name с consul_node_role, установленным на сервер или начальный

consul_bootstrap_expect

  • Логическое значение, которое добавляет значение bootstrap_expect в файл конфигурации серверов Consul
  • Значение по умолчанию: false

consul_bootstrap_expect_value

  • Целое число, чтобы определить минимальное количество серверов Consul, присоединенных к кластеру для избрания лидера.
  • Значение по умолчанию: Рассчитывается во время выполнения на основе количества узлов

consul_gather_server_facts

Эта функция позволяет собирать consul_advertise_address(_wan) от серверов, которые в данный момент не таргетированы плейбуком.

Для этого используется опция delegate_facts; обратите внимание, что эта опция была проблемной.

  • Собирать факты с серверов, которые в данный момент не целевые
  • Значение по умолчанию: false

consul_datacenter

  • Метка дата-центра
    • Переопределите с помощью переменной окружения CONSUL_DATACENTER
  • Значение по умолчанию: dc1

consul_domain

  • Имя домена Consul, как определено в domain или -domain
    • Переопределите с помощью переменной окружения CONSUL_DOMAIN
  • Значение по умолчанию: consul

consul_alt_domain

  • Имя домена Consul, как определено в alt_domain или -alt-domain
    • Переопределите с помощью переменной окружения CONSUL_ALT_DOMAIN
  • Значение по умолчанию: Пустая строка

consul_node_meta

  • Метаданные узла Consul (ключ-значение)
  • Поддерживается в версиях Consul 0.7.3 или позднее
  • Значение по умолчанию: {}
  • Пример:
consul_node_meta:
    node_type: "my-custom-type"
    node_meta1: "metadata1"
    node_meta2: "metadata2"

consul_log_level

  • Уровень журнала, как определено в log_level или -log-level
    • Переопределите с помощью переменной окружения CONSUL_LOG_LEVEL
  • Значение по умолчанию: INFO

consul_syslog_enable

  • Запись в syslog, как определено в enable_syslog или -syslog
    • Переопределите с помощью переменной окружения CONSUL_SYSLOG_ENABLE
  • Значение по умолчанию для Linux: false
  • Значение по умолчанию для Windows: false

consul_iface

  • Сетевая интерфейс Consul
    • Переопределите с помощью переменной окружения CONSUL_IFACE
  • Значение по умолчанию: {{ ansible_default_ipv4.interface }}

consul_bind_address

  • Привязанный адрес
    • Переопределите с помощью переменной окружения CONSUL_BIND_ADDRESS
  • Значение по умолчанию: адрес по умолчанию IPv4 или адрес интерфейса, настроенного с помощью consul_iface

consul_advertise_address

  • LAN адрес для рекламы
  • Значение по умолчанию: consul_bind_address

consul_advertise_address_wan

  • WAN адрес для рекламы
  • Значение по умолчанию: consul_bind_address

consul_translate_wan_address

  • Предпочтение WAN-адреса узла при обслуживании DNS
  • Значение по умолчанию: false

consul_advertise_addresses

  • Расширенные настройки адресов для рекламы
  • Индивидуальные адреса могут быть переопределены с использованием переменных consul_advertise_addresses_*
  • Значение по умолчанию:
    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

  • Адрес клиента
  • Значение по умолчанию: 127.0.0.1

consul_addresses

  • Расширенные настройки адресов
  • Индивидуальные адреса могут быть переопределены с использованием переменных consul_addresses_*
  • Значение по умолчанию:
    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

  • Официальная документация по Используемым портам
  • Соответствие портов является вложенным словарем, который позволяет установить порты привязки для следующих ключей:
    • dns - DNS-сервер, -1 для отключения. По умолчанию 8600.
    • http - HTTP API, -1 для отключения. По умолчанию 8500.
    • https - HTTPS API, -1 для отключения. По умолчанию -1 (отключено).
    • rpc - Точка доступа CLI RPC. По умолчанию 8400. Это устарело в Consul 0.8 и позже.
    • grpc - Точка доступа gRPC, -1 для отключения. По умолчанию -1 (отключено).
    • grpc_tls - Точка доступа gRPC TLS, -1 для отключения. По умолчанию -1 (отключено). Это доступно в Consul 1.14.0 и позже.
    • serf_lan - Порт Serf LAN. По умолчанию 8301.
    • serf_wan - Порт Serf WAN. По умолчанию 8302.
    • server - Адрес RPC сервера. По умолчанию 8300.

Например, чтобы включить HTTPS API Consul, можно установить переменную следующим образом:

  • Значения по умолчанию:
  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) }}"

Обратите внимание, что вложенный словарь должен использовать точно те названия, что указаны в документации! И все порты должны быть указаны. Переопределить один или несколько портов можно с помощью переменных consul_ports_*.

consul_node_name

  • Определить пользовательское имя узла (не должно включать точки) См. node_name
    • Значение по умолчанию: ''

consul_recursors

  • Список серверов DNS вышестоящих уровней См. recursors
    • Переопределите с помощью CONSUL_RECURSORS переменной окружения
  • Значение по умолчанию: Пустой список

consul_iptables_enable

  • Нужно ли включить правила iptables для переадресации DNS на Consul
    • Переопределите с помощью CONSUL_IPTABLES_ENABLE переменной окружения
  • Значение по умолчанию: false

consul_acl_policy

  • Добавить базовый файл конфигурации ACL
    • Переопределите с помощью CONSUL_ACL_POLICY переменной окружения
  • Значение по умолчанию: false

consul_acl_enable

  • Включить ACL
    • Переопределите с помощью CONSUL_ACL_ENABLE переменной окружения
  • Значение по умолчанию: false

consul_acl_ttl

  • TTL для ACL
    • Переопределите с помощью CONSUL_ACL_TTL переменной окружения
  • Значение по умолчанию: 30s

consul_acl_token_persistence

  • Определите, будут ли токены, установленные с помощью API, сохранены на диске или нет
    • Переопределите с помощью CONSUL_ACL_TOKEN_PERSISTENCE переменной окружения
  • Значение по умолчанию: true

consul_acl_datacenter

  • Авторитетное имя дата-центра для ACL
    • Переопределите с помощью CONSUL_ACL_DATACENTER переменной окружения
  • Значение по умолчанию: {{ consul_datacenter }} (dc1)

consul_acl_down_policy

  • Политика по умолчанию для ACL
    • Переопределите с помощью CONSUL_ACL_DOWN_POLICY переменной окружения
  • Значение по умолчанию: allow

consul_acl_token

  • Токен ACL по умолчанию, устанавливается только если предоставлен
    • Переопределите с помощью CONSUL_ACL_TOKEN переменной окружения
  • Значение по умолчанию: ''

consul_acl_agent_token

  • Используется для клиентов и серверов для выполнения внутренних операций с каталогом служб. См.: acl_agent_token
    • Переопределите с помощью CONSUL_ACL_AGENT_TOKEN переменной окружения
  • Значение по умолчанию: ''

consul_acl_agent_master_token

  • Специальный токен доступа, который имеет привилегии записи политики ACL агента на каждом агенте, где он настроен
    • Переопределите с помощью переменной окружения CONSUL_ACL_AGENT_MASTER_TOKEN
  • Значение по умолчанию: ''

consul_acl_default_policy

  • Политика ACL по умолчанию
    • Переопределите с помощью CONSUL_ACL_DEFAULT_POLICY переменной окружения
  • Значение по умолчанию: allow

consul_acl_master_token

  • Мастер токен ACL
    • Переопределите с помощью CONSUL_ACL_MASTER_TOKEN переменной окружения
  • Значение по умолчанию: UUID

consul_acl_master_token_display

  • Отображение сгенерированного мастера токена ACL
    • Переопределите с помощью CONSUL_ACL_MASTER_TOKEN_DISPLAY переменной окружения
  • Значение по умолчанию: false

consul_acl_replication_enable

  • Включите репликацию ACL без токена (это позволяет установить токен через API)
    • Переопределите с помощью CONSUL_ACL_REPLICATION_TOKEN_ENABLE переменной окружения
  • Значение по умолчанию: ''

consul_acl_replication_token

  • Токен репликации ACL
    • Переопределите с помощью CONSUL_ACL_REPLICATION_TOKEN_DISPLAY переменной окружения
  • Значение по умолчанию: SN4K3OILSN4K3OILSN4K3OILSN4K3OIL

consul_tls_enable

  • Включить TLS
    • Переопределите с помощью CONSUL_ACL_TLS_ENABLE переменной окружения
  • Значение по умолчанию: false

consul_tls_copy_keys

  • Включает или отключает управление файлами TLS
    • Отключите, если вы включили TLS (consul_tls_enable), но хотите управлять файлами TLS самостоятельно
  • Значение по умолчанию: true

consul_tls_dir

  • Целевая директория для файлов TLS
    • Переопределите с помощью переменной окружения CONSUL_TLS_DIR
  • Значение по умолчанию: /etc/consul/ssl

consul_tls_ca_crt

  • Имя файла сертификата CA
    • Переопределите с помощью переменной окружения CONSUL_TLS_CA_CRT
  • Значение по умолчанию: ca.crt

consul_tls_server_crt

  • Серверный сертификат
    • Переопределите с помощью переменной окружения CONSUL_TLS_SERVER_CRT
  • Значение по умолчанию: server.crt

consul_tls_server_key

  • Серверный ключ
    • Переопределите с помощью переменной окружения CONSUL_TLS_SERVER_KEY
  • Значение по умолчанию: server.key

consul_tls_files_remote_src

  • Копировать из удаленного источника, если файлы TLS уже на хосте
  • Значение по умолчанию: false

consul_encrypt_enable

  • Включить шифрование шифровки
  • Значение по умолчанию: true

consul_encrypt_verify_incoming

  • Проверять входящие соединения шифровки
  • Значение по умолчанию: true

consul_encrypt_verify_outgoing

  • Проверять исходящие соединения шифровки
  • Значение по умолчанию: true

consul_disable_keyring_file

  • Если установлено, хранилище ключей не будет сохранено в файл. Любые установленные ключи будут потеряны при отключении, и только указанный ключ -шифрования будет доступен при запуске.
  • Значение по умолчанию: false

consul_raw_key

  • Установите ключ шифрования; должен быть одинаковым на протяжении всего кластера. Если его нет, ключ будет сгенерирован и получен с начального сервера.
  • Значение по умолчанию: ''

consul_tls_verify_incoming

  • Проверить входящие соединения
    • Переопределите с помощью переменной окружения CONSUL_TLS_VERIFY_INCOMING
  • Значение по умолчанию: false

consul_tls_verify_outgoing

  • Проверить исходящие соединения
    • Переопределите с помощью переменной окружения CONSUL_TLS_VERIFY_OUTGOING
  • Значение по умолчанию: true

consul_tls_verify_incoming_rpc

  • Проверить входящие соединения по RPC-каналам (клиентские сертификаты)
    • Переопределите с помощью переменной окружения CONSUL_TLS_VERIFY_INCOMING_RPC
  • Значение по умолчанию: false

consul_tls_verify_incoming_https

  • Проверить входящие соединения по HTTPS-каналам (клиентские сертификаты)
    • Переопределите с помощью переменной окружения CONSUL_TLS_VERIFY_INCOMING_HTTPS
  • Значение по умолчанию: false

consul_tls_verify_server_hostname

  • Проверить имя хоста сервера
    • Переопределите с помощью переменной окружения CONSUL_TLS_VERIFY_SERVER_HOSTNAME
  • Значение по умолчанию: false

consul_tls_min_version

  • Минимально приемлемая версия TLS
    • Может быть переопределена с помощью переменной окружения CONSUL_TLS_MIN_VERSION
    • Для версий < 1.12.0 используйте 'tls12,tls13,...'
  • Значение по умолчанию: TLSv1_2

consul_tls_cipher_suites

consul_tls_prefer_server_cipher_suites

auto_encrypt

auto_encrypt:
  enabled: false
  • Пример:
auto_encrypt:
  enabled: true
  dns_san: ["consul.com"]
  ip_san: ["127.0.0.1"]

consul_force_install

  • Если true, то всегда устанавливайте consul. В противном случае, consul будет установлен только в том случае, если он отсутствует на хосте или если установленная версия отличается от consul_version.
  • Роль не обрабатывает организацию последовательного обновления серверов, за которым следуют клиентские узлы
  • Значение по умолчанию: false

consul_install_remotely

  • Следует ли загружать файлы для установки непосредственно на удаленные хосты
  • Это единственный вариант на Windows, так как WinRM в определенной степени ограничен
  • Значение по умолчанию: false

consul_install_from_repo

  • Логическое значение, следует ли устанавливать consul из репозитория, а не устанавливать бинарный файл напрямую.
  • Поддерживаемые дистрибутивы: Alma Linux, Amazon Linux, CentOS, Debian, Fedora, Ubuntu, Red Hat, Rocky.
  • Значение по умолчанию: false

consul_ui

  • Включить интерфейс consul?
  • Значение по умолчанию: true

consul_ui_legacy

  • Включить режим устаревшего интерфейса consul
  • Значение по умолчанию: false

consul_disable_update_check

  • Отключить проверку обновлений consul?
  • Значение по умолчанию: false

consul_enable_script_checks

  • Включить проверки на основе сценариев?
  • Значение по умолчанию: false
  • Это не рекомендуется в пользу consul_enable_local_script_checks.

consul_enable_local_script_checks

  • Включить локально определенные проверки сценариев?
  • Значение по умолчанию: false

consul_raft_protocol

  • Протокол Raft для использования.
  • Значение по умолчанию:
    • Версии Consul <= 0.7.0: 1
    • Версии Consul > 0.7.0: 3

consul_node_role

  • Роль узла Consul, одна из: bootstrap, server или client
  • Значение по умолчанию: client

Один сервер должен быть назначен как сервер начальной загрузки, а другие сервера будут подключаться к этому серверу. Вы также можете указать client в качестве роли, и Consul будет настроен как клиентский агент вместо сервера.

Существует два метода для настройки кластера, первый заключается в том, чтобы явно выбрать сервер начальной загрузки, другой — дать серверам избрать лидера среди себя.

Вот пример того, как может быть определен инвентарь хостов для простого кластера из 3 серверов, первый из которых является назначенным начальным / лидером:

[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

Или вы можете использовать более простой метод, позволяя им проводить процесс выборов:

[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

Обратите внимание, что эта вторая форма является предпочтительной, потому что она проще.

consul_autopilot_enable

Автопилот — это набор новых функций, добавленных в Consul 0.8, который позволяет автоматически управлять серверами Consul. Он включает в себя очистку мертвых серверов, мониторинг состояния кластера Raft и стабильное введение серверов.

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

  • Включить конфигурацию автопилота (будет записана на сервер начальной загрузки)
    • Переопределите с помощью переменной окружения CONSUL_AUTOPILOT_ENABLE
  • Значение по умолчанию: false

consul_autopilot_cleanup_dead_Servers

Мертвые серверы будут периодически очищаться и удаляться из набора одноранговых узлов, чтобы предотвратить их вмешательство в размер кворума и выборы лидеров. Эта очистка также произойдет всякий раз, когда новый сервер будет успешно добавлен в кластер.

  • Включить конфигурацию автопилота (будет записана на сервер начальной загрузки)
    • Переопределите с помощью переменной окружения CONSUL_AUTOPILOT_CLEANUP_DEAD_SERVERS
  • Значение по умолчанию: false

consul_autopilot_last_contact_threshold

Используется в проверке состояния серфинга для определения здоровья узла.

  • Устанавливает порог времени с последнего контакта
    • Переопределите с помощью переменной окружения CONSUL_AUTOPILOT_LAST_CONTACT_THRESHOLD
  • Значение по умолчанию: 200ms

consul_autopilot_max_trailing_logs

  • Используется в проверке состояния серфинга для установки максимального числа записей журнала, которые узлы могут отставать от лидера
    • Переопределите с помощью переменной окружения CONSUL_AUTOPILOT_MAX_TRAILING_LOGS
  • Значение по умолчанию: 250

consul_autopilot_server_stabilization_time

  • Время, чтобы позволить новому узлу стабилизироваться
    • Переопределите с помощью переменной окружения CONSUL_AUTOPILOT_SERVER_STABILIZATION_TIME
  • Значение по умолчанию: 10s

consul_autopilot_redundancy_zone_tag

Только для Consul Enterprise (требует установки CONSUL_ENTERPRISE в true)

  • Переопределите с помощью переменной окружения CONSUL_AUTOPILOT_REDUNDANCY_ZONE_TAG
  • Значение по умолчанию: az

consul_autopilot_disable_upgrade_migration

Только для Consul Enterprise (требует установки CONSUL_ENTERPRISE в true)

  • Переопределите с помощью переменной окружения CONSUL_AUTOPILOT_DISABLE_UPGRADE_MIGRATION
  • Значение по умолчанию: false

consul_autopilot_upgrade_version_tag

Только для Consul Enterprise (требует установки CONSUL_ENTERPRISE в true)

  • Переопределите с помощью переменной окружения CONSUL_AUTOPILOT_UPGRADE_VERSION_TAG
  • Значение по умолчанию: ''

consul_debug

  • Включает создание дополнительных файлов конфигурации в каталоге конфигурации Consul для отладки
  • Значение по умолчанию: false

consul_config_template_path

  • Если стандартный шаблон конфигурации вам не подходит, вы можете заменить его своим.
  • Значение по умолчанию: templates/config.json.j2.

consul_rolling_restart

  • Перезапускает узел Consul один за другим, чтобы избежать прерывания сервиса на существующем кластере (только для Unix).
  • Значение по умолчанию: false

consul_rolling_restart_delay_sec

  • Добавляет задержку между выходом консул и перезапуском узла (только для Linux).
  • Значение по умолчанию: 5

Раздел пользовательской конфигурации

Поскольку Consul загружает конфигурацию из файлов и каталогов в лексикографическом порядке, обычно объединяя с предыдущими обработанными конфигурационными файлами, вы можете установить пользовательские конфигурации через consul_config_custom, которые будут расширены в файл с именем config_z_custom.json в вашем consul_config_path, который будет загружен после всей другой конфигурации по умолчанию.

Пример использования для включения telemetry:

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

Агент резервного копирования Consul

Агент резервного копирования Consul делает резервные снимки через определенные интервалы и сохраняет их. Необходима версия Enterprise.

consul_snapshot

  • Булевое значение, истина будет настраивать и запускать агент снимков (только Enterprise)
  • Значение по умолчанию: false

consul_snapshot_storage

  • Место, где будут храниться снимки. ПРИМЕЧАНИЕ: путь должен заканчиваться на snaps
  • Значение по умолчанию: {{ consul_config_path }}/snaps

consul_snapshot_interval

  • Значение по умолчанию: 1ч

consul_snapshot_retain

Переменные ОС и дистрибутивов

Бинарный файл consul работает на большинстве платформ Linux и не является специализированным для дистрибутива. Тем не менее, некоторые дистрибутивы требуют установки конкретных пакетов ОС с различными именами пакетов.

consul_centos_pkg

  • Имя файла пакета Consul
  • Значение по умолчанию: {{ consul_version }}_linux_amd64.zip

consul_centos_url

  • URL для скачивания пакета Consul
  • Значение по умолчанию: {{ consul_zip_url }}

consul_centos_sha256

  • Контрольная сумма загрузки Consul SHA256
  • Значение по умолчанию: SHA256 сумма

consul_centos_os_packages

  • Список пакетов ОС для установки
  • Значение по умолчанию: список

consul_debian_pkg

  • Имя файла пакета Consul
  • Значение по умолчанию: {{ consul_version }}_linux_amd64.zip

consul_debian_url

  • URL для скачивания пакета Consul
  • Значение по умолчанию: {{ consul_zip_url }}

consul_debian_sha256

  • Контрольная сумма загрузки Consul SHA256
  • Значение по умолчанию: SHA256 сумма

consul_debian_os_packages

  • Список пакетов ОС для установки
  • Значение по умолчанию: список

consul_redhat_pkg

  • Имя файла пакета Consul
  • Значение по умолчанию: {{ consul_version }}_linux_amd64.zip

consul_redhat_url

  • URL для скачивания пакета Consul
  • Значение по умолчанию: {{ consul_zip_url }}

consul_redhat_sha256

  • Контрольная сумма загрузки Consul SHA256
  • Значение по умолчанию: SHA256 сумма

consul_redhat_os_packages

  • Список пакетов ОС для установки
  • Значение по умолчанию: список

consul_ubuntu_pkg

  • Имя файла пакета Consul
  • Значение по умолчанию: {{ consul_version }}_linux_amd64.zip

consul_ubuntu_url

  • URL для скачивания пакета Consul
  • Значение по умолчанию: {{ consul_zip_url }}

consul_ubuntu_sha256

  • Контрольная сумма загрузки Consul SHA256
  • Значение по умолчанию: SHA256 сумма

consul_ubuntu_os_packages

  • Список пакетов ОС для установки
  • Значение по умолчанию: список

consul_windows_pkg

  • Имя файла пакета Consul
  • Значение по умолчанию: {{ consul_version }}_windows_amd64.zip

consul_windows_url

  • URL для скачивания пакета Consul
  • Значение по умолчанию: {{ consul_zip_url }}

consul_windows_sha256

  • Контрольная сумма загрузки Consul SHA256
  • Значение по умолчанию: SHA256 сумма

consul_windows_os_packages

  • Список пакетов ОС для установки
  • Значение по умолчанию: список

consul_performance

  • Список элементов настройки производительности Consul
  • Значение по умолчанию: список

raft_multiplier

  • Множитель Raft масштабирует основные параметры времени Raft
  • Значение по умолчанию: 1

leave_drain_time

  • Время дренажа выхода узла — это время, в течение которого сервер должен обрабатывать запросы, пока корректно покидает кластер

  • Значение по умолчанию: 5s

rpc_hold_timeout

  • Таймаут удержания RPC — это продолжительность, в течение которой клиент или сервер будут повторять внутренние RPC-запросы во время выборов лидера
  • Значение по умолчанию: 7s

leave_on_terminate

  • leave_on_terminate Если включено, когда агент получает сигнал TERM, он отправит сообщение Leave остальным узлам кластера и корректно покинет его. Поведение по умолчанию для этой функции варьируется в зависимости от того, работает ли агент в режиме клиента или сервера. В агенте в режиме клиента это по умолчанию true, а в агенте в режиме сервера по умолчанию false.

consul_limit

  • Ограничения узла Consul (ключ-значение)
  • Поддерживается в версиях Consul 0.9.3 или позднее
  • Значение по умолчанию: {}
  • Пример:
consul_limits:
    http_max_conns_per_client: 250
    rpc_max_conns_per_client: 150

Зависимости

Ansible требует GNU tar, и эта роль делает некоторое локальное использование модуля unarchive для повышения эффективности, поэтому убедитесь, что ваша система имеет установленный gtar и unzip в PATH. Если не так, эта роль установит unzip на удаленных машинах для распаковки ZIP-файлов.

Если вы на системе с другим (т.е. BSD) tar, например, macOS и видите странные ошибки во время задач распаковки, вам может не хватать gtar.

Установка Ansible на Windows требует PowerShell Community Extensions. Эти расширения уже установлены на Windows Server 2012 R2 и более поздних версиях. Если вы пытаетесь это сделать на Windows Server 2008 или более ранних версиях, вам нужно установить расширения здесь.

Пример плейбука

Базовая установка возможна с помощью включенного плейбука site.yml:

ansible-playbook -i hosts site.yml

Вы также можете передавать переменные, используя опцию --extra-vars для команды ansible-playbook:

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

Обратите внимание, что для кластеризации включенный site.yml выполняет следующее:

  1. Выполняет роль consul (устанавливает Consul и развертывает кластер)
  2. Конфигурирует узел начальной загрузки на выполнение без настройки bootstrap-expect
  3. Перезапускает узел начальной загрузки

Поддержка ACL

Базовая поддержка ACL включена в роль. Вы можете установить переменные окружения CONSUL_ACL_ENABLE в true, а также установить переменную окружения CONSUL_ACL_DATACENTER в ее правильное значение для вашей среды перед выполнением вашего плейбука; например:

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

Если вы хотите, чтобы автоматически сгенерированное значение мастера токена ACL выводилось в стандартный вывод во время выполнения, установите переменную окружения CONSUL_ACL_MASTER_TOKEN_DISPLAY в true, как в примере выше.

Если вы хотите использовать существующие токены, установите переменные окружения CONSUL_ACL_MASTER_TOKEN и CONSUL_ACL_REPLICATION_TOKEN также, например:

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

Существует множество переменных Ansible ACL, которые вы можете переопределить для дальнейшего уточнения вашей начальной настройки ACL. Не все они в настоящее время считываются из переменных окружения, но имеют разумные значения по умолчанию.

Проверьте defaults/main.yml, чтобы увидеть, как некоторые из значений по умолчанию (например, токены) автоматически генерируются.

Поддержка переадресации DNS Dnsmasq

Роль теперь включает поддержку переадресации DNS с помощью Dnsmasq.

Включите это так:

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

Затем вы можете запрашивать любые из агентов напрямую через DNS порт 53, например:

dig @consul1.consul consul3.node.consul

; <<>> DiG 9.8.3-P1 <<>> @consul1.consul consul3.node.consul
; (1 установленный сервер)
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29196
;; флаги: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; СЕКЦИЯ ВОПРОСА:
;consul3.node.consul.   IN  A

;; СЕКЦИЯ ОТВЕТА:
consul3.node.consul.  0 IN  A 10.1.42.230

;; Время запроса: 42 мс
;; СЕРВЕР: 10.1.42.210#53(10.1.42.210)
;; КОГДА: Вс Авг  7 18:06:32 2016
;;

consul_delegate_datacenter_dns

  • Делегировать ли домен DNS дата-центра Consul
  • Значение по умолчанию: false

consul_dnsmasq_enable

  • Следует ли установить и настроить переадресацию DNS API на порту 53 с использованием DNSMasq
    • Переопределите с помощью переменной окружения CONSUL_DNSMASQ_ENABLE
  • Значение по умолчанию: false

consul_dnsmasq_bind_interfaces

  • Установив эту опцию в true, вы предотвратите привязку DNSmasq по умолчанию 0.0.0.0, вместо этого указав ему привязаться к конкретным сетевым интерфейсам, которые соответствуют опции consul_dnsmasq_listen_addresses
  • Значение по умолчанию: false

consul_dnsmasq_consul_address

  • Адрес, используемый DNSmasq для запроса консул
  • Значение по умолчанию: consul_address.dns
  • По умолчанию 127.0.0.1, если DNS Consul привязан ко всем интерфейсам (например, 0.0.0.0)

consul_dnsmasq_cache

  • Расположение кэша dnsmasq
  • Если меньше 0, будет использована настройка по умолчанию для dnsmasq.
  • Значение по умолчанию: -1

consul_dnsmasq_servers

  • Вышестоящие DNS-серверы, используемые dnsmasq
  • Значение по умолчанию: 8.8.8.8 и 8.8.4.4

consul_dnsmasq_revservers

  • Подсети обратного разрешения
  • Значение по умолчанию: []

consul_dnsmasq_no_poll

  • Не опрашивать /etc/resolv.conf
  • Значение по умолчанию: false

consul_dnsmasq_no_resolv

  • Игнорировать файл /etc/resolv.conf
  • Значение по умолчанию: false

consul_dnsmasq_local_service

  • Разрешить запросы только из локальных подсетей
  • Значение по умолчанию: false

consul_dnsmasq_listen_addresses

  • Пользовательский список адресов для прослушивания.
  • Значение по умолчанию: []

consul_connect_enabled

  • Включить функцию Consul Connect
  • Значение по умолчанию: false

consul_cleanup_ignore_files

  • Список файлов, которые следует игнорировать во время этапов очистки
  • Значение по умолчанию: [{{ consul_configd_path }}/consul.env]

Поддержка переадресации DNS через iptables

Эта роль также может использовать iptables вместо Dnsmasq для переадресации запросов DNS в Consul. Вы можете включить это так:

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

Обратите внимание, что переадресация iptables и переадресация через DNSmasq не могут использоваться одновременно, и выполнение роли завершится ошибкой, если такая конфигурация будет указана.

Поддержка TLS

Вы можете включить шифрование TLS, положив сертификат CA, сертификат сервера и серверный ключ в каталог files роли.

По умолчанию они называются:

  • ca.crt (можно переопределить {{ consul_tls_ca_crt }})
  • server.crt (можно переопределить {{ consul_tls_server_crt }})
  • server.key (можно переопределить {{ consul_tls_server_key }})

Затем либо установите переменную окружения CONSUL_TLS_ENABLE=true, либо используйте переменную Ansible consul_tls_enable=true во время выполнения роли.

Поддержка управления службами

Вы можете создать файл конфигурации для служб Consul. Добавьте список служб в consul_services.

name Обязательный Тип По умолчанию Комментарий
consul_services Ложь Список [] Список объектов службы (см. ниже)

Объект службы:

| name | Обязательн

Установить
ansible-galaxy install brianshumate/ansible-consul
Лицензия
bsd-2-clause
Загрузки
492081
Владелец
Art ⁂ Data ⁂ Boards ⁂ Water