Die Angabe einer Quelle in Puppet scheint nicht zu funktionieren

7

Ich habe versucht, ein Manifest für die Installation von Postgres 9.1 mit Puppet auf einem Centos 5-Server zu erstellen. Ich habe versucht, die Anweisungen unter http://wiki.postgresql.org/wiki/YUM_Installation anzupassen , um dies zu erreichen, und wenn ich einen manuellen Prozess durchlaufe, konnte ich dies tun.

Es scheint mir daher, dass ein Marionettenmanifest enthält

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

Beim Versuch, dieses Manifest anzuwenden, bekomme ich jedoch

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

Gibt es erfahrene Puppenspieler, die mir helfen können?

Herr Wilde
quelle
1
Postgresql-Tag entfernt - Diese Frage gilt für alle Pakete mit Abhängigkeiten, die in einem lokalen Repository nicht verfügbar sind. +1 für den genauen Text der Fehlermeldung, Befehle und (einige) Versionsnummern.
Craig Ringer

Antworten:

9

Fügen Sie das Repo zu yum hinzu (natürlich mit Puppet) und geben Sie dann die Repo-Ressource als Abhängigkeit vom Paket an. Dies erleichtert später das Upgrade. Weitere Informationen finden Sie in den Puppendokumenten zu Yum Repos .

Steve Wills
quelle
3

Vielen Dank an alle Hilfe von Steve und Paul. Der endgültige Code, den ich verwendet habe, ist

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

Das macht den Trick!

Herr Wilde
quelle
gpgcheck => 0 ist nicht die beste Idee, wenn Sie das vermeiden können. Veröffentlichen postgresql wirklich nicht signierte RPMs in ihrem Yumrepo?
Paul Gear
1
Ich werde eine Änderung an gpgcheck => 1 vornehmen, wenn sie ihre RPMs signieren. Vielen Dank für den Rat
Herr Wilde
2

Laut http://docs.puppetlabs.com/references/stable/type.html#package hängt die Quelle vom zugrunde liegenden Paketanbieter ab, der sie unterstützt. Meines Wissens erlaubt yum keine willkürlichen URLs - Sie müssen ein Repo angeben (wie Steve Wills erwähnt hat).

Möglicherweise können Sie dies umgehen, indem Sie 'provider => "rpm"' nur für diese Paketressource angeben, aber ich habe dies selbst nicht versucht.

Paul Gear
quelle
1
Yum erlaubt zwar beliebige URLs, kann jedoch nicht herausfinden, dass die URL Teil eines Yum-Respositorys ist, und Abhängigkeiten aus demselben Repository abrufen. Sie können nur dann von einer URL zu einem RPM installieren, wenn Sie ein lokal definiertes Repo haben, das alle Abhängigkeiten enthält, oder wenn die Abhängigkeiten des Pakets bereits installiert sind.
Craig Ringer