Last active
October 5, 2016 01:19
-
-
Save walbert947/5731264d0ad0c94fcf36245f5d966c92 to your computer and use it in GitHub Desktop.
Ansible gcdns module test playbook
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
- name: 'Test the Google Cloud DNS module' | |
hosts: localhost | |
gather_facts: no | |
connection: local | |
vars: | |
#- test_zone: 'testing.example.com.' # <--- MUST include trailing dot | |
#- test_zone_id: 'testing-example-com' | |
#- gcp_project_id: 'test-project' | |
#- gcp_credentials_file: '/path/to/keys.json' | |
#- gcp_service_account_email: '12345-abcdefg@developer.gserviceaccount.com' | |
tasks: | |
- name: 'Ensure that check mode is enabled' | |
assert: | |
that: | |
- "ansible_check_mode" | |
################################################################################ | |
# Testing | |
################################################################################ | |
# ============================================================================ | |
- name: 'gcdns_zone: Test missing zone in check mode' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'missing required arguments: zone'" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test missing zone' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'missing required arguments: zone'" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone creation in check mode' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone creation in check mode using the "name" alias' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
name: "{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone creation' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone creation again' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone creation again without a trailing dot' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone[:-1] }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone removal in check mode' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
state: absent | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'absent'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone removal' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
state: absent | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'absent'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone removal again' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
state: absent | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'absent'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone creation with description' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
description: 'hello' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.description == 'hello'" | |
- "result.zone == '{{ test_zone }}'" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test creation of TLDs in check mode: .com.' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: '.com.' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot create top-level domain: .com.'" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test creation of TLDs: com' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: 'com' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot create top-level domain: com'" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test creation of zone with owned name in check mode: google.com' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: 'google.com' | |
register: result | |
ignore_errors: true | |
# This can't reasonably be tested in check mode. :( | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.description == ''" | |
- "result.zone == 'google.com.'" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test creation of zone with owned name: google.com' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: 'google.com' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'ownership of zone google.com. needs to be verified at https://www.google.com/webmasters/verification/'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test missing zone and zone_id in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'one of the following is required: zone,zone_id'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test missing zone and zone_id' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'one of the following is required: zone,zone_id'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test missing record in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'missing required arguments: record'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test missing record' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'missing required arguments: record'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test missing type in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'missing required arguments: type'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test missing type' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'missing required arguments: type'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test state=present and missing values in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'state is present but the following are missing: values'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test state=present and missing values' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'state is present but the following are missing: values'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test negative TTL in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
ttl: -1 | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'TTL cannot be less than zero, got: -1'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test negative TTL' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
ttl: -1 | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'TTL cannot be less than zero, got: -1'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test invalid record type in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'banana' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg.startswith('value of type must be one of')" | |
# ============================================================================ | |
- name: 'gcdns_record: Test invalid record type' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'banana' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg.startswith('value of type must be one of')" | |
# ============================================================================ | |
- name: 'gcdns_record: Test (hopefully!) nonexistent zone in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: 'www.sadgfafasdgasggggggade.com' | |
zone: 'sadgfafasdgasggggggade.com' | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone name was not found: sadgfafasdgasggggggade.com.'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test (hopefully!) nonexistent zone' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: 'www.sadgfafasdgasggggggade.com' | |
zone: 'sadgfafasdgasggggggade.com' | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone name was not found: sadgfafasdgasggggggade.com.'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test (hopefully!) nonexistent zone_id in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: 'www.sadgfafasdgasggggggade.com' | |
zone_id: 'sadgfafasdgasggggggade-com' | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone id was not found: sadgfafasdgasggggggade-com'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test (hopefully!) nonexistent zone_id' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: 'www.sadgfafasdgasggggggade.com' | |
zone_id: 'sadgfafasdgasggggggade-com' | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone id was not found: sadgfafasdgasggggggade-com'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test invalid zone in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: 'www.12345' | |
zone: '12345' | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone name was not found: 12345.'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test invalid zone' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: 'www.12345' | |
zone: '12345' | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone name was not found: 12345.'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test invalid zone_id in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: 'www.12345.com' | |
zone_id: '12345.com' | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone id was not found: 12345.com'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test invalid zone_id' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: 'www.12345.com' | |
zone_id: '12345.com' | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone id was not found: 12345.com'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test invalid record in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "12...345.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'record name is invalid: 12...345.{{ test_zone }}'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test invalid record' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "12...345.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'record name is invalid: 12...345.{{ test_zone }}'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test non-[A, AAAA] record with invalid value for type' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'MX' | |
value: 'banana' | |
register: result | |
ignore_errors: true | |
always_run: true | |
# This can't easily be tested in check mode. :( | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg.startswith('value is invalid for the given type: MX, got value: ')" | |
- "'banana' in result.msg" | |
# ============================================================================ | |
- name: 'gcdns_record: Test DNS zone apex rule violation in check mode - deleting root SOA record' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone: "{{ test_zone}}" | |
type: 'SOA' | |
state: absent | |
overwrite: true | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot delete SOA records'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test DNS zone apex rule violation - deleting root SOA record' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone: "{{ test_zone}}" | |
type: 'SOA' | |
state: absent | |
overwrite: true | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot delete SOA records'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test DNS zone apex rule violation in check mode - add non-root SOA' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone: "{{ test_zone}}" | |
type: 'SOA' | |
value: 'ns1.example.com. ns2.example.com. 1 21600 3600 1209600 300' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'non-root SOA records are not permitted, got: test.{{ test_zone }}'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test DNS zone apex rule violation - add non-root SOA' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone: "{{ test_zone}}" | |
type: 'SOA' | |
value: 'ns1.example.com. ns2.example.com. 1 21600 3600 1209600 300' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'non-root SOA records are not permitted, got: test.{{ test_zone }}'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a record using the zone in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone: "{{ test_zone }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'www.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: 'gcdns_record: Test creation of a record using the zone in check mode using the "name" alias' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
name: "www.{{ test_zone }}" | |
zone: "{{ test_zone }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'www.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a record using the zone ID in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'www.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'www.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'www.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test removal of a non-empty zone in check mode' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
state: absent | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone is not empty and cannot be removed: {{ test_zone }}'" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test removal of a non-empty zone' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
state: absent | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'zone is not empty and cannot be removed: {{ test_zone }}'" | |
# ============================================================================ | |
- name: "gcdns_record: Test removal of a record and missing values in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
state: absent | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'overwrite is False but the following are missing: values'" | |
# ============================================================================ | |
- name: "gcdns_record: Test removal of a record and missing values" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
state: absent | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'overwrite is False but the following are missing: values'" | |
# ============================================================================ | |
- name: "gcdns_record: Test removal of a record in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
state: absent | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'absent'" | |
- "result.record == 'www.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test removal of a record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
state: absent | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'absent'" | |
- "result.record == 'www.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test removal of a record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
state: absent | |
record: "www.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'absent'" | |
- "result.record == 'www.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone removal on an empty zone in check mode' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
state: absent | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'absent'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Test zone removal on an empty zone' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
state: absent | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'absent'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: 'gcdns_zone: Recreate zone' | |
gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.description == ''" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an A record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an A record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.2.3.4']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an A record with invalid value in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "bad.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.400' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'invalid A record value, got: 10.2.3.400'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an A record with invalid value" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "bad.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.2.3.400' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'invalid A record value, got: 10.2.3.400'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an AAAA record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'AAAA' | |
value: 'fd00:db8::1' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'AAAA'" | |
- "result['values'] == ['fd00:db8::1']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an AAAA record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'AAAA' | |
value: 'fd00:db8::1' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'AAAA'" | |
- "result['values'] == ['fd00:db8::1']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an AAAA record with invalid value in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "bad.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'AAAA' | |
value: 'fd00::db8::1' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'invalid AAAA record value, got: fd00::db8::1'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an AAAA record with invalid value" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "bad.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'AAAA' | |
value: 'fd00::db8::1' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'invalid AAAA record value, got: fd00::db8::1'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a CNAME record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "alias.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'CNAME' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'alias.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'CNAME'" | |
- "result['values'] == ['www.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a CNAME record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "alias.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'CNAME' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'alias.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'CNAME'" | |
- "result['values'] == ['www.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a CNAME record for a name that already exists in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'CNAME' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
# There's no easy way to check this in check mode without walking the zone's | |
# records. :( | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'CNAME'" | |
- "result['values'] == ['www.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a CNAME record for a name that already exists" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'CNAME' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'non-CNAME resource record already exists: test.{{ test_zone }}'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a CNAME record with multiple values in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "multialias.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'CNAME' | |
values: | |
- "www.{{ test_zone }}" | |
- "www2.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg.startswith('CNAME or SOA records cannot have more than one value, got:')" | |
- "'www.{{ test_zone }}' in result.msg" | |
- "'www2.{{ test_zone }}' in result.msg" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a CNAME record with multiple values" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "multialias.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'CNAME' | |
values: | |
- "www.{{ test_zone }}" | |
- "www2.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg.startswith('CNAME or SOA records cannot have more than one value, got:')" | |
- "'www.{{ test_zone }}' in result.msg" | |
- "'www2.{{ test_zone }}' in result.msg" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a CNAME with the same name as the zone in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'CNAME' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'CNAME records cannot match the zone name'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a CNAME with the same name as the zone" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'CNAME' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'CNAME records cannot match the zone name'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an MX record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'MX' | |
value: "10 {{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'MX'" | |
- "result['values'] == ['10 {{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an MX record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'MX' | |
value: "10 {{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'MX'" | |
- "result['values'] == ['10 {{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an NS record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'NS' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'NS'" | |
- "result['values'] == ['www.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an NS record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'NS' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'NS'" | |
- "result['values'] == ['www.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test update of a root NS record in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'NS' | |
overwrite: true | |
values: | |
- "ns-cloud1.googledomains.com." | |
- "ns-cloud2.googledomains.com." | |
- "ns-cloud3.googledomains.com." | |
- "ns-cloud4.googledomains.com." | |
- "ns-cloud5.googledomains.com." | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot update existing root NS records'" | |
# ============================================================================ | |
- name: "gcdns_record: Test update of a root NS record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'NS' | |
overwrite: true | |
values: | |
- "ns-cloud1.googledomains.com." | |
- "ns-cloud2.googledomains.com." | |
- "ns-cloud3.googledomains.com." | |
- "ns-cloud4.googledomains.com." | |
- "ns-cloud5.googledomains.com." | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot update existing root NS records'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a wildcard NS record in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "*.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'NS' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'wildcard NS records not allowed, got: *.{{ test_zone }}'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a wildcard NS record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "*.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'NS' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'wildcard NS records not allowed, got: *.{{ test_zone }}'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test update of root SOA record in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone: "{{ test_zone}}" | |
type: 'SOA' | |
overwrite: true | |
value: 'ns1.example.com. ns2.example.com. 1 21600 3600 1209600 400' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot update SOA records'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test update of root SOA record' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone: "{{ test_zone}}" | |
type: 'SOA' | |
overwrite: true | |
value: 'ns1.example.com. ns2.example.com. 1 21600 3600 1209600 400' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot update SOA records'" | |
# ============================================================================ | |
# This is a bit of a nonsense test, as this PTR record would never actually do | |
# anything useful, but we'll test the creation of it nonetheless. | |
- name: "gcdns_record: Test creation of a PTR record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'PTR' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'PTR'" | |
- "result['values'] == ['www.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a PTR record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'PTR' | |
value: "www.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'PTR'" | |
- "result['values'] == ['www.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an SRV record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'SRV' | |
value: "0 5 5060 test.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'SRV'" | |
- "result['values'] == ['0 5 5060 test.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an SRV record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'SRV' | |
value: "0 5 5060 test.{{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'SRV'" | |
- "result['values'] == ['0 5 5060 test.{{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a TXT record" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'TXT' | |
value: '"hello world"' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'TXT'" | |
- "result['values'] == ['\"hello world\"']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a TXT record again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'TXT' | |
value: '"hello world"' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'TXT'" | |
- "result['values'] == ['\"hello world\"']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a TXT record with multiple strings" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test2.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'TXT' | |
value: '"hello" "world"' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test2.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'TXT'" | |
- "result['values'] == ['\"hello\" \"world\"']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a TXT record with multiple strings again" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test2.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'TXT' | |
value: '"hello" "world"' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test2.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'TXT'" | |
- "result['values'] == ['\"hello\" \"world\"']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a TXT record without enclosed quotes in check mode" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test3.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'TXT' | |
value: 'hello world' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'TXT values must be enclosed in double quotes, got: hello world'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a TXT record without enclosed quotes" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test3.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'TXT' | |
value: 'hello world' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'TXT values must be enclosed in double quotes, got: hello world'" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of an A record with multiple values" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "round.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
values: | |
- '10.0.0.10' | |
- '10.10.0.10' | |
- '10.20.0.10' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'round.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.0.0.10', '10.10.0.10', '10.20.0.10']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a record with a short ttl" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "ttl-short.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
ttl: 10 | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'ttl-short.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result.ttl == 10" | |
- "result['values'] == ['10.2.3.4']" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Test creation of a record with a long ttl" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "ttl-long.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
ttl: 604800 | |
value: '10.2.3.4' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'ttl-long.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result.ttl == 604800" | |
- "result['values'] == ['10.2.3.4']" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: 'gcdns_record: Test removal of a multi-value record using incomplete values in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "round.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
values: | |
- '10.0.0.10' | |
- '10.10.0.10' | |
register: result | |
ignore_errors: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg.startswith('cannot delete due to non-matching ttl or values: ')" | |
# ============================================================================ | |
- name: 'gcdns_record: Test removal of a multi-value record using incomplete values' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "round.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
values: | |
- '10.0.0.10' | |
- '10.10.0.10' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg.startswith('cannot delete due to non-matching ttl or values: ')" | |
# ============================================================================ | |
- name: 'gcdns_record: Test removal of a multi-value record using complete values' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "round.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
values: | |
- '10.0.0.10' | |
- '10.10.0.10' | |
- '10.20.0.10' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'absent'" | |
- "result.record == 'round.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.0.0.10', '10.10.0.10', '10.20.0.10']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: 'gcdns_record: Test removal of a multi-value record using complete values again' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "round.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
values: | |
- '10.0.0.10' | |
- '10.10.0.10' | |
- '10.20.0.10' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'absent'" | |
- "result.record == 'round.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.0.0.10', '10.10.0.10', '10.20.0.10']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: "gcdns_record: Recreate A record with multiple values" | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "round.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
values: | |
- '10.0.0.10' | |
- '10.10.0.10' | |
- '10.20.0.10' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'round.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.0.0.10', '10.10.0.10', '10.20.0.10']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: 'gcdns_record: Test removal of a multi-value record using no values without overwrite protection' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "round.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
overwrite: true | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'absent'" | |
- "result.record == 'round.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result.overwrite" | |
- "result.ttl == 300" | |
# ============================================================================ | |
- name: 'gcdns_record: Test creation of an A record with the same name as the zone' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.6.7.8' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == '{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result['values'] == ['10.6.7.8']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
# ============================================================================ | |
- name: 'gcdns_record: Test changing the value of a single-value record with overwrite protection in check mode' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.6.7.8' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot overwrite existing record, overwrite protection enabled'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test changing the value of a single-value record with overwrite protection' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
value: '10.6.7.8' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'cannot overwrite existing record, overwrite protection enabled'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test changing the value of a single-value record without overwrite protection' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'A' | |
overwrite: true | |
value: '10.6.7.8' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'A'" | |
- "result.overwrite" | |
- "result['values'] == ['10.6.7.8']" | |
- "result.ttl == 300" | |
# ============================================================================ | |
- name: 'gcdns_record: Test changing the value of an existing record to an invalid value, without overwrite protection' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'MX' | |
overwrite: true | |
value: '5.6.78' | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "result.failed" | |
- "result.msg == 'error updating record, the original record was restored'" | |
# ============================================================================ | |
- name: 'gcdns_record: Test that the value of the restored record is unchanged' | |
gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
zone_id: "{{ test_zone_id }}" | |
type: 'MX' | |
value: "10 {{ test_zone }}" | |
register: result | |
ignore_errors: true | |
always_run: true | |
- assert: | |
that: | |
- "not result.changed" | |
- "result.state == 'present'" | |
- "result.record == 'test.{{ test_zone }}'" | |
- "result.zone == '{{ test_zone }}'" | |
- "result.zone_id == '{{ test_zone_id }}'" | |
- "result.type == 'MX'" | |
- "result['values'] == ['10 {{ test_zone }}']" | |
- "result.ttl == 300" | |
- "not result.overwrite" | |
################################################################################ | |
# Cleanup | |
################################################################################ | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "alias.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: CNAME | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: A | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: AAAA | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: MX | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: NS | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: PTR | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: SRV | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: TXT | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "test2.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: TXT | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: A | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "ttl-long.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: A | |
overwrite: yes | |
always_run: true | |
- gcdns_record: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
record: "ttl-short.{{ test_zone }}" | |
state: absent | |
zone_id: "{{ test_zone_id }}" | |
type: A | |
overwrite: yes | |
always_run: true | |
- gcdns_zone: | |
project_id: "{{ gcp_project_id }}" | |
credentials_file: "{{ gcp_credentials_file }}" | |
service_account_email: "{{ gcp_service_account_email }}" | |
zone: "{{ test_zone }}" | |
state: absent | |
always_run: true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment