
Ich versuche, eine VM mit PostgreSQL und Gitlab einzurichten. Ich verwende die folgenden Pakete: gitlabundpostgresql
Dies ist meine 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,
}
fast aus den Beispielen kopiert
Aber wenn ich versuche, meine VM bereitzustellen, erhalte ich immer
Error: Duplicate declaration: Package[postgresql-client] is already declared; cannot redeclare at /etc/puppet/modules/postgresql/manifests/client.pp:12 on node
Ich verweise nur darauf postgresql::server
und Gitlab stellt sicher, dass postgresql-client
es installiert ist, also beschwert es sich?
Antwort1
Das Problem hierbei ist, dass Sie in Puppet nicht zwei Ressourcen mit demselben Namen definieren können.
Das PostgreSQL-Modul definiert das Paket['postgresql-client'] hier:https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/client.pp#L8
Und GitLab hier:https://github.com/sbadia/puppet-gitlab/blob/master/manifests/setup.pp#L52
Da GitLab dieensure_packages
Funktion vonstdlib, dies sollte funktionieren, wenn Postgres vor Gitlab geladen wird, aber mit Puppet stellen Sie die Reihenfolge des Modulladens nicht sicher (heh, Entschuldigung).
Eine geeignete Lösung wäre, ensure_packages
es auch im PostgreSQL-Modul zu verwenden. Sie können es entweder lokal patchen oder die Doppeldefinition umgehen, indem Sie eine der postgresql-client
Paketdefinitionen entfernen.