W3cubDocs

/Ansible

gcdns_record - Creates or removes resource records in Google Cloud DNS

New in version 2.2.

Synopsis

Creates or removes resource records in Google Cloud DNS.

Requirements (on host that executes module)

  • python >= 2.6
  • apache-libcloud >= 0.19.0

Options

parameter required default choices comments
credentials_file
no
The path to the JSON file associated with the service account email.
overwrite
no
  • True
  • False
Whether an attempt to overwrite an existing record should succeed or fail. The behavior of this option depends on state.
If state is present and overwrite is True, this module will replace an existing resource record of the same name with the provided record_data. If state is present and overwrite is False, this module will fail if there is an existing resource record with the same name and type, but different resource data.
If state is absent and overwrite is True, this module will remove the given resource record unconditionally. If state is absent and overwrite is False, this module will fail if the provided record_data do not match exactly with the existing resource record's record_data.
pem_file
no
The path to the PEM file associated with the service account email.
This option is deprecated and may be removed in a future release. Use credentials_file instead.
project_id
no
The Google Cloud Platform project ID to use.
record
yes
The fully-qualified domain name of the resource record.
aliases: name
record_data
no
The record_data to use for the resource record.
record_data must be specified if state is present or overwrite is True, or the module will fail.
Valid record_data vary based on the record's type. In addition, resource records that contain a DNS domain name in the value field (e.g., CNAME, PTR, SRV, .etc) MUST include a trailing dot in the value.
Individual string record_data for TXT records must be enclosed in double quotes.
For resource records that have the same name but different record_data (e.g., multiple A records), they must be defined as multiple list entries in a single record.
aliases: value
service_account_email
no
The e-mail address for a service account with access to Google Cloud DNS.
state
no present
  • present
  • absent
Whether the given resource record should or should not be present.
ttl
no 300
The amount of time in seconds that a resource record will remain cached by a caching resolver.
type
yes
  • A
  • AAAA
  • CNAME
  • SRV
  • TXT
  • SOA
  • NS
  • MX
  • SPF
  • PTR
The type of resource record to add.
zone
no
The DNS domain name of the zone (e.g., example.com).
One of either zone or zone_id must be specified as an option, or the module will fail.
If both zone and zone_id are specifed, zone_id will be used.
zone_id
no
The Google Cloud ID of the zone (e.g., example-com).
One of either zone or zone_id must be specified as an option, or the module will fail.
These usually take the form of domain names with the dots replaced with dashes. A zone ID will never have any dots in it.
zone_id can be faster than zone in projects with a large number of zones.
If both zone and zone_id are specifed, zone_id will be used.

Examples

# Create an A record.
- gcdns_record:
    record: 'www1.example.com'
    zone: 'example.com'
    type: A
    value: '1.2.3.4'

# Update an existing record.
- gcdns_record:
    record: 'www1.example.com'
    zone: 'example.com'
    type: A
    overwrite: true
    value: '5.6.7.8'

# Remove an A record.
- gcdns_record:
    record: 'www1.example.com'
    zone_id: 'example-com'
    state: absent
    type: A
    value: '5.6.7.8'

# Create a CNAME record.
- gcdns_record:
    record: 'www.example.com'
    zone_id: 'example-com'
    type: CNAME
    value: 'www.example.com.'    # Note the trailing dot

# Create an MX record with a custom TTL.
- gcdns_record:
    record: 'example.com'
    zone: 'example.com'
    type: MX
    ttl: 3600
    value: '10 mail.example.com.'    # Note the trailing dot

# Create multiple A records with the same name.
- gcdns_record:
    record: 'api.example.com'
    zone_id: 'example-com'
    type: A
    record_data:
      - '192.0.2.23'
      - '10.4.5.6'
      - '198.51.100.5'
      - '203.0.113.10'

# Change the value of an existing record with multiple record_data.
- gcdns_record:
    record: 'api.example.com'
    zone: 'example.com'
    type: A
    overwrite: true
    record_data:           # WARNING: All values in a record will be replaced
      - '192.0.2.23'
      - '192.0.2.42'    # The changed record
      - '198.51.100.5'
      - '203.0.113.10'

# Safely remove a multi-line record.
- gcdns_record:
    record: 'api.example.com'
    zone_id: 'example-com'
    state: absent
    type: A
    record_data:           # NOTE: All of the values must match exactly
      - '192.0.2.23'
      - '192.0.2.42'
      - '198.51.100.5'
      - '203.0.113.10'

# Unconditionally remove a record.
- gcdns_record:
    record: 'api.example.com'
    zone_id: 'example-com'
    state: absent
    overwrite: true   # overwrite is true, so no values are needed
    type: A

# Create an AAAA record
- gcdns_record:
    record: 'www1.example.com'
    zone: 'example.com'
    type: AAAA
    value: 'fd00:db8::1'

# Create a PTR record
- gcdns_record:
    record: '10.5.168.192.in-addr.arpa'
    zone: '5.168.192.in-addr.arpa'
    type: PTR
    value: 'api.example.com.'    # Note the trailing dot.

# Create an NS record
- gcdns_record:
    record: 'subdomain.example.com'
    zone: 'example.com'
    type: NS
    ttl: 21600
    record_data:
      - 'ns-cloud-d1.googledomains.com.'    # Note the trailing dots on values
      - 'ns-cloud-d2.googledomains.com.'
      - 'ns-cloud-d3.googledomains.com.'
      - 'ns-cloud-d4.googledomains.com.'

# Create a TXT record
- gcdns_record:
    record: 'example.com'
    zone_id: 'example-com'
    type: TXT
    record_data:
      - '"v=spf1 include:_spf.google.com -all"'   # A single-string TXT value
      - '"hello " "world"'    # A multi-string TXT value

Return Values

Common return values are documented here Common Return Values, the following are the fields unique to this module:

name description returned type sample
zone_id The Google Cloud DNS ID of the zone success string example-com
zone The dns name of the zone success string example.com.
record Fully-qualified domain name of the resource record success string mail.example.com.
record_data The resource record values success list ['5.6.7.8', '9.10.11.12']
state Whether the record is present or absent success string present
ttl The time-to-live of the resource record success int 300
type The type of the resource record success string A
overwrite Whether to the module was allowed to overwrite the record success boolean True

Notes

Note

See also gcdns_zone.

Note

This modules’s underlying library does not support in-place updates for DNS resource records. Instead, resource records are quickly deleted and recreated.

Note

SOA records are technically supported, but their functionality is limited to verifying that a zone’s existing SOA record matches a pre-determined value. The SOA record cannot be updated.

Note

Root NS records cannot be updated.

Note

NAPTR records are not supported.

This is an Extras Module

For more information on what this means please read Extras Modules

For help in developing on modules, should you be so inclined, please read Community Information & Contributing, developing_test_pr and Developing Modules.

© 2012–2016 Michael DeHaan
© 2016 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/gcdns_record_module.html