puppet gitlab postgresql 冲突

puppet 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函数来自标准库,如果在 gitlab 之前加载 postgres,这应该可以工作,但是使用 Puppet 时您无法确保(呵呵,抱歉)模块加载的顺序。

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

相关内容