community.dns.hosttech_dns_record_set – Add or delete record sets in Hosttech DNS service

Note

This plugin is part of the community.dns collection (version 2.0.3).

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.hosttech_dns_record_set.

New in version 2.0.0: of community.dns

Synopsis

  • Creates and deletes DNS record sets in Hosttech DNS service.

  • This module replaces hosttech_dns_record from community.dns before 2.0.0.

Requirements

The below requirements are needed on the host that executes this module.

  • lxml

Parameters

Parameter Choices/Defaults Comments
hosttech_password
string
The password for the Hosttech API user.
If provided, hosttech_password must also be provided.
Mutually exclusive with hosttech_token.
hosttech_token
string
added in 0.2.0 of community.dns
The password for the Hosttech API user.
Mutually exclusive with hosttech_username and hosttech_password.
Since community.dns 1.2.0, the alias api_token can be used.

aliases: api_token
hosttech_username
string
The username for the Hosttech API user.
If provided, hosttech_password must also be provided.
Mutually exclusive with hosttech_token.
on_existing
string
    Choices:
  • replace ←
  • keep_and_fail
  • keep_and_warn
  • keep
This option defines the behavior if the record set already exists, but differs from the specified record set. For this comparison, value and ttl are used for all records of type type matching the prefix resp. record.
If set to replace, the record will be updated (state=present) or removed (state=absent). This is the old overwrite=true behavior.
If set to keep_and_fail, the module will fail and not modify the records. This is the old overwrite=false behavior if state=present.
If set to keep_and_warn, the module will warn and not modify the records.
If set to keep, the module will not modify the records. This is the old overwrite=false behavior if state=absent.
If state=absent and the value is not replace, value must be specified.
prefix
string
added in 0.2.0 of community.dns
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.
state
string / required
    Choices:
  • present
  • absent
Specifies the state of the resource record.
ttl
integer
Default:
3600
The TTL to give the new record, in seconds.
Will be ignored if state=absent and on_existing=replace.
txt_transformation
string
    Choices:
  • api
  • quoted
  • unquoted ←
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.
type
string / required
    Choices:
  • A
  • AAAA
  • CAA
  • CNAME
  • MX
  • NS
  • PTR
  • SPF
  • SRV
  • TXT
The type of DNS record to create or delete.
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 state=present or when on_existing is not replace.
Will be ignored if state=absent and on_existing=replace.
zone_id
integer
added in 0.2.0 of community.dns
The ID of the DNS zone to modify.
Exactly one of zone_name and zone_id must be specified.
zone_name
string
The DNS zone to modify.
Exactly one of zone_name and zone_id must be specified.

aliases: zone

Notes

Note

  • Supports check_mode and --diff.

Examples

- name: Add new.foo.com as an A record with 3 IPs
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.com
    record: new.foo.com
    type: A
    ttl: 7200
    value: 1.1.1.1,2.2.2.2,3.3.3.3
    hosttech_token: access_token

- name: Update new.foo.com as an A record with a list of 3 IPs
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.com
    record: new.foo.com
    type: A
    ttl: 7200
    value:
      - 1.1.1.1
      - 2.2.2.2
      - 3.3.3.3
    hosttech_token: access_token

- name: Retrieve the details for new.foo.com
  community.dns.hosttech_dns_record_set_info:
    zone_name: foo.com
    record: new.foo.com
    type: A
    hosttech_username: foo
    hosttech_password: bar
  register: rec

- name: Delete new.foo.com A record using the results from the facts retrieval command
  community.dns.hosttech_dns_record_set:
    state: absent
    zone_name: foo.com
    record: "{{ rec.set.record }}"
    ttl: "{{ rec.set.ttl }}"
    type: "{{ rec.set.type }}"
    value: "{{ rec.set.value }}"
    hosttech_username: foo
    hosttech_password: bar

- name: Add an AAAA record
  # Note that because there are colons in the value that the IPv6 address must be quoted!
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.com
    record: localhost.foo.com
    type: AAAA
    ttl: 7200
    value: "::1"
    hosttech_token: access_token

- name: Add a TXT record
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.com
    record: localhost.foo.com
    type: TXT
    ttl: 7200
    value: 'bar'
    hosttech_username: foo
    hosttech_password: bar

- name: Remove the TXT record
  community.dns.hosttech_dns_record_set:
    state: absent
    zone_name: foo.com
    record: localhost.foo.com
    type: TXT
    ttl: 7200
    value: 'bar'
    hosttech_username: foo
    hosttech_password: bar

- name: Add a CAA record
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.com
    record: foo.com
    type: CAA
    ttl: 3600
    value:
    - "128 issue letsencrypt.org"
    - "128 iodef mailto:[email protected]"
    hosttech_token: access_token

- name: Add an MX record
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.com
    record: foo.com
    type: MX
    ttl: 3600
    value:
    - "10 mail.foo.com"
    hosttech_token: access_token

- name: Add a CNAME record
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: bla.foo.com
    record: foo.com
    type: CNAME
    ttl: 3600
    value:
    - foo.foo.com
    hosttech_username: foo
    hosttech_password: bar

- name: Add a PTR record
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.foo.com
    record: foo.com
    type: PTR
    ttl: 3600
    value:
    - foo.foo.com
    hosttech_token: access_token

- name: Add an SPF record
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.com
    record: foo.com
    type: SPF
    ttl: 3600
    value:
    - "v=spf1 a mx ~all"
    hosttech_username: foo
    hosttech_password: bar

- name: Add a PTR record
  community.dns.hosttech_dns_record_set:
    state: present
    zone_name: foo.com
    record: foo.com
    type: PTR
    ttl: 3600
    value:
    - "10 100 3333 service.foo.com"
    hosttech_token: access_token

Return Values

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

Key Returned Description
zone_id
integer
added in 0.2.0 of community.dns
success
The ID of the zone.

Sample:
23


Authors

  • Felix Fontein (@felixfontein)