This commit is contained in:
Josh Lay 2020-08-22 01:45:15 -05:00
commit 5a16d04975
6 changed files with 60 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.*.swp

15
README.md Normal file
View file

@ -0,0 +1,15 @@
# cfdns
Sample Ansible role to create CloudFlare DNS records
## Requirements
1) See `roles/defaults/vars.yml` for sample DNS zone entry definitions -- change/remove these as desired
2) Your CloudFlare email address and API key must be stored in `~/.cloudflare.yml` like so for authentication:
```
---
cf_email: you@domain.com
cf_token: abcdef123456
```
If this is a shared system, `chmod -v 0600 ~/.cloudflare.yml` once created to avoid potentially leaking credentials.

7
play.yml Normal file
View file

@ -0,0 +1,7 @@
---
- name: create cloudflare dns records
hosts: localhost
connection: local
gather_facts: smart
roles:
- create-records

View file

@ -0,0 +1,14 @@
---
zones:
- name: jlay.dev
state: present
records:
- name: git.ry1
value: "107.181.235.67"
type: A
- name: ry1
value: "107.181.235.66"
type: A
- name: ry2
value: "107.181.235.74"
type: A

View file

@ -0,0 +1,8 @@
---
- name: import cloudflare creds
include_vars:
file: "~/.cloudflare.yml"
- include_tasks: zone.yml
loop: "{{ zones }}"

View file

@ -0,0 +1,15 @@
---
- name: create records
cloudflare_dns:
zone: "{{ item.name }}"
record: "{{ record.name }}"
value: "{{ record.value }}"
type: "{{ record.type }}"
solo: yes
account_email: "{{ cf_email }}"
account_api_token: "{{ cf_token }}"
loop: "{{ item.records }}"
loop_control:
loop_var: record
when: (not item.state == 'absent')