community.dns.hetzner_dns_record_sets 模块 – 在 Hetzner DNS 服务中批量同步 DNS 记录集

注意

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

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

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

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

community.dns 2.0.0 中的新功能

概要

  • 在 Hetzner DNS 服务中批量同步 DNS 记录集。

  • 可以通过为该记录集指定 record_sets[].ignore=true 来忽略某些记录集。

  • 该模块允许一次设置、修改和删除多个 DNS 记录集。

  • 使用 prune 选项,还可以删除模块参数中未提及的现有记录集。这样,可以将 DNS 区域的预期状态与预期状态同步。

参数

参数

注释

bulk_operation_threshold

整数

确定何时开始使用批量操作的阈值。

默认值 2 表示如果计划了 2 个或更多同类操作,并且 API 支持此类操作的批量操作,则将使用它们。

默认值: 2

hetzner_token

别名:api_token

字符串 / 必需

Hetzner API 的令牌。

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

prune

布尔值

如果设置为 true,将删除区域中未在 record_sets 中列出的所有现有记录。

选项

  • false ←(默认)

  • true

record_sets

别名:records

列表 / 元素=字典 / 必需

区域中应存在的记录。

ignore

布尔值

如果设置为 true,则 record_sets[].value 将被忽略。

prune=true 时,这很有用,但您不想在不知道当前值的情况下删除某些条目。

选项

  • false ←(默认)

  • true

prefix

字符串

DNS 记录的前缀。

这是 record_sets[].recordzone_name 之前的部分。例如,如果要修改的记录是区域 example.comwww.example.com,则前缀为 www。如果此示例中的记录是 example.com,则前缀将为 ''(空字符串)。

必须指定 record_sets[].recordrecord_sets[].prefix 中的一个。

record

字符串

要创建或删除的完整 DNS 记录。

必须指定 record_sets[].recordrecord_sets[].prefix 中的一个。

ttl

整数

新记录的 TTL,以秒为单位。

type

字符串 / 必需

要创建或删除的 DNS 记录的类型。

选项

  • "A"

  • "AAAA"

  • "CAA"

  • "CNAME"

  • "DANE"

  • "DS"

  • "HINFO"

  • "MX"

  • "NS"

  • "RP"

  • "SOA"

  • "SRV"

  • "TLSA"

  • "TXT"

value

列表 / 元素=字符串

创建 DNS 记录时的新值。

允许 YAML 列表或多个以逗号分隔的值。

删除记录时,必须指定该记录的所有值,否则将不会被删除。

record_sets[].ignore=false 时,必须指定此项。

txt_character_encoding

字符串

在 community.dns 2.5.0 中添加。

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

默认值在 community.dns 3.0.0 中更改为 decimal。 之前,默认值是 octaldecimal 值与 RFC 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 中的一个。

属性

属性

支持

描述

action_group

操作组: community.dns.hetzner

在 community.dns 2.4.0 中添加。

module_defaults 中使用 group/community.dns.hetzner 为此模块设置默认值。

check_mode

支持: 完整

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

diff_mode

支持: 完整

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

注释

注意

  • 对于 CNAME 记录,请对值使用绝对 DNS 名称。绝对 DNS 名称以尾随句点 . 结尾,例如 foo.example.com.。如果使用不带尾随句点的相对 DNS 名称,则该值将相对于 CNAME 记录的区域。

示例

- name: Make sure some records exist and have the expected values
  community.dns.hetzner_dns_record_sets:
    zone: foo.com
    records:
      - prefix: new
        type: A
        ttl: 7200
        value:
          - 1.1.1.1
          - 2.2.2.2
      - prefix: new
        type: AAAA
        ttl: 7200
        value:
          - "::1"
      - record: foo.com
        type: TXT
        value:
          - test
    hetzner_token: access_token

- name: Synchronize DNS zone with a fixed set of records
  # If a record exists that is not mentioned here, it will be deleted
  community.dns.hetzner_dns_record_sets:
    zone_id: 23
    purge: true
    records:
      - prefix: ''
        type: A
        value: 127.0.0.1
      - prefix: ''
        type: AAAA
        value: "::1"
      - prefix: ''
        type: NS
        value:
          - ns-1.hoster.com
          - ns-2.hoster.com
          - ns-3.hoster.com
    hetzner_token: access_token

返回值

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

描述

zone_id

字符串

区域的 ID。

已返回:成功

示例: "23"

作者

  • Markus Bergholz (@markuman)

  • Felix Fontein (@felixfontein)