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

Указание источника в марионетке не работает

Я пытался создать манифест для установки postgres 9.1 с помощью марионетки на сервере Centos 5. Я пытался адаптировать инструкции на http://wiki.postgresql.org/wiki/YUM_Installation чтобы добиться этого, и когда я прохожу ручной процесс, я смог.

Мне кажется, что марионеточный манифест, содержащий

package { 'postgresql91-server':
  ensure => installed,
  source => 'http://yum.postgresql.org/9.1/redhat/rhel-5-x86_64/pgdg-centos91-9.1-4.noarch.rpm'
}

однако при попытке применить этот манифест я получаю

err: /Stage[main]//Package[postgresql91-server]/ensure: change from absent to present failed: Could not find package postgresql91-server

Есть ли опытные кукловоды, способные мне помочь?

Добавьте репо в yum (конечно, используя марионетку), затем укажите ресурс репо как зависимость пакета. Это упростит обновление в дальнейшем. См. Документацию по марионетке на ням репо для получения дополнительной информации.

Спасибо за помощь Стива и Пола. Последний код, который я использовал, это

yumrepo { "postgres":
  baseurl => "http://yum.postgesql.org/9.1/redhat/rhel-5x86_64/",
  descr => "Postgres 9.1 repository",
  enabled => 1,
  gpgcheck => 1
}

package { 'postgresql91-server' :
  ensure => installed,
}

Это трюк!

В соответствии с http://docs.puppetlabs.com/references/stable/type.html#package, источник зависит от поддерживающего его поставщика пакетов. Насколько мне известно, yum не допускает произвольных URL-адресов - вы должны указать репо (как упомянул Стив Уиллс).

Вы можете обойти это, указав 'provider => "rpm"' только для этого ресурса пакета, но я сам не пробовал.