Назад | Перейти на главную страницу

Как предоставить в Puppet глобальные разрешения для PostgreSQL?

Официальный модуль postgresql от кукольные лаборатории разрешить предоставление привилегий для конкретной базы данных.

postgresql::database_grant{'grant to myuser':
    privilege   => 'CREATE',
    db          => 'app_production',
    role        => 'myuser',
  }

это выполнит:

 GRANT ${privilege} ON database ${db} TO ${role};

Однако я хотел бы выполнить запрос о глобальных разрешениях для данного пользователя:

  ALTER role myuser login createdb;

Есть способ как это сделать? Или мне следует использовать другой модуль марионеток для PostgreSQL?

Решение, которое мне подходит, - использовать 'postgresql :: сервер :: роль' с участием createdb => истина вместо postgresql :: database_grant. Это имеет смысл, поскольку вы хотите изменить глобальное поведение пользователя, а не то, которое связано с конкретной базой данных.

Это пример директивы, которая добавляет пользователя вместе с привилегиями createdb:

postgresql::server::role { 'username':
  password_hash => postgresql_password('username', 'password'),
  createdb  => true
}

Учитывая «бродяга» в качестве имени пользователя, это ожидаемый результат:

Role[vagrant]/Postgresql_psql[ALTER ROLE "vagrant" CREATEDB]/command: command changed '' to 'ALTER ROLE "vagrant" CREATEDB'

Важно: если вы используете версию 2 модуля, вы можете использовать postgresql :: role вместо postgresql :: server :: role. Видеть https://forge.puppetlabs.com/puppetlabs/postgresql#upgrading