community.dns.hetzner_dns_records 清单 – 从 Hetzner DNS 记录创建清单

注意

此清单插件是 community.dns 集合(版本 3.1.0)的一部分。

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

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

要在 playbook 中使用它,请指定:community.dns.hetzner_dns_records

community.dns 2.0.0 中的新增功能

概要

  • 为了让 Ansible 能够将 YAML 文件识别为此插件的清单,清单文件必须包含 plugin: community.dns.hetzner_dns_records 并且其文件名必须以 hetzner_dns.yamlhetzner_dns.yml 结尾

  • 记录通过前缀/记录名称和值进行匹配。

  • 此插件允许从 Hetzner DNS 记录创建清单。

参数

参数

注释

filters

列表 / 元素=字典

在 community.dns 3.0.0 中添加

允许选择/取消选择此清单的主机的包含/排除过滤器列表。

过滤器按顺序处理,直到找到第一个匹配 filters[].excludefilters[].include 的过滤器。如果匹配 filters[].exclude,则排除该主机;如果匹配 filters[].include,则包含该主机。如果没有过滤器匹配,则包含该主机。

exclude

字符串

Jinja2 条件。如果它与主机匹配,则该主机将排除

只能指定 filters[].excludefilters[].include 中的一个。

include

字符串

Jinja2 条件。如果它与主机匹配,则该主机将包含

只能指定 filters[].excludefilters[].include 中的一个。

hetzner_token

别名:api_token

字符串 / 必需

Hetzner API 的令牌。

如果未提供,将从环境变量 HETZNER_DNS_TOKEN 中读取。

配置

plugin

字符串 / 必需

此插件的名称。应始终设置为 community.dns.hetzner_dns_records,以便此插件将其识别为自己的插件。

选项

  • "community.dns.hetzner_dns_records"

simple_filters

字典

过滤器值对的字典。

此选项在 community.dns 3.0.0 之前称为 filters。它在 community.dns 2.8.0 中从 filters 重命名为 simple_filters,旧名称仍然可用作别名,直到 community.dns 3.0.0。filters 现在用于其他用途。

默认值: {}

type

列表 / 元素=字符串

要使用其值的记录类型。

选项

  • "A" ←(默认)

  • "AAAA" ←(默认)

  • "CAA"

  • "CNAME" ←(默认)

  • "DANE"

  • "DS"

  • "HINFO"

  • "MX"

  • "NS"

  • "RP"

  • "SOA"

  • "SRV"

  • "TLSA"

  • "TXT"

默认值: ["A", "AAAA", "CNAME"]

txt_character_encoding

字符串

在 community.dns 2.5.0 中添加

是否将数值转义序列 (\xyz) 视为八进制或十进制数。这仅在 txt_transformation=quoted 时使用。

默认值在 community.dns 3.0.0 中更改为 decimal。以前,默认值曾经是 octal。值 decimalRFC 1035 兼容。

选项

  • "decimal" ← (默认)

  • "octal"

txt_transformation

字符串

确定 TXT 条目值在 API 和此模块的输入输出之间如何转换。

api 表示从此模块返回的值与 API 返回的值相同,并按传递给此模块的方式推送到 API。 为了进行幂等性检查,输入字符串将与 API 返回的字符串进行比较。 API 可能会自动转换某些值,例如拆分长值或添加引号,这可能会导致幂等性问题。

unquoted 会自动转换值,以便您可以传入未加引号的值,并且模块将返回未加引号的值。 如果您传入带引号的值,它们将被双引号引起来。

quoted 会自动转换值,以便您必须为包含空格、引号和反斜杠等字符以及长度超过 255 字节的值使用引号。 它还会确保从 API 返回的值以规范化的编码返回。

默认值 unquoted 确保您可以使用值,而无需关心如何为 DNS 正确引用。 大多数用户应该使用 unquotedquoted,而不是 api

注意: 转换代码假定值为 UTF-8 编码。 如果您需要其他编码,请使用 txt_transformation=api 并自行处理编码。

选项

  • "api"

  • "quoted"

  • "unquoted" ← (默认)

zone_id

字符串

要修改的 DNS 区域的 ID。

必须指定 zone_namezone_id 中的一个。

zone_name

别名: zone

字符串

要修改的 DNS 区域。

必须指定 zone_namezone_id 中的一个。

备注

注意

另请参阅

另请参阅

community.dns.hetzner_dns_record_set_info

在 Hetzner DNS 服务中检索记录集。

community.dns.hetzner_dns_record_info

在 Hetzner DNS 服务中检索记录。

示例

# filename must end with hetzner_dns.yaml or hetzner_dns.yml

plugin: community.dns.hetzner_dns_records
zone_name: domain.de
simple_filters:
  type:
    - TXT
filters:
  - include: >-
      not ansible_host.startswith('v=')
  - exclude: true
txt_transformation: unquoted

# You can also configure the token by putting secret value into this file,
# but this is discouraged. Use a lookup like below, or leave it away and
# set it with the HETZNER_DNS_TOKEN environment variable.
hetzner_token: >-
    {{ (lookup('community.sops.sops', 'keys/hetzner.sops.yml') | from_yaml).hetzner_dns_token }}

作者

  • Markus Bergholz (@markuman)

  • Felix Fontein (@felixfontein)

提示

每个条目类型的配置条目都有一个从低到高的优先级顺序。 例如,列表中较低的变量将覆盖较高的变量。