木偶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, } 

几乎被复制的例子

但是当我尝试configuration我的虚拟机时,我总是得到

 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模块在这里定义了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使用stdlib中的ensure_packages函数,所以如果postgres在gitlab之前加载的话,这应该可以工作,但是使用Puppet你不能确保(heh,对不起)模块加载的顺序。

一个适当的解决方法是在PostgreSQL模块中也使用ensure_packages 。 您可以在本地进行修补,也可以通过删除其中一个postgresql-client包定义来解决双重定义问题。