community.general.cloudflare_dns – Manage Cloudflare DNS records
Note
This plugin is part of the community.general collection (version 3.8.3).
You might already have this collection installed if you are using the ansible
package.
It is not included in ansible-core
.
To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install community.general
.
To use it in a playbook, specify: community.general.cloudflare_dns
.
Synopsis
Manages dns records via the Cloudflare API, see the docs: https://api.cloudflare.com/.
Requirements
The below requirements are needed on the host that executes this module.
python >= 2.6
Parameters
Parameter |
Comments |
---|---|
Account API key. Required for api keys authentication. You can obtain your API key from the bottom of the Cloudflare ‘My Account’ page, found here: https://dash.cloudflare.com/. |
|
Account email. Required for API keys authentication. |
|
Algorithm number. Required for |
|
API token. Required for api token authentication. You can obtain your API token from the bottom of the Cloudflare ‘My Account’ page, found here: https://dash.cloudflare.com/. Can be specified in |
|
Certificate usage number. Required for Choices:
|
|
Hash type number. Required for Choices:
|
|
DNSSEC key tag. Needed for |
|
Service port. Required for |
|
Record priority. Required for Default: 1 |
|
Service protocol. Required for Common values are TCP and UDP. Before Ansible 2.6 only TCP and UDP were available. |
|
Proxy through Cloudflare network or just use DNS. Choices:
|
|
Record to add. Required if Default is Default: “@” |
|
Selector number. Required for Choices:
|
|
Record service. Required for type=SRV. |
|
Whether the record should be the only one for that record type and record name. Only use with This will delete all other records with the same record name and type. Choices:
|
|
Whether the record(s) should exist or not. Choices:
|
|
Timeout for Cloudflare API calls. Default: 30 |
|
The TTL to give the new record. Must be between 120 and 2,147,483,647 seconds, or 1 for automatic. Default: 1 |
|
The type of DNS record to create. Required if
Choices:
|
|
The record value. Required for |
|
Service weight. Required for Default: 1 |
|
The name of the Zone to work with (e.g. “example.com”). The Zone must already exist. |
Examples
- name: Create a test.example.net A record to point to 127.0.0.1
community.general.cloudflare_dns:
zone: example.net
record: test
type: A
value: 127.0.0.1
account_email: [email protected]
account_api_key: dummyapitoken
register: record
- name: Create a record using api token
community.general.cloudflare_dns:
zone: example.net
record: test
type: A
value: 127.0.0.1
api_token: dummyapitoken
- name: Create a example.net CNAME record to example.com
community.general.cloudflare_dns:
zone: example.net
type: CNAME
value: example.com
account_email: [email protected]
account_api_key: dummyapitoken
state: present
- name: Change its TTL
community.general.cloudflare_dns:
zone: example.net
type: CNAME
value: example.com
ttl: 600
account_email: [email protected]
account_api_key: dummyapitoken
state: present
- name: Delete the record
community.general.cloudflare_dns:
zone: example.net
type: CNAME
value: example.com
account_email: [email protected]
account_api_key: dummyapitoken
state: absent
- name: Create a example.net CNAME record to example.com and proxy through Cloudflare's network
community.general.cloudflare_dns:
zone: example.net
type: CNAME
value: example.com
proxied: yes
account_email: [email protected]
account_api_key: dummyapitoken
state: present
# This deletes all other TXT records named "test.example.net"
- name: Create TXT record "test.example.net" with value "unique value"
community.general.cloudflare_dns:
domain: example.net
record: test
type: TXT
value: unique value
solo: true
account_email: [email protected]
account_api_key: dummyapitoken
state: present
- name: Create an SRV record _foo._tcp.example.net
community.general.cloudflare_dns:
domain: example.net
service: foo
proto: tcp
port: 3500
priority: 10
weight: 20
type: SRV
value: fooserver.example.net
- name: Create a SSHFP record login.example.com
community.general.cloudflare_dns:
zone: example.com
record: login
type: SSHFP
algorithm: 4
hash_type: 2
value: 9dc1d6742696d2f51ca1f1a78b3d16a840f7d111eb9454239e70db31363f33e1
- name: Create a TLSA record _25._tcp.mail.example.com
community.general.cloudflare_dns:
zone: example.com
record: mail
port: 25
proto: tcp
type: TLSA
cert_usage: 3
selector: 1
hash_type: 1
value: 6b76d034492b493e15a7376fccd08e63befdad0edab8e442562f532338364bf3
- name: Create a DS record for subdomain.example.com
community.general.cloudflare_dns:
zone: example.com
record: subdomain
type: DS
key_tag: 5464
algorithm: 8
hash_type: 2
value: B4EB5AC4467D2DFB3BAF9FB9961DC1B6FED54A58CDFAA3E465081EC86F89BFAB
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
---|---|
A dictionary containing the record data. Returned: success, except on record deletion |
|
The record content (details depend on record type). Returned: success Sample: “192.0.2.91” |
|
The record creation date. Returned: success Sample: “2016-03-25T19:09:42.516553Z” |
|
Additional record data. Returned: success, if type is SRV, DS, SSHFP or TLSA Sample: {“name”: “jabber”, “port”: 8080, “priority”: 10, “proto”: “_tcp”, “service”: “_xmpp”, “target”: “jabberhost.sample.com”, “weight”: 5} |
|
The record ID. Returned: success Sample: “f9efb0549e96abcb750de63b38c9576e” |
|
No documentation available. Returned: success Sample: false |
|
No documentation available. Returned: success Sample: {“auto_added”: false} |
|
Record modification date. Returned: success Sample: “2016-03-25T19:09:42.516553Z” |
|
The record name as FQDN (including _service and _proto for SRV). Returned: success Sample: “www.sample.com” |
|
Priority of the MX record. Returned: success, if type is MX Sample: 10 |
|
Whether this record can be proxied through Cloudflare. Returned: success Sample: false |
|
Whether the record is proxied through Cloudflare. Returned: success Sample: false |
|
The time-to-live for the record. Returned: success Sample: 300 |
|
The record type. Returned: success Sample: “A” |
|
The ID of the zone containing the record. Returned: success Sample: “abcede0bf9f0066f94029d2e6b73856a” |
|
The name of the zone containing the record. Returned: success Sample: “sample.com” |
Authors
Michael Gruener (@mgruener)