# exo_dns_record – Manages DNS records on Exoscale DNS

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Return Values
- Status

## Synopsis

- Create, update and delete records.

## Requirements

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

- python >= 2.6

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
api_key string |  | API key of the Exoscale DNS API. Since 2.4, the ENV variable `CLOUDSTACK_KEY` is used as default, when defined.
api_region string | Default: "cloudstack" | Name of the ini section in the `cloustack.ini` file. Since 2.4, the ENV variable `CLOUDSTACK_REGION` is used as default, when defined.
api_secret string |  | Secret key of the Exoscale DNS API. Since 2.4, the ENV variable `CLOUDSTACK_SECRET` is used as default, when defined.
api_timeout integer | Default: 10 | HTTP timeout to Exoscale DNS API. Since 2.4, the ENV variable `CLOUDSTACK_TIMEOUT` is used as default, when defined.
content string |  | Content of the record. Required if `state=present` or `multiple=yes`. aliases: value, address
domain string / required |  | Domain the record is related to.

multiple
boolean

Choices:
- no ←
- yes

Whether there are more than one records with similar name and record_type.
Only allowed for a few record types, e.g. `record_type=A`, `record_type=NS` or `record_type=MX`.
content will not be updated, instead it is used as a key to find existing records.

name string | Default: "" | Name of the record.
prio integer |  | Priority of the record. aliases: priority

record_type
string

Choices:
- A ←
- ALIAS
- CNAME
- MX
- SPF
- URL
- TXT
- NS
- SRV
- NAPTR
- PTR
- AAAA
- SSHFP
- HINFO
- POOL

Type of the record.
aliases: rtype, type

state
string

Choices:
- present ←
- absent

State of the record.

ttl integer | Default: 3600 | TTL of the record in seconds.

validate_certs
boolean

Choices:
- no
- yes ←

Validate SSL certs of the Exoscale DNS API.

## Notes

Note

- As Exoscale DNS uses the same API key and secret for all services, we reuse the config used for Exscale Compute based on CloudStack. The config is read from several locations, in the following order. The `CLOUDSTACK_KEY`, `CLOUDSTACK_SECRET` environment variables. A `CLOUDSTACK_CONFIG` environment variable pointing to an `.ini` file, A `cloudstack.ini` file in the current working directory. A `.cloudstack.ini` file in the users home directory. Optionally multiple credentials and endpoints can be specified using ini sections in `cloudstack.ini`. Use the argument `api_region` to select the section name, default section is `cloudstack`.
- This module does not support multiple A records and will complain properly if you try.
- More information Exoscale DNS can be found on https://community.exoscale.ch/documentation/dns/.
- This module supports check mode and diff.

## Examples

    - name: Create or update an A record
      exo_dns_record:
        name: web-vm-1
        domain: example.com
        content: 1.2.3.4

    - name: Update an existing A record with a new IP
      exo_dns_record:
        name: web-vm-1
        domain: example.com
        content: 1.2.3.5

    - name: Create another A record with same name
      exo_dns_record:
        name: web-vm-1
        domain: example.com
        content: 1.2.3.6
        multiple: yes

    - name: Create or update a CNAME record
      exo_dns_record:
        name: www
        domain: example.com
        record_type: CNAME
        content: web-vm-1

    - name: Create another MX record
      exo_dns_record:
        domain: example.com
        record_type: MX
        content: mx1.example.com
        prio: 10
        multiple: yes

    - name: Delete one MX record out of multiple
      exo_dns_record:
        domain: example.com
        record_type: MX
        content: mx1.example.com
        multiple: yes
        state: absent

    - name: Remove a single A record
      exo_dns_record:
        name: www
        domain: example.com
        state: absent

## Return Values

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

Key | Returned | Description
--- | --- | ---
exo_dns_record complex | success | API record results
| content string | success | value of the record Sample: 1.2.3.4
| created_at string | success | When the record was created Sample: 2016-08-12T15:24:23.989Z
| domain string | success | Name of the domain Sample: example.com
| domain_id integer | success | ID of the domain Sample: 254324
| id integer | success | ID of the record Sample: 254324
| name string | success | name of the record Sample: www
| parent_id integer | success | ID of the parent
| prio integer | success | Priority of the record Sample: 10
| record_type string | success | Priority of the record Sample: A
| system_record boolean | success | Whether the record is a system record or not
| ttl integer | success | Time to live of the record Sample: 3600
| updated_at string | success | When the record was updated Sample: 2016-08-12T15:24:23.989Z

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]
- This module is maintained by the Ansible Community. [community]

### Authors

- René Moser (@resmo)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.