Skip to content

kpfleming/ansible-powerdns-auth

Repository files navigation

ansible-powerdns-auth

Open Source Initiative Approved License logo CI Python License - Apache 2.0 Code Style and Quality - Ruff

This repo contains the kpfleming.powerdns_auth Ansible Collection. The collection includes modules to work with PowerDNS Authoritative servers.

Open Source software: Apache License 2.0

 

External requirements

The modules require the Bravado package for parsing the Swagger/OpenAPI specification of the PowerDNS Authoritative Server API.

As of PowerDNS Authoritative Server 4.9.x, the Swagger API specification is not completely compliant, and as a result the validation packages used by Bravado will not accept it. In order to work around this problem, older versions of the validation packages can be installed, like this:

pip install -r requirements.txt

This command can be executed in the environment on the Ansible controller if the roles will be used only on 'localhost'; if they will be used on Ansible-managed nodes, then the packages from the requirements file will need to be installed there:

- name: manage dependencies needed for powerdns_auth modules
  ansible.builtin.pip:
    name:
      - bravado
      - jsonschema<4
      - swagger-spec-validator==2.6.0

Add suitable parameters if the packages should be installed into a virtual environment on the managed node.

Included content

  • Modules:
    • PowerDNS Authoritative Server:
      • kpfleming.powerdns_auth.tsigkey: manage TSIG keys
      • kpfleming.powerdns_auth.zone: manage zones

Using this collection

In order to use this collection, you need to install it using the ansible-galaxy CLI:

ansible-galaxy collection install kpfleming.powerdns_auth

You can also include it in a requirements.yml file and install it via ansible-galaxy collection install -r requirements.yml using the format:

collections:
  - name: kpfleming.powerdns_auth

See Ansible Using collections for more details.

Documentation of the collections's modules and their arguments/return values can be found here.

Contributing to this collection

If you want to develop new content for this collection or improve what is already here, the easiest way to work on the collection is to clone it into one of the configured COLLECTIONS_PATH, and work on it there.

You can find more information in the developer guide for collections, and in the Ansible Community Guide.

More information