Ansible: присоединить роль к пользователю в postgres - PullRequest
0 голосов
/ 19 июня 2019

У меня уже есть роль в Postgres, а именно readonly. Он имеет доступ только для чтения ко всем таблицам во всех базах данных.

Я хочу прикрепить эту роль к пользователю, чтобы он / она также получал доступ только для чтения ко всем таблицам в одной команде. Как я могу выполнить следующую команду, используя модуль postgresql_user от ansible?

mydb=> grant readonly to dev_username;

РЕДАКТИРОВАТЬ: добавить больше деталей

Это то, что я пробовал,

- name: Postgres
  postgresql_user:
    login_host: xx.xx.com
    login_password: mypassword
    login_user: myuser
    db: mydb
    name: dev_username
    password: mypassword
    priv: "readonly"
    expires: infinity
    state: present

Это дает мне эту ошибку,

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: __main__.InvalidPrivsError: Invalid privs specified for database: READONLY
fatal: [127.0.0.1]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/var/folders/h1/w57gk9nx0xl8j6xb_cqv3wb00000gn/T/ansible_2ema8gl3/ansible_module_postgresql_user.py\", line 855, in <module>\n    main()\n  File \"/var/folders/h1/w57gk9nx0xl8j6xb_cqv3wb00000gn/T/ansible_2ema8gl3/ansible_module_postgresql_user.py\", line 746, in main\n    privs = parse_privs(module.params[\"priv\"], db)\n  File \"/var/folders/h1/w57gk9nx0xl8j6xb_cqv3wb00000gn/T/ansible_2ema8gl3/ansible_module_postgresql_user.py\", line 686, in parse_privs\n    (type_, ' '.join(priv_set.difference(VALID_PRIVS[type_]))))\n__main__.InvalidPrivsError: Invalid privs specified for database: READONLY\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 1}

Я тоже пытался с role_attr_flags: readonly, но опять не получилось. В официальных документах четко указано, что в role_attr_flags и priv допустимы только некоторые значения, я знал, что это не сработает, но я сделал это только ради этого.

Возможно ли это даже с ansible?

1 Ответ

1 голос
/ 20 июня 2019

Резюме терминологии postgresql: пользователь - это роль, группа - это роль.Первый имеет права входа, второй обычно нет.

postgresql_user Анонимный модуль не позволяет назначать пользователю существующую роль.

Сначала вам нужно будет создать пользователя изатем добавьте другую роль с помощью postgresql_membership

...