consul
Consul
Эта роль 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- Путь к журналу для использования в log_file или -log-file
- Если
consul_syslog_enable
равно true- Път к журналу для использования в конфигурации rsyslogd на Linux. Игнорируется, если
consul_configure_syslogd
равно false.
- Път к журналу для использования в конфигурации rsyslogd на Linux. Игнорируется, если
- Значение по умолчанию для Linux:
/var/log/consul
- Переопределите с помощью переменной окружения
CONSUL_LOG_PATH
- Переопределите с помощью переменной окружения
- Значение по умолчанию для Windows:
C:\ProgramData\consul\log
consul_log_file
- Если
consul_syslog_enable
равно false- Файл журнала для использования в log_file или -log-file
- Если
consul_syslog_enable
равно true- Файл журнала для использования в конфигурации rsyslogd на Linux. Игнорируется, если
consul_configure_syslogd
равно false.
- Файл журнала для использования в конфигурации rsyslogd на Linux. Игнорируется, если
- Переопределите с помощью переменной окружения
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 самостоятельно
- Отключите, если вы включили 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
- Предпочтение шифров сервера перед клиентом
- Может быть переопределено с помощью переменной окружения
CONSUL_TLS_PREFER_SERVER_CIPHER_SUITES
- Может быть переопределено с помощью переменной окружения
- Значение по умолчанию: false
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
выполняет следующее:
- Выполняет роль consul (устанавливает Consul и развертывает кластер)
- Конфигурирует узел начальной загрузки на выполнение без настройки bootstrap-expect
- Перезапускает узел начальной загрузки
Поддержка 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