diff --git a/manifests/site.pp b/manifests/site.pp --- a/manifests/site.pp +++ b/manifests/site.pp @@ -138,12 +138,12 @@ include role::swh_base_database include profile::postgresql::server include profile::pgbouncer - include ::profile::devel::postgres + include profile::postgresql::client } node 'scheduler0.internal.staging.swh.network' { include role::swh_scheduler - include ::profile::devel::postgres + include profile::postgresql::client } node 'gateway.internal.staging.swh.network' { @@ -152,7 +152,7 @@ node 'storage0.internal.staging.swh.network' { include role::swh_base_storage - include ::profile::devel::postgres + include profile::postgresql::client } node /^worker\d\.internal\.staging\.swh\.network$/ { @@ -168,7 +168,7 @@ include role::swh_deposit include profile::postgresql::server include profile::pgbouncer - include ::profile::devel::postgres + include profile::postgresql::client } node 'vault.internal.staging.swh.network' { diff --git a/site-modules/profile/manifests/devel/postgres.pp b/site-modules/profile/manifests/devel/postgres.pp --- a/site-modules/profile/manifests/devel/postgres.pp +++ b/site-modules/profile/manifests/devel/postgres.pp @@ -1,36 +1,8 @@ +# Profile to install development postgresql packages class profile::devel::postgres { $packages = lookup('packages::devel::postgres', Array, 'unique') package { $packages: ensure => present, } - - $dbs = lookup('swh::postgres::service::dbs', Array, 'deep') - - # Explicitly install the configuration files per user's home - # TL;DR the pgpass must be readonly per user so we can't use the global one - $users = lookup('swh::postgres::service::users', Array, 'deep') - each ($users) | $user | { - if $user == 'root' { - $home = '/root' - } else { - $home = "/home/${user}" - } - - file {"${home}/.pg_service.conf": - ensure => file, - content => template('profile/postgres/pg_service.conf.erb'), - owner => $user, - group => $user, - mode => '0400', - } - file {"${home}/.pgpass": - ensure => file, - content => template('profile/postgres/pgpass.conf.erb'), - owner => $user, - group => $user, - mode => '0400', - } - } - } diff --git a/site-modules/profile/manifests/postgresql/client.pp b/site-modules/profile/manifests/postgresql/client.pp --- a/site-modules/profile/manifests/postgresql/client.pp +++ b/site-modules/profile/manifests/postgresql/client.pp @@ -4,4 +4,35 @@ package { 'postgresql-client': ensure => present, } + + # This part installs per user the postgresql client files ~/.pg_service.conf + # and ~/.pgpass https://intranet.softwareheritage.org/wiki/Databases + $dbs = lookup('swh::postgres::service::dbs', Array, 'deep') + + # Explicitly install the configuration files per user's home + # TL;DR the pgpass must be readonly per user so we can't use the global one + $users = lookup('swh::postgres::service::users', Array, 'deep') + each ($users) | $user | { + if $user == 'root' { + $home = '/root' + } else { + $home = "/home/${user}" + } + + file {"${home}/.pg_service.conf": + ensure => file, + content => template('profile/postgres/pg_service.conf.erb'), + owner => $user, + group => $user, + mode => '0400', + } + file {"${home}/.pgpass": + ensure => file, + content => template('profile/postgres/pgpass.conf.erb'), + owner => $user, + group => $user, + mode => '0400', + } + } + }