如何在 Puppet 中授予 PostgreSQL 全局权限?

如何在 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 使用不同的 puppet 模块?

答案1

对我有用的解决方案是使用'postgresql::服务器::角色' 和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

相关内容