
Estou tentando configurar uma VM com postgresql e gitlab. Estou usando os seguintes pacotes: gitlab&postgresql
Este é o meu 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,
}
quase copiado dos exemplos
Mas quando tento provisionar minha VM, sempre recebo
Error: Duplicate declaration: Package[postgresql-client] is already declared; cannot redeclare at /etc/puppet/modules/postgresql/manifests/client.pp:12 on node
Estou apenas me referindo ao postgresql::server
e o gitlab garante que postgresql-client
está instalado, então ele reclama?
Responder1
O problema aqui é que você não pode definir dois recursos com o mesmo nome no Puppet.
O módulo PostgreSQL define o Package['postgresql-client'] aqui:https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/client.pp#L8
E GitLab aqui:https://github.com/sbadia/puppet-gitlab/blob/master/manifests/setup.pp#L52
Como o GitLab usa oensure_packages
função destdlib, isso deve funcionar se o postgres for carregado antes do gitlab, mas com o Puppet você não garante (heh, desculpe) a ordem de carregamento do módulo.
Uma correção adequada seria usar ensure_packages
também o módulo PostgreSQL. Você pode corrigir isso localmente ou solucionar a definição dupla removendo uma das postgresql-client
definições de pacote.