꼭두각시 gitlab postgresql 충돌

꼭두각시 gitlab postgresql 충돌

postgresql과 gitlab을 사용하여 VM을 설정하려고 합니다. 다음 패키지를 사용하고 있습니다. gitlab&포스트그레SQL

이것은 내 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,
}

예제에서 거의 복사됨

하지만 VM을 프로비저닝하려고 하면 항상 다음과 같은 오류가 발생합니다.

Error: Duplicate declaration: Package[postgresql-client] is already declared; cannot redeclare at /etc/puppet/modules/postgresql/manifests/client.pp:12 on node

나는 단지 참조하고 postgresql::server있으며 gitlab은 그것이 postgresql-client설치되어 있는지 확인하므로 불평합니까?

답변1

여기서 문제는 Puppet에서 동일한 이름을 가진 두 개의 리소스를 정의할 수 없다는 것입니다.

PostgreSQL 모듈은 여기에서 Package['postgresql-client']를 정의합니다.https://github.com/puppetlabs/puppetlabs-postgresql/blob/master/manifests/client.pp#L8

GitLab은 다음과 같습니다.https://github.com/sbadia/puppet-gitlab/blob/master/manifests/setup.pp#L52

GitLab이 사용하는 것처럼ensure_packages기능stdlib, postgres가 gitlab보다 먼저 로드되면 작동하지만 Puppet에서는 모듈 로드 순서를 보장하지 않습니다(죄송합니다).

ensure_packages적절한 수정은 PostgreSQL 모듈에서도 사용됩니다 . 로컬에서 패치를 적용하거나 패키지 정의 중 하나를 제거하여 이중 정의를 해결할 수 있습니다 postgresql-client.

관련 정보