Virtual-Machines

puppet gitlab postgresql 衝突

  • January 13, 2014

我正在嘗試使用 postgresql 和 gitlab 設置 VM。我正在使用以下軟體包: 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         => 'felix@psy-coding.com',
   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已安裝,所以它會抱怨嗎?

這裡的問題是,您不能在 Puppet 中定義兩個具有相同名稱的資源。

PostgreSQL 模組定義了包

$$ ‘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 使用stdlibensure_packages中的函式,因此如果在 gitlab 之前載入了 postgres,這應該可以工作,但是對於 Puppet,您不能確保(嘿,抱歉)模組載入的順序。

一個適當的修復也將ensure_packages在 PostgreSQL 模組中使用。您可以在本地修補它,也可以通過刪除其中一個postgresql-client包定義來解決雙重定義。

引用自:https://serverfault.com/questions/566987