init
This commit is contained in:
commit
5a16d04975
6 changed files with 60 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.*.swp
|
15
README.md
Normal file
15
README.md
Normal 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
7
play.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
- name: create cloudflare dns records
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: smart
|
||||||
|
roles:
|
||||||
|
- create-records
|
14
roles/create-records/defaults/main.yml
Normal file
14
roles/create-records/defaults/main.yml
Normal 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
|
8
roles/create-records/tasks/main.yml
Normal file
8
roles/create-records/tasks/main.yml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: import cloudflare creds
|
||||||
|
include_vars:
|
||||||
|
file: "~/.cloudflare.yml"
|
||||||
|
|
||||||
|
- include_tasks: zone.yml
|
||||||
|
loop: "{{ zones }}"
|
15
roles/create-records/tasks/zone.yml
Normal file
15
roles/create-records/tasks/zone.yml
Normal 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')
|
Loading…
Reference in a new issue