Ansible создать пользователя postgresql с доступом ко всем таблицам?

это должно быть очень просто. Я хочу сделать оператор Ansible для создания пользователя Postgres, который имеет привилегии подключения к определенной базе данных и выберите/insert/update/delete привилегии для всех таблиц в этой конкретной базе данных. Я попробовал следующее:

  - name: Create postgres user for my app
    become: yes
    become_user: postgres
    postgresql_user:
      db: "mydatabase"
      name: "myappuser"
      password: "supersecretpassword"
      priv: CONNECT/ALL:SELECT,INSERT,UPDATE,DELETE

Я relation "ALL" does not exist

если я удалить ALL:, Я Invalid privs specified for database: INSERT UPDATE SELECT DELETE

2 ответов


Мне нужно было сначала создать пользователя, а затем предоставить права отдельно. Это работает как заклинание.

 - name: Create postgres user for my app
    become: yes
    become_user: postgres
    postgresql_user:
      name: "myappuser"
      password: "supersecretpassword"

  - name: Ensure we have access from the new user
    become: yes
    become_user: postgres
    postgresql_privs:
      db: mydatabase
      role: myappuser
      objs: ALL_IN_SCHEMA
      privs: SELECT,INSERT,UPDATE,DELETE

из ansible documentation модуль postgressql, priv должна быть " строка привилегий PostgreSQL в формате: таблица: priv1, priv2" Так что ваша задача должна быть

 - name: Create postgres user for my app
    become: yes
    become_user: postgres
    postgresql_user:
      db: "mydatabase"
      name: "myappuser"
      password: "supersecretpassword"
      priv: ALL:SELECT,INSERT,UPDATE,DELETE,CONNECT