Backup tool for PowerDNS database
Project description
What is this?
Backup tool for PowerDNS database (MySQL) to local or S3 storage in bind format. Open metrics are also computed on your feched zones.
PyPI
Deploy the pdnsbackup
tool in your server with the pip command.
pip install pdnsbackup
Usage
After installation, you can execute the pdnsbackup
to start-it.
$ pdnsbackup -h
usage: -c [-h] [-c C] [-e E] [-v]
options:
-h, --help show this help message and exit
-c C external config file
-e E env config file
-v debug mode
Configuration
This tool can be configurated with severals ways. See the default config file:
-
from external configuration file (
-c config
argument) -
from environment variables (
-e env file
argument)
Variables | Description |
---|---|
PDNSBACKUP_DEBUG | debug mode 1 or 0 |
PDNSBACKUP_GMYSQL_ENABLED | set to 1 to enable gmysql backend, enabled by default |
PDNSBACKUP_GMYSQL_HOST | mysql port, default is 127.0.0.1 |
PDNSBACKUP_GMYSQL_PORT | mysql port, default is 3306 |
PDNSBACKUP_GMYSQL_SSL | enable ssl, default is 0 |
PDNSBACKUP_GMYSQL_DBNAME | mysql database name |
PDNSBACKUP_GMYSQL_USER | mysql user |
PDNSBACKUP_GMYSQL_PASSWORD | mysql password |
PDNSBACKUP_FILE_ENABLED | set to 1 enable backup to file, enabled by default |
PDNSBACKUP_FILE_PATH_BIND | zone bind path in named.conf |
PDNSBACKUP_FILE_PATH_OUTPUT | output folder of the export |
PDNSBACKUP_S3_ENABLED | set to 1 enable backup to S3 storage, disabled by default |
PDNSBACKUP_S3_ENDPOINT_URL | your s3 url |
PDNSBACKUP_S3_SSL_VERIFY | disable ssl verify |
PDNSBACKUP_S3_ACCESS_KEY_ID | your access key |
PDNSBACKUP_S3_SECRET_ACCESS_KEY | your secret access key |
PDNSBACKUP_S3_BUCKET_NAME | bucket name |
PDNSBACKUP_S3_BACKUP_FILE | backup file name |
PDNSBACKUP_S3_BACKUP_DELETE_OLDER | delete backups older than xx days |
PDNSBACKUP_METRICS_ENABLED | export open metrics |
PDNSBACKUP_METRICS_PROM_FILE | write metrics to file path |
Metrics
This tool can be used to compute statistics on your DNS records.
Variables | Description |
---|---|
pdnsbackup_status | Status of the backup process |
pdnsbackup_zones_total | Total number of zones |
pdnsbackup_zones_empty_total | Total number of empty zones |
pdnsbackup_records_total | Total number of records per DNS zones |
pdnsbackup_wildcards_total | Total number of DNS wilcards |
pdnsbackup_delegations_total | Total number of DNS delegations |
pdnsbackup_rrtypes_total | Total number of records per type (A, AAAA, CNAME, ...) |
Docker run
sudo docker run --rm --env-file ./.env --name=pdnsbackup dmachard/pdnsbackup:latest
Run from source
Create a .env
file to populate your variable
Create a virtualenv
python -m venv venv
source venv/bin/activate
Install requirements and run-it
python3 -m pip install -r requirements.txt
python3 -c "import pdnsbackup; pdnsbackup.run();"
python3 -c "import pdnsbackup; pdnsbackup.run();" -c tests/config.yml
python3 -c "import pdnsbackup; pdnsbackup.run();" -e tests/.env
Build and run from docker image
sudo docker build . --file Dockerfile -t pdnsbackup
Run tests
Run all tests
python -m unittest discover -v tests/
Run one by one
python -m unittest -v tests.test_config
python -m unittest -v tests.test_parser
python -m unittest -v tests.test_import
python -m unittest -v tests.test_export_file
python -m unittest -v tests.test_export_metrics
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pdnsbackup-0.11.4.tar.gz
.
File metadata
- Download URL: pdnsbackup-0.11.4.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba9539fa939f2ad38ca0f98d508644bdfa4bfb6fab382202d6eb0620c79e6cff |
|
MD5 | 3f4149f73cbcde38c38bdb30f22c26eb |
|
BLAKE2b-256 | 6df91e29c36c9e53467e78cc6c85dde82cee8af27496c1616184c824e95f06ed |
Provenance
The following attestation bundles were made for pdnsbackup-0.11.4.tar.gz
:
Publisher:
publish.yml
on dmachard/python-pdnsbackup
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
pdnsbackup-0.11.4.tar.gz
- Subject digest:
ba9539fa939f2ad38ca0f98d508644bdfa4bfb6fab382202d6eb0620c79e6cff
- Sigstore transparency entry: 147964266
- Sigstore integration time:
- Predicate type:
File details
Details for the file pdnsbackup-0.11.4-py3-none-any.whl
.
File metadata
- Download URL: pdnsbackup-0.11.4-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | adf62f984dd8f1c7f53f0ebf08c73ea062e4b95709356d22f98517a78cecdf8e |
|
MD5 | d2e6cc19baeb92859325d4f1356e6f24 |
|
BLAKE2b-256 | 3f20cef7b60ee83067f834c8c689a2845a1712e5540cbeb725ec404bf688713a |
Provenance
The following attestation bundles were made for pdnsbackup-0.11.4-py3-none-any.whl
:
Publisher:
publish.yml
on dmachard/python-pdnsbackup
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
pdnsbackup-0.11.4-py3-none-any.whl
- Subject digest:
adf62f984dd8f1c7f53f0ebf08c73ea062e4b95709356d22f98517a78cecdf8e
- Sigstore transparency entry: 147964267
- Sigstore integration time:
- Predicate type: