community.dns.hetzner_dns_record_sets module – Bulk synchronize DNS record sets in Hetzner DNS service

Note

This module is part of the community.dns collection (version 2.2.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install community.dns.

To use it in a playbook, specify: community.dns.hetzner_dns_record_sets.

New in version 2.0.0: of community.dns

Synopsis

  • Bulk synchronize DNS record sets in Hetzner DNS service.

  • It is possible to ignore certain record sets by specifying ignore: true for that record set.

  • The module allows to set, modify and delete multiple DNS record sets at once.

  • With the purge option, it is also possible to delete existing record sets that are not mentioned in the module parameters. With this, it is possible to synchronize the expected state of a DNS zone with the expected state.

Parameters

Parameter

Comments

bulk_operation_threshold

integer

Determines the threshold from when on bulk operations are used.

The default value 2 means that if 2 or more operations of a kind are planned, and the API supports bulk operations for this kind of operation, they will be used.

Default: 2

hetzner_token

aliases: api_token

string / required

The token for the Hetzner API.

If not provided, will be read from the environment variable HETZNER_DNS_TOKEN.

prune

boolean

If set to true, will remove all existing records in the zone that are not listed in records.

Choices:

  • no ← (default)

  • yes

record_sets

aliases: records

list / elements=dictionary / required

The records that should be present in the zone.

ignore

boolean

If set to true, value will be ignored.

This is useful when prune=true, but you do not want certain entries to be removed without having to know their current value.

Choices:

  • no ← (default)

  • yes

prefix

string

The prefix of the DNS record.

This is the part of record before zone_name. For example, if the record to be modified is www.example.com for the zone example.com, the prefix is www. If the record in this example would be example.com, the prefix would be '' (empty string).

Exactly one of record and prefix must be specified.

record

string

The full DNS record to create or delete.

Exactly one of record and prefix must be specified.

ttl

integer

The TTL to give the new record, in seconds.

type

string / required

The type of DNS record to create or delete.

Choices:

  • A

  • AAAA

  • CAA

  • CNAME

  • DANE

  • DS

  • HINFO

  • MX

  • NS

  • RP

  • SOA

  • SRV

  • TLSA

  • TXT

value

list / elements=string

The new value when creating a DNS record.

YAML lists or multiple comma-spaced values are allowed.

When deleting a record all values for the record must be specified or it will not be deleted.

Must be specified if ignore=false.

txt_transformation

string

Determines how TXT entry values are converted between the API and this module’s input and output.

The value api means that values are returned from this module as they are returned from the API, and pushed to the API as they have been passed to this module. For idempotency checks, the input string will be compared to the strings returned by the API. The API might automatically transform some values, like splitting long values or adding quotes, which can cause problems with idempotency.

The value unquoted automatically transforms values so that you can pass in unquoted values, and the module will return unquoted values. If you pass in quoted values, they will be double-quoted.

The value quoted automatically transforms values so that you must use quoting for values that contain spaces, characters such as quotation marks and backslashes, and that are longer than 255 bytes. It also makes sure to return values from the API in a normalized encoding.

The default value, unquoted, ensures that you can work with values without having to care about how to correctly quote for DNS. Most users should use one of unquoted or quoted, but not api.

Note: the conversion code assumes UTF-8 encoding for values. If you need another encoding use txt_transformation=api and handle the encoding yourself.

Choices:

  • api

  • quoted

  • unquoted ← (default)

zone_id

string

The ID of the DNS zone to modify.

Exactly one of zone_name and zone_id must be specified.

zone_name

aliases: zone

string

The DNS zone to modify.

Exactly one of zone_name and zone_id must be specified.

Notes

Note

  • Supports check_mode and --diff.

Examples

- 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

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

zone_id

string

The ID of the zone.

Returned: success

Sample: 23

Authors

  • Markus Bergholz (@markuman)

  • Felix Fontein (@felixfontein)