consul - Добавление, изменение и удаление служб в кластере consul.
Новое в версии 2.0.
Описание
- Регистрирует службы и проверяет наличие агента в кластере consul. Служба — это какой-либо процесс, выполняющийся на узле агента, который должен быть объявлен механизмом обнаружения consul. Он может необязательно содержать определение проверки, периодический тест службы для уведомления кластера consul о состоянии службы.
- Проверки также могут регистрироваться на узел, например, использование дискового пространства или процессорной мощности, и сообщать кластеру о состоянии всего узла. Проверки на уровне службы не требуют имени или идентификатора проверки, так как они выводятся Consul из имени и идентификатора службы соответственно путем добавления «service:». Проверки на уровне узла требуют имени проверки check_name и необязательно идентификатора проверки check_id.
- В настоящее время нет полного способа извлечения метаданных скрипта, интервала или ttl для зарегистрированной проверки. Без этих метаданных невозможно определить, представляет ли предоставленные Ansible данные изменение проверки. В результате это не пытается определить изменения и всегда будет сообщать о произошедших изменениях. В планах добавление метода API для предоставления этих метаданных, после чего будет реализовано управление изменениями.
- Дополнительную информацию см. на странице http://consul.io.
Требования (к хосту, на котором выполняется модуль)
- python >= 2.6
- python-consul
- requests
Параметры
| параметр | обязательно | значение по умолчанию | возможные значения | комментарии |
|---|---|---|---|---|
| check_id | нет | None | Идентификатор проверки службы, по умолчанию совпадает с именем проверки, игнорируется, если он является частью определения службы. | |
| check_name | нет | None | Имя проверки службы, по умолчанию совпадает с идентификатором проверки. Требуется, если это самостоятельная проверка, игнорируется, если это часть определения службы. | |
| host | нет | localhost | Хост агента consul, по умолчанию localhost | |
| http (добавлен в 2.0)
| нет | None | Проверки могут регистрироваться с помощью конечной точки HTTP. Это означает, что consul будет проверять, возвращает ли конечная точка HTTP успешный HTTP-код состояния. Также необходимо указать интервал. | |
| interval | нет | None | Интервал, с которым будет выполняться проверка службы. Это число с суффиксом s или m для обозначения единиц секунд или минут, например, 15s или 1m. Если суффикс не указан, по умолчанию используется m, например, 1 будет 1m. Требуется, если указан параметр скрипта. | |
| notes | нет | None | Примечания, которые необходимо добавить к проверке при ее регистрации. | |
| port | нет | 8500 | Порт, на котором работает агент consul | |
| scheme (добавлен в 2.1)
| нет | http | Схема протокола, на котором работает агент consul | |
| script | нет | None | Скрипт/команда, которые будут выполняться периодически для проверки состояния службы. Для скриптов требуется интервал, и наоборот. | |
| service_address (добавлен в 2.1)
| нет | None | Адрес для объявления, на котором служба будет прослушивать. Это значение будет передано как параметр Address в метод API Consul /v1/agent/service/register, поэтому для получения дополнительной информации обратитесь к документации API Consul. | |
| service_id | нет | service_name, если указано | Идентификатор службы, должен быть уникальным для каждого узла, по умолчанию совпадает с именем службы, если имя службы указано. | |
| service_name | нет | Уникальное имя службы на узле, должно быть уникальным для каждого узла, требуется при регистрации службы. Может быть опущено при регистрации проверки на уровне узла. | ||
| service_port | нет | None | Порт, на котором прослушивает служба. Можно необязательно указать при регистрации службы, т.е. если заданы service_name или service_id. | |
| state | да |
| регистрация или отмена регистрации службы consul, по умолчанию present | |
| tags | нет | None | Список тегов, которые будут добавлены к регистрации службы. | |
| timeout (добавлен в 2.0)
| нет | None | Настройка таймаута проверки HTTP. Значение по умолчанию consul — 10 секунд. Аналогично интервалу, это число с суффиксом s или m для обозначения единиц секунд или минут, например, 15s или 1m. | |
| token | нет | None | Ключ токена, идентифицирующий набор правил ACL. Может потребоваться для регистрации служб. | |
| ttl | нет | None | Проверки могут регистрироваться с ttl вместо скрипта и интервала, что означает, что служба будет связываться с агентом до истечения ttl. Если этого не произойдет, проверка считается неудачной. Требуется при регистрации проверки, если отсутствуют скрипт и интервал. Аналогично интервалу, это число с суффиксом s или m для обозначения единиц секунд или минут, например, 15s или 1m. Если суффикс не указан, по умолчанию используется m, например, 1 будет 1m. | |
| validate_certs (добавлен в 2.1)
| нет | True | Выполнять ли проверку сертификата 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
Статус
Этот модуль помечен как превью, что означает, что он не гарантирует обратную совместимость.
Для получения помощи в разработке модулей, если вы заинтересованы, прочтите Справочная информация по сообществу и участие в разработке, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/consul_module.html