Je continue le déploiement des applications sur mon Home Lab Devops, et
cette fois, il s’agit du serveur DNS powerDNS. Jusqu’à présent il tournait
sur un de mes raspberry pi, mais j’ai fait le choix de le déplacer sur une
des machines du Home Lab. Encore un bon exercice, car cela m’a permis
d’améliorer l’installation de libvirt, en automatisant la création du pool
d’images et du bridge.
Pourquoi installer PowerDNS dans le homelab ? Tout simplement pour permettre
l’enregistrement et la suppression des IP des machines instanciées via son API.
Démarche d’automatisation de l’installation de PowerDNS
Je reprends le même principe que celui utilisé pour
nexus. J’ai donc commencé par
développer le playbook Ansible sur une machine virtuelle créé avec
Vagrant. Une fois le playbook fonctionnel, je l’ai transposé dans une VM
instanciée avec du Terraform sur une de mes machines de mon Homelab.
Les objectifs que je me suis fixés et les contraintes imposées :
Pouvoir faire les upgrades facilement
Utiliser le backend sqlite3
Ajouter de la persistance sur les données via un simple partage Nfs.
Pas d’installation via Docker.
Pour écrire le playbook Ansible, j’ai tout simplement transposé la procédure
d’installation disponible sur le site de la documentation de
Nexus ↗.
Ecriture du Vagrantfile
Cette fois, je vais utiliser une VM avec Ubuntu comme système d’exploitation.
On reprend le même principe, mis à part que j’ai créé dans le playbook une
variable de type vault. J’ai donc ajouté aux paramètres d’appel
d’ansible-playbook l’option --ask-vault-pass.
Le mot de passe est passwd. La variable en question est la clé d’api. Pour la
créer il suffit de taper la commande suivante :
Je ne partage que le port 443, car c’est nginx qui portera la partie SSL.
Ecriture du playbook
Pour créer la variable api_key il suffit de copier/coller la sortie de la
commande ansible-vault.
L’installation est assez proche de celle que j’ai utilisé pour Nexus. Les
données sont sauvegardées sur un montage NFS dans /data/pdns.
On crée la base si elle n’existe pas. Et finit par l’installation de nginx.
Une fois terminé il suffit de se rendre dans le navigateur sur cette adresse :
https://localhost:8443
Lors du premier démarrage il faudra :
créer le user admin
indiquer l’adresse et la clé de l’api powerdns
Installation sur une machine du home Lab avec Terraform
La aussi nous sommes très proches de ce que j’ai utilisé pour nexus. Mis à part
le nom de la vm, la mac address le nombre de cpu et de mémoire. Changez-les en
fonction de votre besoin.
Ce code fait appel à du cloud-init pour configurer la VM. Encore ici peu de
changements.
Modifier le nom de domain !!
Et pour la partie réseau :
Modifier le nom de domain et la gateway !!
Démarrage de la VM
Avant de démarrer nous allons télécharger l’image et modifier sa taille. Elle ne fait que 2 Go.
Maintenant que tout est prêt allez on démarre le tout :
Allez dans cockpit et dans machine virtuelle cliquez sur pdns.
Ouvrez la console série et entrez root, passwd pour vous connecter.
C’est bon elle est configurée !
On peut lancer le playbook Ansible.
La aussi il faudra être patient … Une fois l’installation terminée, ouvrez
votre navigateur sur l’adresse que vous avez défini :
https://pnds.robert.local ↗
Plus loin
Le code source de l’ensemble est disponible sur gitlab ↗
Il y a encore un peu de travail pour rendre le playbook tip-top au petits
oignons. Mais je vous laisse jouer avec pour apprendre :)