consul — Добавление, изменение и удаление сервисов в кластере consul.
Новое в версии 2.0.
Обзор
- Регистрирует сервисы и проверяет наличие агента в кластере consul. Сервис — это некоторый процесс, выполняющийся на узле-агенте, который должен быть рекламируемым механизмом обнаружения consul. Он может по желанию предоставить определение проверки, периодический тест сервиса для уведомления кластера consul о состоянии сервиса.
- Проверки также могут быть зарегистрированы на узел, например, использование дискового пространства или ЦП, и уведомлять о состоянии всего узла в кластер. Проверки уровня сервиса не требуют имени или идентификатора проверки, так как они выводятся Consul из имени и идентификатора сервиса, соответственно, добавив «service:». Проверки уровня узла требуют имени проверки и необязательно идентификатора проверки.
- В настоящее время нет полного способа получения метаданных сценария, интервала или ttl для зарегистрированной проверки. Без этих метаданных невозможно определить, представляют ли данные, предоставленные ansible, изменение проверки. В результате это не пытается определить изменения и всегда сообщает о произошедших изменениях. Планируется метод API для предоставления этих метаданных, и на этом этапе будет добавлена система управления изменениями.
- Дополнительные сведения см. на странице http://consul.io.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- python >= 2.6
- python-consul
- requests
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| check_id | Идентификатор проверки сервиса, по умолчанию совпадает с именем проверки, игнорируется, если входит в определение сервиса. | |
| check_name | Имя проверки сервиса, по умолчанию совпадает с идентификатором проверки. Требуется при самостоятельной работе, игнорируется, если входит в определение сервиса. | |
| host | По умолчанию: "localhost" | Хост агента consul, по умолчанию localhost |
| http (добавлено в 2.0) | Проверки могут быть зарегистрированы с помощью http-пункта конечной точки. Это означает, что consul проверит, что http-пункт конечной точки возвращает успешный http-статус. Также необходимо указать интервал с этим параметром. | |
| interval | Интервал, с которым будет выполняться проверка сервиса. Это число с суффиксом s или m, обозначающим секунды или минуты, например, 15s или 1m. Если суффикс не указан, по умолчанию используется m, например, 1 будет означать 1m. Требуется, если указан параметр script. | |
| notes | Примечания, добавляемые к проверке при её регистрации. | |
| port | По умолчанию: 8500 | Порт, на котором работает агент consul |
| scheme (добавлено в 2.1) | По умолчанию: "http" | Схема протокола, на которой работает агент consul |
| script | Сценарий/команда, которые будут выполняться периодически для проверки состояния сервиса. Сценарии требуют интервал и наоборот | |
| service_address (добавлено в 2.1) | Адрес, по которому будет объявляться доступность сервиса. Это значение будет передано как параметр Address методу API Consul /v1/agent/service/register, поэтому для получения дополнительной информации обратитесь к документации API Consul. | |
| service_id | По умолчанию: "имя_сервиса, если указано" | Идентификатор сервиса, должен быть уникальным для каждого узла, по умолчанию совпадает с именем сервиса, если указано имя сервиса |
| service_name | Уникальное имя сервиса на узле, должно быть уникальным для каждого узла, требуется при регистрации сервиса. Может быть опущено при регистрации проверки на уровне узла | |
| service_port | Порт, на котором работает сервис. Можно дополнительно указать для регистрации сервиса, т.е. если указано имя или идентификатор сервиса | |
| state обязательно |
| регистрация или отмена регистрации сервиса consul, по умолчанию present |
| tags | Список тегов, которые будут добавлены к регистрации сервиса. | |
| timeout (добавлено в 2.0) | Настройка таймаута HTTP-проверки. Значение по умолчанию в consul — 10 секунд. Аналогично интервалу, это число с суффиксом s или m, обозначающим секунды или минуты, например, 15s или 1m. | |
| token | Ключ токена, идентифицирующий набор правил ACL. Может потребоваться для регистрации сервисов. | |
| ttl | Проверки могут быть зарегистрированы с ttl вместо сценария и интервала, это означает, что служба будет проверяться с агентом перед истечением ttl. Если этого не происходит, проверка считается неудачной. Требуется при регистрации проверки, если отсутствуют сценарий и интервал. Аналогично интервалу, это число с суффиксом s или m, обозначающим секунды или минуты, например, 15s или 1m. Если суффикс не указан, по умолчанию используется m, например, 1 будет означать 1m. | |
| validate_certs bool (добавлено в 2.1) |
| Указывает, нужно ли проверять 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, что означает, что его интерфейс не гарантирует обратной совместимости.
Техническое обслуживание
Этот модуль помечен как community, что означает, что он поддерживается сообществом Ansible. Дополнительную информацию см. на странице Техническое обслуживание и поддержка модулей.
Список других модулей, поддерживаемых сообществом Ansible, см. на странице здесь.
Автор
- 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.6/modules/consul_module.html