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 记录创建清单。

参数

参数

注释

过滤器

列表 / 元素=字典

在 community.dns 3.0.0 中添加

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

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

排除

字符串

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

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

包括

字符串

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

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

hetzner_token

别名:api_token

字符串 / 必需

Hetzner API 的令牌。

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

配置

插件

字符串 / 必需

此插件的名称。 为了使此插件识别其自身,应始终设置为 community.dns.hetzner_dns_records

选项

  • "community.dns.hetzner_dns_records"

简单过滤器

字典

过滤器值对的字典。

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

默认值: {}

类型

列表 / 元素=字符串

要使用其值的记录类型。

选项

  • "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

字符串

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

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)

提示

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