Al comienzo de este rol, las bases de datos se crearon primero y los usuarios después. Esto permitió usar la configuración db
en postgresql_users
. Desde https://github.com/geerlingguy/ansible-role-postgresql/commit/929fe7ed3c1920d7278ab9b57fc6a59d31e58166#diff -2444ad0870f91f17ca6c2a5e96b26823 esto se ha cambiado, de modo que los segundos se crean primero y las bases de datos. Esto permite configurar owner
en postgresql_databases
pero ahora db
en postgresql_users
ya no funciona.
Supongo que la única forma de solucionar esto es crear primero los usuarios y las bases de datos y aplicar la configuración db
para postgresql_users
en un segundo paso, cuando se hayan creado todas las bases de datos.
También me encontré con este problema. Creé una tarea posterior para usar el módulo postgresql_privs para lograr eso:
postgresql_privs:
db: postgres
privs: ALL
type: database
obj: thedb
role: theuser
become: yes
become_user: postgres
¡Sería mucho más conveniente poder solo db: thedb
en el rol!
Me encantaría evitar escribir un mensaje de "yo también", pero sí, puede confirmar el problema del huevo de gallina y me vuelve loco: /
¿Alguna actualización sobre esto?
Esto debería estar realmente resuelto ... esta solución # 135 funciona ... ¿Por qué no está ya fusionada?
Puedo evitar este problema, invertir la línea 22 y 23 (import_tasks) en main.yml
@notpixxl con solo intercambiar la base de datos y la tarea de creación de usuarios, está rompiendo la funcionalidad que requiere que el usuario exista antes de la creación de la base de datos (por ejemplo, establecer la propiedad). El PR mencionado por @Pepan parece estar bien y debería fusionarse. Supongo que @geerlingguy (ping) simplemente no tuvo tiempo todavía para investigar esto y confirmar el MR.
@Migsi, sí, me di cuenta después, así que escribo un nuevo rol con el módulo postgres_privs, ahora lo uso después de las creaciones de db y users y puedo ajustar los privs en los objetos.
¿Por qué el parche aún no se fusionó? ¿No puedo imaginar que se pretenda mantener esta mala conducta?
Lo poco divertido de esto es que durante años, muchos usuarios del rol me suplicaron que cambiara el orden. Contra mi mejor juicio, fusioné ese cambio. Y ahora, la otra mitad de los usuarios del rol lo quieren de vuelta en el otro orden.
¿Hay alguna forma de hacer que funcione en ambos sentidos? Me gusta en el orden original (no en la forma en que está actualmente) pero puedo cambiar las cosas para que funcionen de cualquier manera por mi parte, por lo que no es un gran problema para mí.
Por lo que entiendo este problema, en realidad no se puede resolver simplemente cambiando el orden. La capacidad de establecer postgresql_users
para una determinada base de datos O permitir que un usuario posea una base de datos no se puede realizar si la estructura se mantiene como está ahora. Es por eso que la solución propuesta no es simplemente cambiar el orden, sino agregar una segunda llamada al módulo postgresql_user
después de crear las bases de datos. En realidad, esto permite agregar usuarios a la base de datos utilizando la propiedad db
del rol.
EDITAR:
¿Hay alguna forma de hacer que funcione en ambos sentidos?
La solución propuesta debería permitir exactamente eso.
Comentario más útil
Me encantaría evitar escribir un mensaje de "yo también", pero sí, puede confirmar el problema del huevo de gallina y me vuelve loco: /
¿Alguna actualización sobre esto?