community.general.consul 模块 – 在 Consul 集群中添加、修改和删除服务
注意
此模块是 community.general 集合(版本 10.1.0)的一部分。
如果您正在使用 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.general
。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。
要在 playbook 中使用它,请指定:community.general.consul
。
概要
向 Consul 集群注册服务和检查代理。服务是在代理节点上运行的某些进程,应该由 Consul 的发现机制进行通告。它可以选择提供检查定义,这是一种定期的服务测试,用于通知 Consul 集群服务的健康状况。
检查也可以按节点注册,例如磁盘使用率或 CPU 使用率,并将整个节点的运行状况通知集群。服务级检查不需要检查名称或 ID,因为这些名称和 ID 由 Consul 从服务名称和 ID 派生,分别附加“service:”节点级检查需要
check_name
,并可选择check_id
。目前,没有完整的方法来检索已注册检查的脚本、间隔或 TTL 元数据。如果没有此元数据,就无法判断 Ansible 提供的数据是否表示对检查的更改。因此,这不会尝试确定更改,并且始终会报告发生了更改。计划使用 API 方法来提供此元数据,以便在该阶段添加更改管理。
有关更多详细信息,请参阅 http://consul.io。
要求
执行此模块的主机上需要满足以下要求。
python-consul
requests
参数
参数 |
注释 |
---|---|
主机名。 |
|
服务检查的 ID。如果 |
|
服务检查的名称。如果独立,则为必需;如果属于服务定义的一部分,则忽略。 |
|
节点名称。 |
|
Consul 代理的主机,默认为 localhost。 默认值: |
|
注册检查时要附加到检查的注释。 |
|
Consul 代理正在运行的端口。 默认值: |
|
Consul 代理正在运行的协议方案。 默认值: |
|
服务监听的地址。此值将作为 |
|
服务的 ID,在每个节点上必须是唯一的。如果 |
|
节点上服务的唯一名称,在每个节点上必须是唯一的,注册服务时是必需的。如果注册节点级别的检查,则可以省略。 |
|
服务正在监听的端口。可以选择性地为服务注册提供,即如果设置了 |
|
注册或注销 consul 服务,默认为 present。 Choices
|
|
将附加到服务注册的标签。 |
|
自定义 HTTP 检查超时时间。consul 默认值为 10 秒。与 interval 类似,这是一个带有 |
|
标识 ACL 规则集的令牌密钥。可能需要注册服务。 |
|
是否验证 consul 代理的 TLS 证书。 Choices
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 无 |
可以在 |
|
支持: 无 |
当处于 diff 模式时,将返回已更改(或可能需要更改)的详细信息(在 |
示例
- name: Register nginx service with the local consul agent
community.general.consul:
service_name: nginx
service_port: 80
- name: Register nginx service with curl check
community.general.consul:
service_name: nginx
service_port: 80
script: curl https://127.0.0.1
interval: 60s
- name: register nginx with a tcp check
community.general.consul:
service_name: nginx
service_port: 80
interval: 60s
tcp: localhost:80
- name: Register nginx with an http check
community.general.consul:
service_name: nginx
service_port: 80
interval: 60s
http: https://127.0.0.1:80/status
- name: Register external service nginx available at 10.1.5.23
community.general.consul:
service_name: nginx
service_port: 80
service_address: 10.1.5.23
- name: Register nginx with some service tags
community.general.consul:
service_name: nginx
service_port: 80
tags:
- prod
- webservers
- name: Remove nginx service
community.general.consul:
service_name: nginx
state: absent
- name: Register celery worker service
community.general.consul:
service_name: celery-worker
tags:
- prod
- worker
- name: Create a node level check to test disk usage
community.general.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
community.general.consul:
check_name: nginx-check2
check_id: nginx-check2
service_id: nginx
interval: 60s
http: https://127.0.0.1:80/morestatus