hetzner.hcloud.zone module – Create and manage DNS Zone on the Hetzner Cloud.
Note
This module is part of the hetzner.hcloud collection (version 5.4.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 hetzner.hcloud
.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: hetzner.hcloud.zone
.
Synopsis
Create, update and delete DNS Zone on the Hetzner Cloud.
See the Zones API documentation for more details.
Experimental: DNS API is in beta, breaking changes may occur within minor releases. See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for more details.
Aliases: hcloud_zone
Requirements
The below requirements are needed on the host that executes this module.
python-dateutil >= 2.7.5
requests >=2.20
Parameters
Parameter |
Comments |
---|---|
The API Endpoint for the Hetzner Cloud. You can also set this option by using the Default: |
|
The API Token for the Hetzner Cloud. You can also set this option by using the |
|
Protect the Zone from deletion. Choices:
|
|
ID of the Zone to manage. Only required if no Zone |
|
User-defined key-value pairs. |
|
Mode of the Zone. Required if the Zone does not exist. Choices:
|
|
Name of the Zone to manage. Only required if no Zone All names with well-known public suffixes (e.g. .de, .com, .co.uk) are supported. Subdomains are not supported. The name must be in lower case and must not end with a dot. Internationalized domain names must be transcribed to Punycode representation with ACE prefix, e.g. xn--mnchen-3ya.de (münchen.de). |
|
Primary nameservers of the Zone. Only applicable for Zones with |
|
Public IPv4 or IPv6 address of the primary nameserver. |
|
Port of the primary nameserver. |
|
Transaction signature (TSIG) algorithm used to generate the TSIG key. |
|
Transaction signature (TSIG) key. |
|
State of the Zone.
Choices:
|
|
TTL of the Zone. |
|
Zone file to import. Optional if Required if |
See Also
See also
- Documentation for Hetzner Cloud API
Complete reference for the Hetzner Cloud API.
Examples
- name: Create a primary Zone
hetzner.hcloud.zone:
name: example.com
mode: primary
ttl: 10800
labels:
key: value
state: present
- name: Create a primary Zone using a zonefile
hetzner.hcloud.zone:
name: example.com
mode: primary
zonefile: |
$ORIGIN example.com.
$TTL 3600
@ 300 IN CAA 0 issue "letsencrypt.org"
@ 600 IN A 192.168.254.2
@ 600 IN A 192.168.254.3
@ IN AAAA fdd0:367a:0cb7::2
@ IN AAAA fdd0:367a:0cb7::3
www IN CNAME example.com.
blog IN CNAME example.com.
anything IN TXT "some value"
state: present
- name: Create a primary Zone with Internationalized Domain Name (IDN)
hetzner.hcloud.zone:
# Leverage Python's encoding.idna module https://docs.python.org/3/library/codecs.html#module-encodings.idna
name: "{{ 'këks-🍪-example.com'.encode('idna') }}"
mode: primary
state: present
- name: Create a secondary Zone
hetzner.hcloud.zone:
name: example.com
mode: secondary
primary_nameservers:
- address: 203.0.113.1
port: 53
labels:
key: value
state: present
- name: Delete a Zone
hetzner.hcloud.zone:
name: example.com
state: absent
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
---|---|
Zone instance. Returned: always |
|
Authoritative nameservers of the Zone. Returned: always |
|
Authoritative Hetzner nameservers assigned to the Zone. Returned: always Sample: |
|
Authoritative nameservers delegated to the parent DNS zone. Returned: always Sample: |
|
Point in time when the DNS zone delegation was last checked (in ISO-8601 format). Returned: always Sample: |
|
Status of the delegation. Returned: always Sample: |
|
Protect the Zone from deletion. Returned: always Sample: |
|
ID of the Zone. Returned: always Sample: |
|
User-defined labels (key-value pairs) Returned: always Sample: |
|
Mode of the Zone. Returned: always Sample: |
|
Name of the Zone. Returned: always Sample: |
|
Primary nameservers of the Zone. Returned: always |
|
Public IPv4 or IPv6 address of the primary nameserver. Returned: always Sample: |
|
Port of the primary nameserver. Returned: always Sample: |
|
Transaction signature (TSIG) algorithm used to generate the TSIG key. Returned: always Sample: |
|
Transaction signature (TSIG) key. Returned: always |
|
Number of Resource Records (RR) within the Zone. Returned: always Sample: |
|
Registrar of the Zone. Returned: always Sample: |
|
Status of the Zone. Returned: always Sample: |
|
TTL of the Zone. Returned: always Sample: |