Назад | Перейти на главную страницу

марионетка 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         => '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 определения пакетов.