Postgresql
如何在 Puppet 中授予 PostgreSQL 的全域權限?
puppetlabs的官方 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 使用不同的 puppet 模組?
對我有用的解決方案是使用’ postgresql::server::role ‘和createdb => true而不是’postgresql::database_grant’。這是有道理的,因為您想更改使用者的全域行為,而不是與特定數據庫相關的行為。
這是一個範例指令,它添加了使用者以及 createdb 權限:
postgresql::server::role { 'username': password_hash => postgresql_password('username', 'password'), createdb => true }
給定 ‘vagrant’ 作為使用者名,這是預期的輸出:
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