community.general.consul_agent_service 模块 – 在 Consul 集群中添加、修改和删除服务

注意

此模块是 community.general 集合(版本 10.1.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了这个集合。 它不包含在 ansible-core 中。 要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install community.general

要在 playbook 中使用它,请指定:community.general.consul_agent_service

community.general 9.1.0 中的新增功能

概要

  • 允许通过代理在 Consul 集群中添加、修改和删除服务。

  • 目前没有计划在一个操作中创建服务和检查。 这是因为 Consul API 不提供服务的检查,并且检查本身与模块参数不匹配。 因此,在此模块中只能创建没有检查的服务。

参数

参数

注释

address

字符串

要通告该服务将侦听的地址。 此值将作为 address 参数传递给 Consul 的 /v1/agent/service/register API 方法,因此请参阅 Consul API 文档了解更多详细信息。

ca_path

字符串

用于 https 连接的 CA 包

enable_tag_override

布尔值

指定禁用此服务标签的反熵功能。 如果将 EnableTagOverride 设置为 true,则外部代理可以更新目录中的此服务并修改标签。

选项

  • false ← (默认)

  • true

host

字符串

Consul 代理的主机,默认为 localhost

默认值: "localhost"

id

字符串

指定此服务的唯一 ID。 每个代理必须唯一。 如果未提供,则默认为 name 参数。 如果 state=absent,如果提供,则默认为服务名称。

meta

字典

用于过滤的可选元数据。 对于键,允许使用字符 A-Za-z0-9_-。 不允许的字符将替换为下划线。

name

字符串

节点上服务的唯一名称,每个节点必须唯一,如果要注册服务,则为必填项。

port

整数

Consul 代理正在运行的端口。

默认值: 8500

scheme

字符串

Consul 代理正在运行的协议方案。 默认为 http,对于安全连接,可以设置为 https

默认值: "http"

service_port

整数

服务正在侦听的端口。 可以选择性地为服务注册提供,也就是说,如果设置了 nameid

state

字符串

服务应该存在还是不存在。

选项

  • "present" ← (默认)

  • "absent"

tags

列表 / 元素=字符串

将附加到服务注册的标签。

token

字符串

用于授权的令牌。

validate_certs

布尔值

是否验证 Consul 代理的 TLS 证书。

选项

  • false

  • true ← (默认)

weights

字典

指定服务的权重

默认值: {"passing": 1, "warning": 1}

passing

整数

通过的权重。

默认值: 1

警告

整数

警告的权重。

默认值: 1

属性

属性

支持

描述

action_group

动作组: community.general.consul

module_defaults 中使用 group/community.general.consul 来为此模块设置默认值。

check_mode

支持: 完全

可以在 check_mode 中运行并返回更改状态预测,而无需修改目标。

diff_mode

支持: 部分

在检查模式下,差异将遗漏操作属性。

在差异模式下,将返回已更改(或可能需要在 check_mode 中更改)的详细信息。

示例

- name: Register nginx service with the local consul agent
  community.general.consul_agent_service:
    host: consul1.example.com
    token: some_management_acl
    name: nginx
    service_port: 80

- name: Register nginx with a tcp check
  community.general.consul_agent_service:
    host: consul1.example.com
    token: some_management_acl
    name: nginx
    service_port: 80

- name: Register nginx with an http check
  community.general.consul_agent_service:
    host: consul1.example.com
    token: some_management_acl
    name: nginx
    service_port: 80

- name: Register external service nginx available at 10.1.5.23
  community.general.consul_agent_service:
    host: consul1.example.com
    token: some_management_acl
    name: nginx
    service_port: 80
    address: 10.1.5.23

- name: Register nginx with some service tags
  community.general.consul_agent_service:
    host: consul1.example.com
    token: some_management_acl
    name: nginx
    service_port: 80
    tags:
      - prod
      - webservers

- name: Register nginx with some service meta
  community.general.consul_agent_service:
    host: consul1.example.com
    token: some_management_acl
    name: nginx
    service_port: 80
    meta:
      nginx_version: 1.25.3

- name: Remove nginx service
  community.general.consul_agent_service:
    host: consul1.example.com
    token: some_management_acl
    service_id: nginx
    state: absent

- name: Register celery worker service
  community.general.consul_agent_service:
    host: consul1.example.com
    token: some_management_acl
    name: celery-worker
    tags:
      - prod
      - worker

返回值

常见的返回值记录在这里,以下是此模块特有的字段

描述

operation

字符串

执行的操作。

返回: 已更改

示例: "update"

service

字典

Consul HTTP API 返回的服务。

返回: 始终

示例: {"Address": "localhost", "ContentHash": "61a245cd985261ac", "Datacenter": "dc1", "EnableTagOverride": false, "ID": "nginx", "Meta": [{"nginx_version": "1.23.3"}], "Port": 80, "Service": "nginx", "Tags": ["http"], "Weights": {"Passing": 1, "Warning": 1}}

作者

  • Michael Ilg (@Ilgmi)