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.
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.
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 ?