傀儡gitlab postgresql衝突

傀儡gitlab postgresql衝突

我正在嘗試使用 postgresql 和 gitlab 設定虛擬機器。我正在使用以下軟體包: GitLab&PostgreSQL

這是我的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,
}

幾乎複製了範例

但是當我嘗試配置我的虛擬機器時,我總是得到

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函數來自標準函式庫,如果 postgres 在 gitlab 之前加載,這應該可以工作,但是使用 Puppet 你不能確保(呵呵,抱歉)模組加載的順序。

正確的修復ensure_packages也可以在 PostgreSQL 模組中使用。您可以在本機修補該問題,也可以透過刪除其中一個套件定義來解決雙重定義問題postgresql-client

相關內容