
Estoy intentando configurar una máquina virtual con postgresql y gitlab. Estoy usando los siguientes paquetes: gitlab&postgresql
Este es mi init.pp
class { 'postgresql::server':
ip_mask_deny_postgres_user => '0.0.0.0/32',
ip_mask_allow_all_users => '0.0.0.0/0',
listen_addresses => '*',
ipv4acls => ['host all johndoe 10.1.1.0/24 cert'],
manage_firewall => true,
postgres_password => 'TPSrep0rt!',
}
class {
'gitlab':
git_email => '[email protected]',
git_comment => 'GitLab Performates',
gitlab_domain => 'gitlab.foobar.fr',
gitlab_dbtype => 'pgsql',
gitlab_dbname => 'gitlab',
gitlab_dbuser => 'gitlab',
gitlab_dbpwd => 'gitlab',
ldap_enabled => false,
}
casi copiado de los ejemplos
Pero cuando intento aprovisionar mi VM siempre obtengo
Error: Duplicate declaration: Package[postgresql-client] is already declared; cannot redeclare at /etc/puppet/modules/postgresql/manifests/client.pp:12 on node
Solo estoy haciendo referencia a postgresql::server
gitlab y se asegura de que postgresql-client
esté instalado, así que ¿te quejas?
Respuesta1
El problema aquí es que no puedes definir dos recursos con el mismo nombre en Puppet.
El módulo PostgreSQL define el Paquete['postgresql-client'] aquí:https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/client.pp#L8
Y GitLab aquí:https://github.com/sbadia/puppet-gitlab/blob/master/manifests/setup.pp#L52
Como GitLab usa elensure_packages
función debiblioteca estándar, esto debería funcionar si postgres se carga antes que gitlab, pero con Puppet no aseguras (je, lo siento) el orden de carga del módulo.
Una solución adecuada también sería usarla ensure_packages
en el módulo PostgreSQL. Puede parchear eso localmente o solucionar la doble definición eliminando una de las postgresql-client
definiciones del paquete.