Ansible:在Azure中更新私有DNS区域时{unknown type long}

时间:2020-11-03 22:51:37

标签: azure ansible azure-dns

我尝试在Azure的专用DNS中更新区域的序列号。为此,我运行Ansible代码:

- name: Increment DNS serial
  azure_rm_dnsrecordset:
    resource_group: "{{ my_rg }}"
    zone_name: "{{ my_domain }}"
    relative_name: "@"
    record_type: "SOA"
    records:
      - serial_number: "{{ new_serial }}"
  register: dns_update
  until: dns_update is succeeded      

但是Ansible失败,并出现类型不匹配错误:

The full traceback is:
fatal: [localhost]: FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            ...
            "record_mode": "purge",
            "record_type": "SOA",
            "records": [
                {
                    "serial_number": "2"
                }
            ],
            "relative_name": "@",
            "resource_group": "my-rg",
            "state": "present",
            ...
        }
    },
    "msg": "implementation error: unknown type long requested for serial_number"
}

该错误消息有点令人困惑:我应该将其理解为Ansible,尝试在Azure API需要字符串的同时发送2,反之亦然,Azure期望很久但Ansible发送字符串吗?

我应该使用哪种类型转换?

除了上述问题之外,这是更新序列的正确方法吗?

1 个答案:

答案 0 :(得分:0)

我通过从azure_rm_dnsrecordset Ansible模块切换到az调用来绕过此操作,替换模板如下:

- name: Increment DNS serial
  command: >
    az network private-dns record-set soa update
    --resource-group "{{ my_rg }}"
    --zone-name "{{ my_domain }}"
    --serial-number "{{ new_serial }}"

这至少被Azure接受。

它不会为我更新序列号。我可以更新其他SOA参数,例如刷新时间或最小TTL,但不能更新序列号。但这是另一个问题。