vultr: new module vr_dns_record (#34423)

This commit is contained in:
René Moser 2018-01-19 09:34:23 +01:00 committed by GitHub
commit 1a8bbcf146
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 732 additions and 0 deletions

View file

@ -0,0 +1,36 @@
---
vr_dns_domain_name: example-ansible.com
vr_dns_record_items:
# Single A record
- name: test-www
data: 10.10.10.10
ttl: 400
update_data: 10.10.10.11
update_ttl: 200
# Multiple A records
- name: test-www-multiple
data: 10.10.11.10
update_data: 10.10.11.11
multiple: true
update_ttl: 600
# CNAME
- name: test-cname
data: www.ansible.com
update_data: www.ansible.ch
record_type: CNAME
# Single Multiple MX record
- data: mx1.example-ansible.com
priority: 10
update_priority: 20
record_type: MX
# Multiple MX records
- data: mx2.example-ansible.com
priority: 10
update_data: mx1.example-ansible.com
update_priority: 20
record_type: MX
multiple: true

View file

@ -0,0 +1,65 @@
---
- name: test setup dns record
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
record_type: "{{ item.record_type | default(omit) }}"
state: absent
register: result
- name: verify test setup dns record
assert:
that:
- result is successful
- name: test create a dns record in check mode
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.data }}"
ttl: "{{ item.ttl | default(omit) }}"
record_type: "{{ item.record_type | default(omit) }}"
priority: "{{ item.priority | default(omit) }}"
check_mode: yes
register: result
- name: verify test create a dns record in check mode
assert:
that:
- result is changed
- name: test create a dns record
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.data }}"
ttl: "{{ item.ttl | default(omit) }}"
record_type: "{{ item.record_type | default(omit) }}"
priority: "{{ item.priority | default(omit) }}"
register: result
- name: verify test create a dns record
assert:
that:
- result is changed
- result.vultr_dns_record.data == "{{ item.data }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- result.vultr_dns_record.priority == {{ item.priority | default(0) }}
- name: test create a dns record idempotence
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.data }}"
ttl: "{{ item.ttl | default(omit) }}"
record_type: "{{ item.record_type | default(omit) }}"
priority: "{{ item.priority | default(omit) }}"
register: result
- name: verify test create a dns record idempotence
assert:
that:
- result is not changed
- result.vultr_dns_record.data == "{{ item.data }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- result.vultr_dns_record.priority == {{ item.priority | default(0) }}

View file

@ -0,0 +1,15 @@
---
- name: setup dns domain
vr_dns_domain:
name: "{{ vr_dns_domain_name }}"
server_ip: 10.10.10.10
register: result
- name: verify setup dns domain
assert:
that:
- result is successful
- include_tasks: test_fail_multiple.yml
- include_tasks: record.yml
with_items: "{{ vr_dns_record_items }}"

View file

@ -0,0 +1,4 @@
---
- include_tasks: create_record.yml
- include_tasks: update_record.yml
- include_tasks: remove_record.yml

View file

@ -0,0 +1,112 @@
---
- name: test remove a dns record in check mode
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.update_data | default(item.data) }}"
record_type: "{{ item.record_type | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
state: absent
check_mode: yes
register: result
- name: verify test remove a dns record in check mode
assert:
that:
- result is changed
- result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- result.vultr_dns_record.priority == {{ item.update_priority | default(item.priority | default(0)) }}
- name: test remove second dns record in check mode
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.data | default(item.data) }}"
record_type: "{{ item.record_type | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
state: absent
check_mode: yes
register: result
when: item.multiple is defined and item.multiple == true
- name: verify test remove a dns record in check mode
assert:
that:
- result is changed
- result.vultr_dns_record.data == "{{ item.data | default(item.data) }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- result.vultr_dns_record.priority == {{ item.priority | default(0) }}
when: item.multiple is defined and item.multiple == true
- name: test remove a dns record
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.update_data | default(item.data) }}"
record_type: "{{ item.record_type | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
state: absent
register: result
- name: verify test remove a dns record
assert:
that:
- result is changed
- result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- result.vultr_dns_record.priority == {{ item.update_priority | default(item.priority | default(0)) }}
- name: test remove second dns record
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.data }}"
record_type: "{{ item.record_type | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
state: absent
register: result
when: item.multiple is defined and item.multiple == true
- name: verify test remove a dns record
assert:
that:
- result is changed
- result.vultr_dns_record.data == "{{ item.data }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- result.vultr_dns_record.priority == {{ item.priority | default(0) }}
when: item.multiple is defined and item.multiple == true
- name: test remove a dns record idempotence
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.update_data | default(item.data) }}"
record_type: "{{ item.record_type | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
state: absent
register: result
- name: verify test remove a dns record idempotence
assert:
that:
- result is not changed
- name: test remove second dns record idempotence
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.data }}"
record_type: "{{ item.record_type | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
state: absent
register: result
when: item.multiple is defined and item.multiple == true
- name: verify test remove a dns record idempotence
assert:
that:
- result is not changed
when: item.multiple is defined and item.multiple == true

