Ansible modules which can be used to manage zones and other content in PowerDNS Authoritative servers.
Open Source software: Apache License 2.0
This module can be used to create, remove, and manage zones. It can also trigger some zone-related actions: NOTIFY and AXFR. Put the module file into a suitable 'library' directory for your Ansible installation, role, or playbook.
Note that if any 'metadata' attributes are specified when state
is
set to present
, all metadata attributes on the zone will be
updated or removed, depending on their defaults. As a result, you
must specify all metadata attributes that you wish to have set
on the zone.
Examples:
- name: create native zone
pdns_auth_zone:
name: d2.example.
state: present
api_key: 'foobar'
api_spec_file: 'api-swagger.json'
properties:
kind: 'Native'
nameservers:
- 'ns1.example.'
metadata:
allow_axfr_from: ['AUTO-NS']
axfr_source: '127.0.0.1'
- name: change native zone to master
pdns_auth_zone:
name: d2.example.
state: present
api_key: 'foobar'
api_spec_file: 'api-swagger.json'
properties:
kind: 'Master'
- name: delete zone
pdns_auth_zone:
name: d2.example.
state: absent
api_key: 'foobar'
api_spec_file: 'api-swagger.json'
This module can be used to create, remove, and manage TSIG keys. Put the module file into a suitable 'library' directory for your Ansible installation, role, or playbook.
Examples:
- name: create key with default algorithm
pdns_auth_tsigkey:
name: key2
state: present
api_key: 'foobar'
api_spec_file: 'api-swagger.json'
- name: remove key
pdns_auth_tsigkey:
name: key2
state: absent
api_key: 'foobar'
api_spec_file: 'api-swagger.json'
- name: create key with algorithm and content
pdns_auth_tsigkey:
name: key3
state: present
api_key: 'foobar'
api_spec_file: 'api-swagger.json'
algorithm: hmac-sha256
key: '+8fQxgYhf5PVGPKclKnk8ReujIfWXOw/aEzzPPhDi6AGagpg/r954FPZdzgFfUjnmjMSA1Yu7vo6DQHVoGnRkw=='
In PowerDNS Authoritative Server releases prior to 4.4.0, the server
is not able to provide the OpenAPI/Swagger specification which this
module requires. In order to use this module, you'll need to copy
api-swagger.json
to your Ansible control host (in the files
directory of the role or playbook), and use tasks similar to the ones
below to place a copy on the host where the module will be invoked.
- name: temp file to hold spec
tempfile:
state: file
suffix: '.json'
register: temp_file
- name: populate spec file
copy:
src: api-swagger.json
dest: "{{ temp_file.path }}"