A solução que funciona para mim é usar ' postgresql :: server :: role ' com createdb = > true em vez de 'postgresql :: database_grant'. Faz sentido se você quiser alterar o comportamento global do usuário, não aquele relacionado ao banco de dados específico.
Esta é uma diretiva de exemplo que adiciona o usuário junto com os privilégios createdb:
postgresql::server::role { 'username':
password_hash => postgresql_password('username', 'password'),
createdb => true
}
Dado 'vagrant' como o nome do usuário, esta é a saída esperada:
Role[vagrant]/Postgresql_psql[ALTER ROLE "vagrant" CREATEDB]/command: command changed '' to 'ALTER ROLE "vagrant" CREATEDB'
Importante: Se você usa a versão 2 do módulo, você pode usar postgresql :: role em vez de postgresql :: server :: role. Consulte o link