/ansible-gdnsd

Ansible role to manage gdnsd authoritative DNS server and zone files

Primary LanguageJinjaGNU General Public License v3.0GPL-3.0

Ansible Role: ganto.gdnsd

CI Ansible Galaxy Read the Docs

gdnsd is a powerful Authoritative-only DNS server with some advanced features such as geographic (or other sorts of) balancing, redirection, wighting and service-state-conscious failover at the DNS layer.

The ganto.gdnsd Ansible role installs and configures the domain name server and is able to generate and update DNS zone files from name records defined in the Ansible inventory. It will also properly increase the serial on zone updates.

Installation

This role requires at least Ansible v2.8.0. To install it run:

ansible-galaxy install ganto.gdnsd

Documentation

The role documentation is available online at ansible-gdnsd.readthedocs.io.

It can be built locally from the docs directory by running:

cd docs && make html

Development

Testing

There is a Molecule test profile that can be used to verify the basic functionality of the role. The default scenario is using the podman container driver. If you prefer docker you can select the corresponding scenario with the -s docker molecule arguments.

  1. Ensure you have the necessary dependencies installed (e.g. in a Python venv):
pip install -r molecule/podman/requirements.txt         # for podman
# or
pip install -r molecule/docker/requirements.txt         # for docker
  1. Run the test suite. The options in brackets are optional but useful if you need to troubleshoot issues:
molecule [-vvv] test [--destroy never][-s docker]
  1. If you used --destroy never the container will remain after the test run and can be inspected interactively via:
podman exec -it <container-id> /bin/sh                  # for podman
# or
docker exec -it <container-id> /bin/sh                  # for docker
  1. Once you're done with inspecting the instance it has to be deleted before a new test run can be started:
molecule destroy [-s docker]

License

GPL-3.0 or some later version

Author

The content of this repository was written by: