community.dns.infomaniak_dns_record module – Add or delete a single record in Infomaniak DNS service

Note

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

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

New in community.dns 4.1.0

Synopsis

  • Creates and deletes single DNS records in Infomaniak DNS service.

  • If you do not want to add/remove values, but replace values, you will be interested in modifying a record set and not a single record. This is in particular important when working with CNAME and SOA records. Use the community.dns.infomaniak_dns_record_set module for working with record sets.

  • Records are matched by prefix / record name and value.

Parameters

Parameter

Comments

infomaniak_token

aliases: api_token

string / required

The token for Infomaniak’s DNS API.

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.

state

string / required

Specifies the state of the resource record.

Choices:

  • "present"

  • "absent"

ttl

integer

The TTL to give the new record, in seconds.

This is not used for record deletion.

Default: 300

txt_character_encoding

string

Whether to treat numeric escape sequences (\xyz) as octal or decimal numbers. This is only used when txt_transformation=quoted.

The default changed to decimal in community.dns 3.0.0. Before, the default used to be octal. The value decimal is compatible to RFC 1035.

Choices:

  • "decimal" ← (default)

  • "octal"

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)

type

string / required

The type of DNS record to create or delete.

Choices:

  • "A"

  • "AAAA"

  • "CAA"

  • "CNAME"

  • "DNAME"

  • "DNSKEY"

  • "DS"

  • "MX"

  • "NS"

  • "PTR"

  • "SMIMEA"

  • "SOA"

  • "SRV"

  • "SSHFP"

  • "TLSA"

  • "TXT"

value

string / required

The new value when creating a DNS record.

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

zone_name

aliases: zone, zone_id

string / required

The DNS zone to modify.

Note that the API does not allow to query by zone ID. Therefore, zone_id is an alias of zone_name for compatibility with modules and plugins for other providers.

Attributes

Attribute

Support

Description

action_group

Action group: community.dns.infomaniak

Use group/community.dns.infomaniak in module_defaults to set defaults for this module.

check_mode

Support: full

Can run in check_mode and return changed status prediction without modifying target.

diff_mode

Support: full

Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode.

idempotent

Support: full

When run twice in a row outside check mode, with the same arguments, the second invocation indicates no change.

This assumes that the system controlled/queried by the module has not changed in a relevant way.

Notes

Note

  • For CNAME records, use absolute DNS names for values. Absolute DNS names end with a trailing period ., for example foo.example.com.. If you use a relative DNS name, with no trailing period, the value will be relative to the zone of the CNAME record.

See Also

See also

Supported DNS records

More information on supported DNS record types.

Examples

- name: Add a new.foo.com A record
  community.dns.infomaniak_dns_record:
    state: present
    zone: foo.com
    record: new.foo.com
    type: A
    ttl: 7200
    value: 1.1.1.1
    infomaniak_token: access_token

- name: Add A record using prefix for www.example.com
  community.dns.infomaniak_dns_record:
    state: present
    zone_name: example.com
    prefix: www
    type: A
    value: 198.51.100.25
    infomaniak_token: "{{ lookup('env', 'INFOMANIAK_DNS_TOKEN') }}"

- name: Remove a new.foo.com A record
  community.dns.infomaniak_dns_record:
    state: absent
    zone_name: foo.com
    record: new.foo.com
    type: A
    ttl: 7200
    value: 2.2.2.2
    infomaniak_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: "foo.com"

Authors

  • Felix Fontein (@felixfontein)