如何使用Ansible仅在DigitalOcean DNS中添加记录?
如何使用Ansible将A记录添加到现有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
---
- 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