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 hidden or 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