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.
1
# pkg install postgresql95_server postgresql95_client
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 :
1
# security.jail.sysvipc_allowed=1
Pour rendre ce paramètre persistant au redémarrage, il faut le mettre dans le fichier /etc/sysctl.conf
.
1
security.jail.sysvipc_allowed=1
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 :
1
# sysrc postgresql="YES"
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.
1
# service postgresql initdb
Démarrage de PostgreSQL
Enfin, nous pouvons démarrer PostgreSQL :
1
# service postgresql start
Vérification
Il est grand temps de vérifier que cela fonctionne1
1
2
3
4
5
# sudo -u postgres psql
psql (9.6.8)
Type "help" for help.
postgres=#
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) :
1
2
3
4
5
6
7
8
9
10
11
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
test_db | postgres | UTF8 | C | C |
(4 rows)
Tant que nous sommes dans l’interface de postgreSQL, nous allons changer le mot de passe2 de super utilisateur
qu’est postgres
:
1
2
3
postgres=# \password postgres
Enter new password:
Enter it again:
Tout va bien, notre PostgreSQL semble tourner et avoir ces tables de base. Nous pouvons quitter et être satisfaits du travail accompli.
1
postgres-# \q
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 :
1
listen_addresses = '*'
Nous allons aussi et plus finement autoriser les machines les unes après les autres en modifiant le fichier /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
1
host mastodon mastodon 192.168.12.4 password
Sauvons nos fichiers et relançons postgresql :
1
# service postgresql restart
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.
Article suivant : Migration de Mastodon dans une Jail FreeBSD
Laisser un commentaire
Les commentaires sont soumis à modération.