如何使用Ansible仅在DigitalOcean DNS中添加记录?

如何使用Ansible仅在DigitalOcean DNS中添加记录?,ansible,digital-ocean,Ansible,Digital Ocean,如何使用Ansible将A记录添加到现有DigitalOcean DNS域 我尝试了以下方法: --- - hosts: localhost connection: local gather_facts: no tasks: - digital_ocean_domain: state: present name: my.example.com - digital_ocean_domain: state: presen

如何使用Ansible将A记录添加到现有DigitalOcean DNS域

我尝试了以下方法:

---
- hosts: localhost
  connection: local
  gather_facts: no

  tasks:
    - digital_ocean_domain:
        state: present
        name: my.example.com

    - digital_ocean_domain:
        state: present
        name: test1.my.example.com
        ip: 127.0.0.1
但是第二个任务沿着
test1.my.example.com
的a记录添加了一个完整的域
test1.my.example.com
(带有NS记录)

我只想将
test1.my.example.com
的A记录添加到第一个任务中创建的域中


原因很明显,我不希望每个主机都有一个单独的域。

没有这样的ansible模块(虽然有一个通过PR,经过三次repo重命名,但被ansible团队关闭),但有一个可以跟踪的模块

同时,如果有这么多yaml困扰您,您可以通过将其打包成“playbook local”模块来实现这一点

- uri:
    url: "https://api.digitalocean.com/v2/domains/{{ dns_domain }}/records"
    headers:
      accept: application/json
      authorization: Bearer {{ oauth2_token }}
    return_content: yes
  register: domain_records_resp

- when: domain_host not in (domain_records_resp.domain_records | map(attribute="name") | list)
  uri:
    method: POST
    url: "https://api.digitalocean.com/v2/domains/{{ dns_domain }}/records"
    headers:
      authorization: Bearer {{ oauth2_token }}
    body: '{{ create_record | to_json }}'
    body_format: json
    return_content: yes
  vars:
    create_record:
        data: 127.0.0.1
        flags: null
        name: '{{ domain_host }}'
        port: null
        priority: null
        tag: null
        ttl: 1800
        type: A
        weight: null

community.digitalocean.digitalocean\u domain\u记录
已被收集到

您可以通过以下方式安装它:

ansible-galaxy collection install community.digitalocean
给定一个现有域(具有NS和SOA记录),您应该能够添加如下特定记录:

- name: Create Droplet
  community.digitalocean.droplet: {...}
  register: dx

- name: Create DNS Entry for Droplet
  community.digitalocean.digital_ocean_domain_record:
      state: present
      example: "{{ domain }}"
      type: A
      name: "www"
      data: "{{ dx.data.ip_address }}"
此示例将新水滴的公共IP地址注册为
www.{{domain}
,其中
domain=example.com