Wiki Informatique - PowerDNS on Docker

PowerDNS on Docker

PowerDNS + MySQL + PowerDNS-Admin

C’est très simple car peu de configurations sont nécessaires. L’image Docker de PowerDNS se compose de 5 images, à savoir :

  • mariadb – le container base de donnée.
  • pdns-mysql – the PowerDNS server configurable with MySQL backend.
  • pdns-recursor – contains completely configurable PowerDNS 4.x recursor
  • pdns-admin-uwsgi – web app, written in Flask, for managing PowerDNS servers
  • pdns-admin-static – fronted (nginx)

Nous allons faire fonctionner chacun de ces conteneurs et les relier les uns aux autres.

1.  Le conteneur de base de données.

Nous utiliserons MariaDB comme conteneur de base de données avec la base de données PowerDNS créée comme ci-dessous.

docker run --detach --name mariadb \
      --restart=always \
      -e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
      -e MYSQL_DATABASE=pdns \
      -e MYSQL_USER=pdns \
      -e MYSQL_PASSWORD=mypdns \
      -v /pda-mysql:/var/lib/mysql \
      mariadb:latest

2.  Le conteneur principal PowerDNS.

Nous utiliserons le serveur PowerDNS configurable avec un backend MySQL lié à la base de données comme ci-dessous.

docker run -d --name pdns-master \
  --restart=always \
  --hostname pdns\
  --domainname computingforgeeks.com \
  --link mariadb:mysql \
  -e PDNS_master=yes \
  -e PDNS_api=yes \
  -e PDNS_api_key=secret \
  -e PDNS_webserver=yes \
  -e PDNS_webserver-allow-from=127.0.0.1,10.0.0.0/8,172.0.0.0/8,192.0.0.0/24 \
  -e PDNS_webserver_address=0.0.0.0 \
  -e PDNS_webserver_password=secret2 \
  -e PDNS_version_string=anonymous \
  -e PDNS_default_ttl=1500 \
  -e PDNS_allow_notify_from=0.0.0.0 \
  -e PDNS_allow_axfr_ips=127.0.0.1 \
  -e PDNS_allow_recursion=127.0.0.1 \
  -e PDNS_recursor=127.0.0.1:53 \
  pschiffe/pdns-mysql

Ne pas oublié de changer le domaine computingforgeeks.com par votre nom de dmaine.

Ici, nous permettons à l’API d’être accessible à partir de plusieurs adresses IP afin d’éviter l’erreur “connexion refusée par l’homologue” ou l’erreur 400 lors de la création de domaines.

3.  Le container PowerDNS-Recursor

docker run -d -p 53:53 -p 53:53/udp --name pdns-recursor \
  --restart=always \
  -e PDNS_api_key=secret \
  -e PDNS_webserver=yes \
  -e PDNS_webserver_address=0.0.0.0 \
  -e PDNS_webserver_password=secret2 \
  pschiffe/pdns-recursor

4.  Le conteneur PowerDNS-Admin.

docker run -d --name pdns-admin-uwsgi \
  -p 9494:9494 \
  --link mariadb:mysql --link pdns-master:pdns \
  pschiffe/pdns-admin-uwsgi

5.  Le conteneur du service PowerDNS Admin

Exposez maintenant le service en utilisant le conteneur pdns-admin-static pour exposer le service.

docker run -d -p 8080:80 --name pdns-admin-static \
  --link pdns-admin-uwsgi:pdns-admin-uwsgi \
  pschiffe/pdns-admin-static

6.  Ref


Catégorie(s) : Docker | DNS | Mysql | PowerDNS