---
tags: infrastructure, production, apps.education, phm, kubernetes, k8s, rancher, postgresql
---
# Postgresql "managé"
## Avant propos
Cette page est née initialement afin de préparer la migration des instances Postgresql managées du socle apps de Scaleway vers l'infrastructure Rancher de la PHM. Depuis, l'idée d'ensemble a un peu bougé. Les buts de ce projet aujourd'hui :
* monter en compétence au sein du PCLL sur la mise en oeuvre et la gestion de moteurs de bases de données Postgresql
* stocker des ressources et tutos autour du système de bases de données Postgresql
* historiser les échanges avec des interlocuteurs comme Dalibo
* présenter des outils comme les rôles et playbooks Ansible écrits en interne pour pouvoir déployer des clusters Postgresql
## Scénarii pour l'internalisation de Apps Éducation à la PHM
### Accompagnement Dalibo
Pour nous accompagner dans la mise en place de nos clusters de bases de données pgsql, et pour avoir du support en cas de besoin, nous pourrions faire appel à Dalibo, qui est référencé au marché national (dixit Nicolas).
Il faudra définir si nous passons par une première phase de cluster de BDD externes "managées" (à la manière de Scaleway aujourd'hui), ou à un cluster k8s de bases de données directement (courbe d'apprentissage, debug, points d'attention...)
### Accompagnement d'une équipe nationale ou académie
Il est possible qu'il y ait en interne au sein des DSI de l'Éducation Nationale un certain nombre de compétences sur la gestion de bases de données en général, et Postgresql en particulier. Une veille sur les personnes et équipes à fédérer pourrait avoir du sens.
En ce qui concerne le Pôle de bases de données de Toulouse, et vous me corrigerez si je dis des bêtises, ils n'opèrent pas de bases, sont prescripteurs sur certains sujets, et proposent des outils de déploiements de bases (playbooks Ansible, datés et mal foutus de mon point de vue, mais c'est un avis tout à fait subjectif).
## Réunions et échanges
### Dalibo
* 19/12/2022 10h : premier échange avec Stéphane CARTON (consultant avant vente) et Diana HOUDART (directrice commerciale)
faire un rapide compte-rendu, voir avec Luc ce qui est attendu en termes de prestations, planifier la prochaine visio avec Dalibo (début Janvier ?)
* 10/01/2023 10h : rapide échange visio avec Nicolas SCHONT pour avoir des infos si nous souhaitons avoir accès au marché "expertise bases de données" (pas sûr que ce soit l'intitulé exact), afin d'avoir du support dans le cadre d'un POC ? Pour ce faire, envoyer un message à Stéphane CARTON et Diana HOUDART, avec Nicolas en copie, pour demander un chiffrage de prestation. À voir avec Luc et Gilles ce que nous faisons.
## Travaux
**MAJ du 1er Mars 2024 :** test de déploiement d'un cluster Postgresl à l'aide du rôle Ansible de Vitabaks [Postgresl cluster](https://github.com/vitabaks/postgresql_cluster). Le pad des modes opératoires utilisés pour les tests de déploiements se trouve [ici](https://codimd.mim-libre.fr/BylVWuYJSmSM2UgZ9404Pw).
Premier test en mode "PostgreSQL High-Availability only", à l'aide d'ETCD. Pas de load balancing à l'aide d'HA Proxy et KeepAlived dans l'immédiat.
## Outils Déploiement
J'ai commencé à écrire quelques rôles Ansible et leurs playbooks, et un script "de base", pour lancer l'affaire.
### Scripts
Je fais mes essais de déploiement à l'aide d'un script bash "brut de fonderie" dans l'immédiat.
Ce dernier se trouve là : [pgcluster-deploy.sh](https://gitlab.mim-libre.fr/infrabricks/scripts/pgcluster-deploy)
### Rôles Ansible
Ces rôles sont écrits pour Debian pour le moment.
Le but de ces rôles :
* installer les VMs du cluster sur l'instance OpenNebula du PCLL
* configurer les dépôts Postgresql et Dalibo
* installer les paquets Postgresql (paquets postgresql.org), pgbackrest
* installer un venv Python
* installer et configurer le module Python PGlift dans le venv
* configuration de pgBackRest à l'aide de PGlift
* création d'une instance pgsql à l'aide de PGlift
* création d'utilisateurs et bases de données avec PGlift (à venir)
Les rôles sont hébergés ici pour le moment :
* [ONE VMs deploy](https://gitlab.mim-libre.fr/infrabricks/ansible/roles/one_vms_deploy)
* [PGSQL install](https://gitlab.mim-libre.fr/infrabricks/ansible/roles/pgsql-install)
* [PGlift install](https://gitlab.mim-libre.fr/infrabricks/ansible/roles/pglift-install)
* [PGSQL cluster](https://gitlab.mim-libre.fr/stephane.paillet.ext/pgsql_cluster) : ancien rôle "tout en un" de départ, mais trop compliqué à déboguer et maintenir dans l'immédiat
## Ressources
* [Livre blanc Socle Postgreql](https://public.dalibo.com/exports/marketing/livres_blancs/dlb02_industrialiser_postgresql/DLB02_Industrialiser_PostgreSQL.pdf) (industrialisation pgsql par Dalibo)
* [Accès aux manuels de formations Dalibo](https://blog.dalibo.com/2022/01/27/maj_manuels.html)
* [Manuel formation DBA1 Dalibo](https://public.dalibo.com/exports/formation/manuels/formations/dba1/dba1.handout.pdf)
* [Manuel formation DB2 Dalibo](https://public.dalibo.com/exports/formation/manuels/formations/dba2/dba2.handout.pdf)
### Ressources générales
* [Outils pgsql gestion de cluster](https://www.postgresql.org/download/products/3-clusteringreplication/)
* [Dépôts Github de Dalibo](https://github.com/dalibo)
* [Dépôts Gitlab de Dalibo](https://gitlab.com/dalibo)
### Déploiement / gestion clusters pgsql
* [Outils pgsql gestion de cluster](https://www.postgresql.org/download/products/3-clusteringreplication/)
* [Cornac](https://gitlab.com/dalibo/cornac) (IHM déploiements de clusters pgsql)
* [PGlift documentation](https://pglift.readthedocs.io/)
* [PGlift Ansible](https://gitlab.com/dalibo/pglift-ansible) (collection Ansible de déploiement de cluster utilisant pglift)
* [Présentation Temboard 8](https://videos.miolo.org/w/jU86JXVYU3U7S4VUfSQkpz), IHM monitoring de noeuds PGSQL (vidéo)
### Sauvegardes / restaurations / réplication
* [Sauvegarde et restauration PostgreSQL : les différentes approches possibles](https://blog.dalibo.com/2022/09/14/sauvegarde_approches_possibles.html)
* [Sauvegarde et restauration PostgreSQL : utiliser la réplication](https://blog.dalibo.com/2022/09/22/sauvegarde_restauration_replication.html)
* [Support de formation "Sauvegardes et réplication"](https://public.dalibo.com/exports/formation/manuels/formations/dba3/dba3.handout.pdf) (Dalibo)
* [Solutions de réplication](https://public.dalibo.com/exports/formation/manuels/modules/w1/w1.handout.html)
### Postgresql dans des conteneurs
* Comment mettre un éléphant sur un porte-conteneur en 3 mouvements ?
* [vidéo conf PG Day 2022](https://videos.miolo.org/w/7u2QQkhW1WvGiuo1HXhny9) et la [version condensée lors de l'OSXP 2022](https://videos.miolo.org/w/f55v4NAsRbei1b28tv6FS9)
* [diaporama](https://pgday.fr/docs/2022/06-Comment_mettre_un_%C3%A9l%C3%A9phant_sur_un_porte-conteneur_en_3_mouvements-Laetitia_Avrot.pdf) ou mieux [ici](https://l_avrot.gitlab.io/slides/cnp_20220622.html#/) (plus complet)
* [Cloud Native Postgresql](https://cloudnative-pg.io/) (opérateur Kubernetes)
* [Experiences with running PostgreSQL on Kubernetes](https://goteleport.com/blog/running-postgresql-on-kubernetes/) (lien transmis par Nicolas)