conflito fantoche gitlab postgresql

conflito fantoche gitlab postgresql

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::servere o gitlab garante que postgresql-clientestá 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_packagesfunçã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_packagestambém o módulo PostgreSQL. Você pode corrigir isso localmente ou solucionar a definição dupla removendo uma das postgresql-clientdefinições de pacote.

informação relacionada