New Memset module to manage DNS zone records (#40392)

This commit is contained in:
Simon
2018-05-23 17:36:57 +01:00
committed by René Moser
parent e5665587c2
commit 450891a1e7
5 changed files with 622 additions and 0 deletions

View File

@@ -0,0 +1 @@
unsupported

View File

@@ -0,0 +1 @@
---

View File

@@ -0,0 +1,239 @@
- name: create record with incorrect API key
local_action:
module: memset_zone_record
api_key: "wa9aerahhie0eekee9iaphoorovooyia"
state: present
zone: "{{ test_zone }}"
type: A
address: 127.0.0.1
ignore_errors: true
register: result
- assert:
that:
- "'Memset API returned a 403 response (ApiErrorForbidden, Bad api_key)' in result.msg"
- result is not successful
- name: create record in non-existent zone
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "a-non-existent-zone"
type: A
address: 127.0.0.1
ignore_errors: true
register: result
- name: assert that record is not created
assert:
that:
- "'DNS zone a-non-existent-zone does not exist.' in result.msg"
- result is not successful
- name: create record in non-unique zone
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "{{ duplicate_zone }}"
type: A
address: 127.0.0.1
ignore_errors: true
register: result
- name: assert that record is not created
assert:
that:
- "'ansible-dns-zone-dupe matches multiple zones.' in result.msg"
- result is not successful
- name: create record with invalid priority
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "{{ test_zone }}"
type: SRV
address: "0 5269 hostname.example.com"
record: "_jabber._tcp"
priority: 1001
ignore_errors: true
register: result
- name: assert that priority was out of range
assert:
that:
- "'Priority must be in the range 0 > 999 (inclusive).' in result.msg"
- result is not successful
- name: create record with address longer than 250 chars
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "{{ test_zone }}"
type: CNAME
address: "aaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com"
record: "aaa.ansible.com"
ignore_errors: true
register: result
- name: assert that address was longer than allowed
assert:
that:
- "'Address must be less than 250 characters in length.' in result.msg"
- result is not successful
- name: create record longer than 63 chars
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "{{ test_zone }}"
type: A
address: 127.0.0.1
record: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
ignore_errors: true
register: result
- name: assert that record was longer than allowed
assert:
that:
- "'Record must be less than 63 characters in length.' in result.msg"
- result is not successful
- name: create record which cannot have relative enabled
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "{{ test_zone }}"
type: A
address: 127.0.0.1
relative: true
ignore_errors: true
register: result
- name: assert that setting relative failed
assert:
that:
- "'Relative is only valid for CNAME, MX, NS and SRV record types' in result.msg"
- result is not successful
- name: test creating valid A record
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "{{ test_zone }}"
type: A
address: 127.0.0.1
record: "www"
check_mode: true
register: result
- name: assert that result would have changed
assert:
that:
- result is changed
- result is successful
- name: actually create valid A record
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "{{ test_zone }}"
type: A
address: 127.0.0.1
record: "www"
register: result
- name: assert that result changed
assert:
that:
- result is changed
- result is successful
- name: create valid SPF record
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: present
zone: "{{ test_zone }}"
type: TXT
address: "v=spf1 +a +mx +ip4:127.0.0.1 ?all"
register: result
- name: assert that result changed
assert:
that:
- result is changed
- result is successful
- name: test deleting A record
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: absent
zone: "{{ test_zone }}"
type: A
address: 127.0.0.1
record: "www"
check_mode: true
register: result
- name: assert that result changed
assert:
that:
- result is changed
- result is successful
- name: actually delete A record
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: absent
zone: "{{ test_zone }}"
type: A
address: 127.0.0.1
record: "www"
register: result
- name: assert that result changed
assert:
that:
- result is changed
- result is successful
- name: delete SPF record
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: absent
zone: "{{ test_zone }}"
type: TXT
address: "v=spf1 +a +mx +ip4:127.0.0.1 ?all"
register: result
- name: assert that result changed
assert:
that:
- result is changed
- result is successful
- name: delete non-existent SPF record
local_action:
module: memset_zone_record
api_key: "{{ api_key }}"
state: absent
zone: "{{ test_zone }}"
type: TXT
address: "v=spf1 +a +mx +ip4:127.0.0.1 ?all"
register: result
- name: assert that result changed
assert:
that:
- result is not changed

View File

@@ -0,0 +1,3 @@
---
test_zone: ansible-dns-record-tests
duplicate_zone: ansible-dns-zone-dupe