View file

@ -0,0 +1,76 @@
---
- name: setup first dns record
vr_dns_record:
name: test-multiple
domain: "{{ vr_dns_domain_name }}"
data: 1.2.3.4
multiple: yes
register: result
- name: verify setup a dns record
assert:
that:
- result is successful
- name: setup second dns record
vr_dns_record:
name: test-multiple
domain: "{{ vr_dns_domain_name }}"
data: 1.2.3.5
multiple: yes
register: result
- name: verify setup second dns record
assert:
that:
- result is successful
- name: test-multiple fail multiple identical records found
vr_dns_record:
name: test-multiple
domain: "{{ vr_dns_domain_name }}"
state: absent
register: result
ignore_errors: yes
- name: verify test fail multiple identical records found
assert:
that:
- result is failed
- name: test-multiple fail absent multiple identical records but not data
vr_dns_record:
name: test-multiple
domain: "{{ vr_dns_domain_name }}"
state: absent
multiple: yes
register: result
ignore_errors: yes
- name: verify test-multiple success absent multiple identical records found
assert:
that:
- result is failed
- "result.msg == 'multiple is True but all of the following are missing: data'"
- name: test-multiple success absent multiple identical records second found
vr_dns_record:
name: test-multiple
domain: "{{ vr_dns_domain_name }}"
data: 1.2.3.5
state: absent
multiple: yes
register: result
- name: verify test-multiple success absent multiple identical records second found
assert:
that:
- result is changed
- name: test-multiple success absent multiple identical records first found
vr_dns_record:
name: test-multiple
domain: "{{ vr_dns_domain_name }}"
data: 1.2.3.4
state: absent
multiple: yes
register: result
- name: verify test-multiple success absent multiple identical records firstfound
assert:
that:
- result is changed

View file

@ -0,0 +1,68 @@
---
- name: test update or add another dns record in check mode
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.update_data | default(item.data) }}"
ttl: "{{ item.update_ttl | default(omit) }}"
record_type: "{{ item.record_type | default(omit) }}"
priority: "{{ item.update_priority | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
check_mode: yes
register: result
- name: verify test updatein check mode
assert:
that:
- result is changed
- result.vultr_dns_record.data == "{{ item.data }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- result.vultr_dns_record.priority == {{ item.priority | default(0) }}
when: item.multiple is undefined or item.multiple == false
- name: verify test add another dns record in check mode
assert:
that:
- result is changed
- not result.vultr_dns_record
when: item.multiple is defined and item.multiple == true
- name: test update or add another dns record
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.update_data | default(item.data) }}"
ttl: "{{ item.update_ttl | default(omit) }}"
record_type: "{{ item.record_type | default(omit) }}"
priority: "{{ item.update_priority | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
register: result
- name: verify test update a dns record
assert:
that:
- result is changed
- result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.priority == {{ item.update_priority | default(0) }}
- name: test update or add another dns record idempotence
vr_dns_record:
name: "{{ item.name | default(omit) }}"
domain: "{{ vr_dns_domain_name }}"
data: "{{ item.update_data | default(item.data) }}"
ttl: "{{ item.update_ttl | default(omit) }}"
record_type: "{{ item.record_type | default(omit) }}"
priority: "{{ item.update_priority | default(omit) }}"
multiple: "{{ item.multiple | default(omit) }}"
register: result
- name: verify test update a dns record idempotence
assert:
that:
- result is not changed
- result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- result.vultr_dns_record.name == "{{ item.name | default("") }}"
- result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- result.vultr_dns_record.priority == {{ item.update_priority | default(0) }}