Я пытаюсь настроить виртуальную машину с помощью 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 => '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 использует ensure_packages
функция от stdlib, это должно работать, если postgres загружается до gitlab, но с Puppet вы не гарантируете (хех, извините) порядок загрузки модулей.
Правильное исправление будет использовать ensure_packages
в модуле PostgreSQL тоже. Вы можете исправить это локально или обойти двойное определение, удалив один из postgresql-client
определения пакетов.