Aller au contenu

Pilotez PowerDNS avec PowerDNS-Admin

Mise à jour :

PowerDNS-Admin

Après avoir installé et configuré PowerDNS, il est temps de passer à l’étape suivante : simplifier sa gestion grâce à une interface graphique intuitive. Voici donc la suite de notre guide, où je vais vous expliquer comment installer et configurer PowerDNS-Admin sur un système Ubuntu/Debian.

Fonctionnalités principales de PowerDNS-Admin

PowerDNS-Admin offre une gamme de fonctionnalités pour simplifier et améliorer la gestion des serveurs DNS :

  • Interface web intuitive : Accès facile à toutes vos configurations DNS via un tableau de bord.
  • Multi-serveurs : Gérez plusieurs serveurs PowerDNS depuis une seule interface.
  • Gestion des zones DNS : Créez, modifiez et supprimez des zones et des enregistrements DNS en quelques clics.
  • Support DNSSEC : Activez et gérez DNSSEC pour sécuriser vos zones DNS.
  • Gestion des utilisateurs : Contrôlez l’accès avec plusieurs rôles (administrateurs, utilisateurs standards).
  • Tableaux de bord et statistiques : Visualisez des métriques importantes pour surveiller vos DNS.
  • Intégration API : Automatisez vos tâches avec une API REST intégrée.
  • Historique des modifications : Suivez les changements grâce à un journal détaillé.

Avec ces fonctionnalités, PowerDNS-Admin se présente comme un outil incontournable pour tout administrateur réseau ou système souhaitant optimiser la gestion de ses serveurs DNS.

Installation de PowerDNS-Admin sur Ubuntu/Debian

Dans ce chapitre, je vais vous guider pas à pas pour installer PowerDNS-Admin sur une distribution Ubuntu/Debian. Suivez attentivement chaque étape pour garantir une installation réussie.

  1. Prérequis système

Assurez-vous d’avoir :

Commencez par mettre à jour votre système :

Terminal window
sudo apt update && sudo apt upgrade -y
  1. Installer les dépendances nécessaires

Installez les paquets requis pour Python, Node.js et le backend SQL :

Terminal window
sudo apt install -y python3-dev git libsasl2-dev libldap2-dev python3-venv \
libmariadb-dev pkg-config build-essential curl libpq-dev nodejs npm libffi-dev

Ajoutez Yarn pour gérer les fichiers front-end :

Terminal window
npm install -g yarn
  1. Télécharger PowerDNS-Admin

Clonez le dépôt GitHub de PowerDNS-Admin dans le répertoire de votre choix :

Terminal window
sudo -i
mkdir /opt/web
git clone https://github.com/PowerDNS-Admin/PowerDNS-Admin.git /opt/web/powerdns-admin
cd /opt/web/powerdns-admin
  1. Préparer l’environnement Python

Créez et activez un environnement virtuel pour isoler les dépendances :

Terminal window
python3 -m venv ./venv
source ./venv/bin/activate

Installez les bibliothèques Python nécessaires :

Terminal window
pip install --upgrade pip
pip install -r requirements.txt
  1. Configurer PowerDNS-Admin

Copiez et modifiez le fichier de configuration :

Terminal window
cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py
vi /opt/web/powerdns-admin/configs/production.py

Dans le fichier, ajustez ces paramètres :

  • SECRET_KEY : Remplacez-le par une clé aléatoire et sécurisée.

  • SQLALCHEMY_DATABASE_URI : Définissez l’URL de connexion à votre base de données (MySQL ou PostgreSQL). Exemple pour MySQL :

    SQLALCHEMY_DATABASE_URI = 'mysql://powerdnsadmin:secret_password@127.0.0.1/powerdnsadmin'

Exportez la configuration Flask :

Terminal window
export FLASK_CONF=../configs/production.py
  1. Configurer la base de données

Connectez-vous à votre base SQL et préparez-la pour PowerDNS-Admin :

Terminal window
mysql -u root -p

Puis exécutez :

CREATE DATABASE powerdnsadmin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON powerdnsadmin.* TO 'powerdnsadmin'@'localhost' IDENTIFIED BY 'secret_password';
FLUSH PRIVILEGES;
EXIT;

Appliquez les migrations de la base de données :

Terminal window
export FLASK_APP=powerdnsadmin/__init__.py
python -m pip install --upgrade setuptools
flask db upgrade
  1. Construire les fichiers front-end

Installez les dépendances front-end avec Yarn :

Terminal window
yarn install --pure-lockfile

Construisez les fichiers front-end :

Terminal window
flask assets build
  1. Tester PowerDNS-Admin

Lancez le serveur pour vérifier le fonctionnement :

Terminal window
./run.py

Accédez à l’interface web à l’adresse :

http://<votre-serveur>:9191

Enregistrez-vous. Le premier utilisateur créé sera automatiquement administrateur.

  1. Exécuter PowerDNS-Admin en production

Pour une utilisation en production, configurez PowerDNS-Admin comme un service :

Terminal window
sudo groupadd powerdnsadmin
sudo useradd --system -g powerdnsadmin powerdnsadmin
sudo vim /etc/systemd/system/powerdns-admin.service

Exemple de configuration :

[Unit]
Description=PowerDNS-Admin
After=network.target
[Service]
Type=simple
User=powerdnsadmin
Group=powerdnsadmin
WorkingDirectory=/opt/web/powerdns-admin
ExecStart=/opt/web/powerdns-admin/venv/bin/python /opt/web/powerdns-admin/run.py
Restart=always
[Install]
WantedBy=multi-user.target

Appliquer les changements et démarrer le service:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable powerdns-admin --now
  1. Vérification et personnalisation

Assurez-vous que PowerDNS-Admin fonctionne correctement en accédant à l’interface web.

Conclusion

Vous avez maintenant une installation fonctionnelle de PowerDNS-Admin sur votre serveur Ubuntu/Debian. Grâce à cette interface graphique, la gestion de vos zones DNS devient plus intuitive et efficace, que vous gériez un petit projet ou une infrastructure complexe. Avec ses fonctionnalités avancées comme le support multi-serveurs et DNSSEC, vous êtes prêt à optimiser vos opérations DNS.

Mais ce n’est pas tout ! Dans mon prochain guide, nous explorerons comment utiliser le provider Terraform pour automatiser la gestion de vos zones et enregistrements DNS. Une solution idéale pour intégrer PowerDNS dans vos workflows Infrastructure as Code et améliorer encore la scalabilité et l’efficacité de vos configurations.