Ansible-role-postgresql: Problema de huevo de gallina con usuarios y bases de datos

Creado en 20 abr. 2020  ·  9Comentarios  ·  Fuente: geerlingguy/ansible-role-postgresql

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.

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?

Todos 9 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

svanschalkwyk picture svanschalkwyk  ·  6Comentarios

GoodBoy962 picture GoodBoy962  ·  10Comentarios

NiftyMist picture NiftyMist  ·  5Comentarios

worldofchris picture worldofchris  ·  8Comentarios

FilBot3 picture FilBot3  ·  18Comentarios