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,因为这些是由 Consul 分别从服务名称和 ID 派生出来的,方法是在后面附加“service:”。节点级别检查需要
check_name
,并且可以选择check_id
。目前,没有完整的方法来检索已注册检查的脚本、间隔或 TTL 元数据。如果没有此元数据,则无法判断 Ansible 提供的数据是否代表对检查的更改。因此,这不会尝试确定更改,并且将始终报告发生了更改。计划使用 API 方法来提供此元数据,因此在此阶段将添加更改管理。
有关更多详细信息,请参阅 http://consul.io。
需求
执行此模块的主机需要以下需求。
python-consul
requests
参数
参数 |
注释 |
---|---|
主机名。 |
|
服务检查的 ID。如果 |
|
服务检查的名称。如果独立存在则为必需,如果属于服务定义的一部分则忽略。 |
|
节点名称。 |
|
Consul 代理的主机,默认为 localhost。 默认值: |
|
注册检查时要附加的注释。 |
|
Consul 代理运行的端口。 默认值: |
|
Consul 代理运行的协议方案。 默认值: |
|
要公布服务监听的地址。此值将作为 |
|
服务的ID,每个节点必须唯一。如果 |
|
节点上服务的唯一名称,每个节点必须唯一,注册服务时必填。如果注册节点级检查,则可以省略。 |
|
服务监听的端口。可以选择性地提供用于注册服务,即如果设置了 |
|
注册或注销Consul服务,默认为present。 选项
|
|
将附加到服务注册的标签。 |
|
自定义HTTP检查超时。Consul默认值为10秒。与interval类似,这是一个带有 |
|
标识ACL规则集的令牌密钥。可能需要注册服务。 |
|
是否验证Consul代理的TLS证书。 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:不支持 |
可以在 |
|
支持:不支持 |
在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