Plusieurs services que je veux mettre en place ou que j’ai déjà mis en place (peertube, mastodon) utilisent PostgreSQL. Chacun d’entre eux tourne, ou va tourner, dans une Jail FreeBSD. Est-il possible de faire une jail commune pour tous ces services ? C’est ce que nous allons essayer de faire avec PostgreSQL.
Les pré-requis
Bien sûr, vous savez ce qu’est une jail FreeBSD et vous êtes capable d’en mettre une en place, mininale, avec accés au réseau. Si ce n’est pas le cas, je vous invite à lire, sur ce même blog, les articles qui traitent de la mise en place de jails jail
- Jails avec FreeBSD 10.1 (1/x)
- connaître un poil de ligne de commande.
Installation de PostgreSQL
Et si je vous disais qu’il n’y a rien de plus simple ?
Nous allons tout simple installer les paquets qui nous intéressent avec la commande pkg
.
si vous avez une poudriere
, pensez à l’utiliser en ajoutant le fichier /usr/local/etc/pkg/repos/poudriere.conf
avec l’accès a votre dépôt local.
|
|
Paramètrage de FreeBSD
Afin de fonctionner pour les autres jails, qui seront clientes de celle de PostgreSQL nous devons ajouter changer un paramètre du kernel :
|
|
Pour rendre ce paramètre persistant au redémarrage, il faut le mettre dans le fichier /etc/sysctl.conf
.
|
|
Lancement de PostgreSQL au démarrage de la jail
Ajoutons une ligne au fichier /etc/rc.conf
pour que PostgreSQL soit démarré au lancement de la jail :
|
|
Initialisation de la base de données
PostgreSQL utilise… PostgreSQL en interne pour gérer ces propres tables. Il est donc nécessaire d’initialiser celles-ci.
|
|
Démarrage de PostgreSQL
Enfin, nous pouvons démarrer PostgreSQL :
|
|
Vérification
Il est grand temps de vérifier que cela fonctionne1
|
|
L’avantage de cette commande, c’est qu’elle vous place directement, avec l’utilisateur postgres
dans l’interface de PostgreSQL.
Voyons la liste des bases de données (celles qui ont été créées à l’initialisation) :
|
|
Tant que nous sommes dans l’interface de postgreSQL, nous allons changer le mot de passe2 de super utilisateur
qu’est postgres
:
|
|
Tout va bien, notre PostgreSQL semble tourner et avoir ces tables de base. Nous pouvons quitter et être satisfaits du travail accompli.
|
|
Permettre les connexions réseaux
Nous allons utiliser notre installation PostgreSQL depuis d’autres jails, en passant par le réseau. Par défaut seules les connexions locales sont autorisées.
Nous allons modifier le fichier /var/db/postgres/data96/postgres.conf
et en particulier la ligne #listen_addresses = 'localhost'
.
Nous allons suivre les directives des différents tutoriaux en mettant la ligne :
|
|
/var/db/postgres/data96/pg-hba.conf
.
Pour chacune des applications qui devra se connecter à la base, nous allons ajouter une ligne du type host database user address method
. Cela peut donner pour mastodon :3
|
|
Sauvons nos fichiers et relançons postgresql :
|
|
Conclusion
Nous avons maintenant une jail qui fait tourner PostgreSQL, tout seul. Nous vérifirons à l’installation d’une application cliente que la connexion réseau fonctionne.