Ansible-role-postgresql: Problème Chicken Egg avec les utilisateurs et les bases de données

Créé le 20 avr. 2020  ·  9Commentaires  ·  Source: geerlingguy/ansible-role-postgresql

Au début de ce rôle, les bases de données ont été créées en premier et les utilisateurs après. Cela a permis d'utiliser le paramètre db sur le postgresql_users . Depuis https://github.com/geerlingguy/ansible-role-postgresql/commit/929fe7ed3c1920d7278ab9b57fc6a59d31e58166#diff -2444ad0870f91f17ca6c2a5e96b26823, cela a été modifié, de sorte que les utilisateurs sont créés en premier et les bases de données en second. Cela permet de régler le owner sur postgresql_databases mais maintenant le db sur postgresql_users ne fonctionne plus.

Je suppose que la seule façon de résoudre ce problème est de créer d'abord les utilisateurs et les bases de données et d'appliquer le paramètre db pour le postgresql_users dans une deuxième étape, lorsque toutes les bases de données ont été créées.

Commentaire le plus utile

J'adorerais éviter d'écrire un message "moi aussi", mais oui, peut confirmer le problème de l'œuf de poule et me rend dingue :/

Des mises à jour à ce sujet ?

Tous les 9 commentaires

Je suis également tombé sur ce problème. J'ai créé une tâche ultérieure pour utiliser le module postgresql_privs pour accomplir cela :

postgresql_privs:
  db: postgres
  privs: ALL
  type: database
  obj: thedb
  role: theuser
become: yes
become_user: postgres

Ce serait beaucoup plus pratique de pouvoir seulement db: thedb dans le rôle !

J'adorerais éviter d'écrire un message "moi aussi", mais oui, peut confirmer le problème de l'œuf de poule et me rend dingue :/

Des mises à jour à ce sujet ?

Cela devrait être vraiment résolu... cette solution n° 135 fonctionne... Pourquoi n'est-elle pas déjà fusionnée ?

Je peux contourner ce problème, inverser les lignes 22 et 23 (import_tasks) sur main.yml

@notpixxl en échangeant simplement la tâche de création de base de données et d'utilisateur, vous cassez la fonctionnalité qui nécessite que l'utilisateur existe avant la création de la base de données (par exemple, définir la propriété). Le PR mentionné par @Pepan semble bien et devrait être fusionné. Je suppose que @geerlingguy (ping) n'a pas encore eu le temps d'examiner cela et de confirmer le MR.

@Migsi ouais je l'ai réalisé après, donc j'écris un nouveau rôle avec le module postgres_privs, maintenant je l'utilise après les créations db et des utilisateurs et je peux affiner les privs sur les objets.

Pourquoi le patch n'a-t-il toujours pas été fusionné ? Je ne peux pas imaginer qu'il est destiné à garder cette mauvaise conduite?

Ce qui n'est pas amusant à ce sujet, c'est que pendant des années, de nombreux utilisateurs du rôle me suppliaient de changer l'ordre. Contre mon meilleur jugement, j'ai fusionné ce changement. Et maintenant, l'autre moitié des utilisateurs du rôle veulent le récupérer dans l'autre ordre.

Y a-t-il un moyen de le faire fonctionner dans les deux sens ? Je l'aime dans l'ordre d'origine (pas tel qu'il est actuellement) mais je peux changer les choses pour fonctionner de toute façon de mon côté, donc ce n'est pas un gros problème pour moi.

Pour autant que je comprends ce problème, il n'est en fait pas résolvable en changeant simplement l'ordre. La possibilité de définir le postgresql_users pour une certaine base de données OU de laisser un utilisateur posséder une base de données ne peut pas être effectuée à la fois si la structure est conservée telle qu'elle est actuellement. C'est pourquoi le correctif proposé ne modifie pas simplement l'ordre mais ajoute un deuxième appel au module postgresql_user après avoir créé les bases de données. Cela permet en fait d'ajouter des utilisateurs à la base de données en utilisant la propriété db du rôle.

ÉDITER:

Y a-t-il un moyen de le faire fonctionner dans les deux sens ?

Le correctif proposé devrait permettre exactement cela.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

NiftyMist picture NiftyMist  ·  5Commentaires

svanschalkwyk picture svanschalkwyk  ·  6Commentaires

FilBot3 picture FilBot3  ·  18Commentaires

GoodBoy962 picture GoodBoy962  ·  10Commentaires

worldofchris picture worldofchris  ·  8Commentaires