Search code examples
dnsansible

Ansible "nsupdate" module adding zone to record value


I'm trying to use the nsupdate module to update records but I'm having mixed success. While the records do get added, I'm getting the zone appended at the end of the value.

For example: I want a cname called mycname.domain1.com pointed to shawarmas.domain2.com. After I run the playbook I end up with an entry that looks like this:

mycname.domain1.com. 5 IN CNAME shawarmas.domain2.com.domain1.com

Is there something wrong in my playbook that is causing this?

Playbook:

---
- hosts: myserver

  tasks:
  - debug:
      msg: "{{ value }}"
  - name: "Add record to escapia zone"
    nsupdate:
      key_name: "ddns"
      key_secret: "******"
      server: "dnsserver"
      record: "{{ record }}"
      type: "{{ type }}"
      value: "{{ value }}"
      ttl: 5

Run Command:

ansible-playbook -i inv -e "record=record-test.example.com. 
type=CNAME value=test.different.com" exampledns.yml -v

Ansible output:

changed: [myserver] => changed=true
  dns_rc: 0
  dns_rc_str: NOERROR
  record:
    record: record-test.example.com.
    ttl: 5
    type: CNAME
    value:
    - test.different.com
    zone: example.com.

DNS result:

;; ANSWER SECTION:
record-test.example.com. 5     IN      CNAME   test.different.com.example.com

Solution

  • Usually, you need to append a . to the end of the value to make it full qualified. Without the . it is unqualified and appending the zone.

    Try with:

    ansible-playbook -i inv -e "record=record-test.example.com. type=CNAME value=test.different.com." exampledns.yml -v