Como conceder ao Puppet permissões globais para o PostgreSQL?

1

O módulo oficial postgresql do puppetlabs permite a concessão de privilégios em um banco de dados específico.

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

isso seria executado:

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

No entanto, gostaria de executar consultas sobre permissões globais para determinado usuário:

  ALTER role myuser login createdb;

Existe uma maneira de fazer isso? Ou devo usar um módulo de fantoches diferente para o PostgreSQL?

    
por Tombart 17.03.2013 / 14:02

1 resposta

2

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

    
por 10.04.2014 / 15:56