- AnsibleFest
- Products
- Community
- Webinars & Training
- Blog

Documentation

# nsupdate – Manage DNS records

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

## Synopsis

- Create, update and remove DNS records using DDNS updates

## Requirements

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

- dnspython

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
key_algorithm - | Choices: HMAC-MD5.SIG-ALG.REG.INT hmac-md5 ← hmac-sha1 hmac-sha224 hmac-sha256 hmac-sha384 hmac-sha512 | Specify key algorithm used by `key_secret`.
key_name - |  | Use TSIG key name to authenticate against DNS `server`
key_secret - |  | Use TSIG key secret, associated with `key_name`, to authenticate against `server`
port - added in 2.5 | Default: 53 | Use this TCP port when connecting to `server`.
protocol - added in 2.8 | Choices: tcp ← udp | Sets the transport protocol (TCP or UDP). TCP is the recommended and a more robust option.
record - / required |  | Sets the DNS record to modify. When zone is omitted this has to be absolute (ending with a dot).
server - / required |  | Apply DNS modification on this server.
state - | Choices: present ← absent | Manage DNS record.
ttl - | Default: 3600 | Sets the record TTL.
type - | Default: "A" | Sets the record type.
value - |  | Sets the record value.
zone - |  | DNS record will be modified on this `zone`. When omitted DNS will be queried to attempt finding the correct zone. Starting with Ansible 2.7 this parameter is optional.

## Examples

    - name: Add or modify ansible.example.org A to 192.168.1.1"
      nsupdate:
        key_name: "nsupdate"
        key_secret: "+bFQtBCta7j2vWkjPkAFtgA=="
        server: "10.1.1.1"
        zone: "example.org"
        record: "ansible"
        value: "192.168.1.1"

    - name: Add or modify ansible.example.org A to 192.168.1.1, 192.168.1.2 and 192.168.1.3"
      nsupdate:
        key_name: "nsupdate"
        key_secret: "+bFQtBCta7j2vWkjPkAFtgA=="
        server: "10.1.1.1"
        zone: "example.org"
        record: "ansible"
        value: ["192.168.1.1", "192.168.1.2", "192.168.1.3"]

    - name: Remove puppet.example.org CNAME
      nsupdate:
        key_name: "nsupdate"
        key_secret: "+bFQtBCta7j2vWkjPkAFtgA=="
        server: "10.1.1.1"
        zone: "example.org"
        record: "puppet"
        type: "CNAME"
        state: absent

    - name: Add 1.1.168.192.in-addr.arpa. PTR for ansible.example.org
      nsupdate:
        key_name: "nsupdate"
        key_secret: "+bFQtBCta7j2vWkjPkAFtgA=="
        server: "10.1.1.1"
        record: "1.1.168.192.in-addr.arpa."
        type: "PTR"
        value: "ansible.example.org."
        state: present

    - name: Remove 1.1.168.192.in-addr.arpa. PTR
      nsupdate:
        key_name: "nsupdate"
        key_secret: "+bFQtBCta7j2vWkjPkAFtgA=="
        server: "10.1.1.1"
        record: "1.1.168.192.in-addr.arpa."
        type: "PTR"
        state: absent

## Return Values

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

Key | Returned | Description
--- | --- | ---
changed string | success | If module has modified record
dns_rc integer | always | dnspython return code Sample: 4
dns_rc_str string | always | dnspython return code (string representation) Sample: REFUSED
record string | success | DNS record Sample: ansible
ttl integer | success | DNS record TTL Sample: 86400
type string | success | DNS record type Sample: CNAME
value list | success | DNS record value(s) Sample: 192.168.1.1
zone string | success | DNS record zone Sample: example.org.

## Status

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

### Authors

- Loic Blot (@nerzhul)

Hint

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