consul – Добавление, изменение и удаление служб в кластере consul
Описание
- Регистрирует службы и проверяет наличие агента в кластере consul. Служба — это процесс, выполняемый на узле агента, который должен быть объявлен механизмом обнаружения consul. Она может (по желанию) предоставить определение проверки — периодическое тестирование службы для уведомления кластера consul о состоянии службы.
- Проверки также могут регистрироваться на уровне узла, например, использование дискового пространства или процессорной мощности, и уведомлять кластер о состоянии всего узла. Проверки на уровне службы не требуют имени или идентификатора проверки, поскольку они выводятся Consul из имени и идентификатора службы, соответственно, добавлением «service:». Проверки на уровне узла требуют check_name и необязательно check_id.
- В настоящее время нет полного способа получения метаданных сценария, интервала или ttl для зарегистрированной проверки. Без этих метаданных невозможно определить, представляют ли данные, предоставленные ansible, изменение проверки. В результате это не пытается определить изменения и всегда сообщает об изменениях. Планируется API-метод для предоставления этих метаданных, и на этом этапе будет добавлено управление изменениями.
- Для получения дополнительной информации см. http://consul.io.
Требования
Ниже перечислены требования, необходимые на хосте, который выполняет этот модуль.
- python-consul
- requests
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| check_id строка | Идентификатор проверки службы. Если state=absent, по умолчанию используется check_name. Игнорируется, если это часть определения службы. | |
| check_name строка | Имя проверки службы. Требуется, если это автономная проверка, игнорируется, если это часть определения службы. | |
| host строка | Значение по умолчанию: "localhost" | Хост агента consul, по умолчанию — localhost |
| http строка | Проверки могут быть зарегистрированы с помощью HTTP-подключения. Это означает, что consul будет проверять, возвращает ли HTTP-подключение успешный HTTP-статус. Также необходимо указать interval. | |
| interval строка | Интервал, с которым будет выполняться проверка службы. Это число с суффиксом s или m, обозначающим единицы секунд или минут, например 15s или 1m. Если суффикс не указан, по умолчанию используется m, например, 1 будет 1m. Требуется, если указан параметр script. | |
| notes строка | Примечания, которые нужно добавить к проверке при её регистрации. | |
| port целое число | Значение по умолчанию: 8500 | Порт, на котором работает агент consul |
| scheme строка | Значение по умолчанию: "http" | Схема протокола, по которому работает агент consul |
| script строка | Скрипт/команда, которые будут выполняться периодически для проверки состояния службы. Для скриптов требуется interval и наоборот. | |
| service_address строка | Адрес для объявления того, на каком адресе будет прослушиваться служба. Это значение будет передано как параметр address в API-метод Consul /v1/agent/service/register, поэтому обратитесь к документации API Consul для получения дополнительной информации. | |
| service_id строка | Идентификатор службы, должен быть уникальным для каждого узла. Если state=absent, по умолчанию используется имя службы, если оно указано. | |
| service_name строка | Уникальное имя службы на узле, должно быть уникальным для каждого узла, требуется при регистрации службы. Может быть опущено при регистрации проверки на уровне узла. | |
| service_port целое число | Порт, на котором прослушивается служба. Может быть необязательно указан для регистрации службы, т.е. если заданы service_name или service_id | |
| state - |
| Регистрация или отмена регистрации службы consul, по умолчанию — present |
| tags список | Теги, которые будут прикреплены к регистрации службы. | |
| timeout строка | Настройка таймаута проверки HTTP. Значение по умолчанию в consul — 10 секунд. Аналогично интервалу, это число с суффиксом s или m, обозначающим единицы секунд или минут, например 15s или 1m.
| |
| token строка | Ключ маркера, определяющий набор правил ACL. Может потребоваться для регистрации служб. | |
| ttl строка | Проверки могут быть зарегистрированы с ttl вместо script и interval. Это означает, что служба будет проверять соединение с агентом до истечения ttl. Если этого не происходит, проверка считается неудачной. Требуется при регистрации проверки, если скрипт и интервал отсутствуют. Аналогично интервалу, это число с суффиксом s или m, обозначающим единицы секунд или минут, например 15s или 1m. Если суффикс не указан, по умолчанию используется m, например, 1 будет 1m.
| |
| validate_certs логическое значение |
| Требуется ли проверка сертификата TLS агента consul |
Примеры
- name: register nginx service with the local consul agent
consul:
service_name: nginx
service_port: 80
- name: register nginx service with curl check
consul:
service_name: nginx
service_port: 80
script: curl http://localhost
interval: 60s
- name: register nginx with an http check
consul:
service_name: nginx
service_port: 80
interval: 60s
http: http://localhost:80/status
- name: register external service nginx available at 10.1.5.23
consul:
service_name: nginx
service_port: 80
service_address: 10.1.5.23
- name: register nginx with some service tags
consul:
service_name: nginx
service_port: 80
tags:
- prod
- webservers
- name: remove nginx service
consul:
service_name: nginx
state: absent
- name: register celery worker service
consul:
service_name: celery-worker
tags:
- prod
- worker
- name: create a node level check to test disk usage
consul:
check_name: Disk usage
check_id: disk_usage
script: /opt/disk_usage.py
interval: 5m
- name: register an http check against a service that's already registered
consul:
check_name: nginx-check2
check_id: nginx-check2
service_id: nginx
interval: 60s
http: http://localhost:80/morestatus
Статус
- Гарантия обратной совместимости этого модуля не предоставляется. [preview]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Steve Gargan (@sgargan)
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете изменить этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/consul_module.html