
Ich habe beispielsweise php-fpm installiert:
Name : php-fpm
Arch : x86_64
Version : 5.4.16
Release : 23.el7_0.3
Size : 4.5 M
Repo : installed
From repo : updates
Summary : PHP FastCGI Process Manager
URL : http://www.php.net/
License : PHP and Zend and BSD
Das Ziel ist, PHP auf dem neuesten Stand der Version 5.4 zu halten. Derzeit habe ich Folgendes im Manifest: ensure => '5.4.16-23.el7_0.3',
.
Das wird nicht aktualisiert, wenn eine neue Version oder ein neues Release herauskommt, obwohl ich nicht möchte, dass es unerwartet auf 5.5 aktualisiert wird.
Ich habe Folgendes versucht:
ensure => '5.4.16',
ensure => '5.4',
ensure => '5.4.16-*',
ensure => '5.4.*',
Alle von ihnen geben mir etwas Ähnliches wie:
change from 5.4.16-23.el7_0.3 to 5.4 failed: Could not update: Failed to update to version 5.4, got version 5.4.16-23.el7_0.3 instead
Da dies auf RHEL/CentOS läuft, erfüllt es wahrscheinlich die Anforderung, einfach ensure => latest,
PHP zu haben. Ich verwende PHP nur als Beispiel. Ich möchte noch wissen:
- Die Puppet-Methode zum Verwalten kleinerer Releases. (Wenn es eins oder zwei gibt ... Ich habe gelesen, dass Sie zumindest Ihr eigenes Repo verwalten können, aber gibt es eine reine Puppet-Syntax wie die, die ich oben vermutet habe?)
- Es gibt offensichtlich auch andere Pakete als PHP. Wie würden Sie Puppet verwenden, um Pakete zu verwalten, die möglicherweise aus einem anderen Repo stammen oder vielleicht für eine andere Distribution als RHEL/CentOS usw. bestimmt sind?
- Ich habe in der Puppet-Referenz gelesen, dass sichergestellt wird, dass „Werte mit /./ übereinstimmen können“. Ist das ein regulärer Ausdruck oder was?http://docs.puppetlabs.com/references/3.7.5/type.html#package-attribute-ensure
Ich verwende Open Source Puppet 3.7.5 auf RHEL/CentOS 7.
Antwort1
Nein, Puppet kann nicht auf die neuste Nebenversion aktualisieren, sondern nur eine bestimmte Version sicherstellen oder sicherstellen, dass das Paket vorhanden oder auf dem neuesten Stand ist.
Sie sollten Ihre eigenen benutzerdefinierten Repositories erstellen, die nur die für Sie relevanten Pakete enthalten (z. B. die PHP-Serie 5.4), und dann in Puppet einfach Folgendes festlegen:
package { 'php-fpm': ensure => latest }
Dadurch wird bei jedem Puppet-Lauf geprüft, ob ein Update vorliegt.
Wenn Sie keine zusätzlichen Repositories verwenden, die Ihrem System neuere PHP-Pakete anbieten, ensure => latest
verhält sich das System genau so, wie Sie es möchten – aufgrund der Art und Weise, wie CentOS seine Pakete aktualisiert. In CentOS 7 wird es nie php-5.5 geben, aber php wird bei der 5.4-Serie bleiben. 5.5 und alle neueren Updates werden über php55, php56 usw. bereitgestellt – das bedeutet, dass Sie den Paketnamen im Puppet-Manifest ändern müssen, um die gewünschte Version widerzuspiegeln, zum Beispiel:
package { 'php56-fpm': ensure => latest }
Die Antwort lautet also NEIN. Sie müssen sicherstellen, dass Ihre Repositories nur die gewünschte Hauptversion anbieten, die Sie dann ensure => latest
in Puppet verwenden können.
Um dies in Repositories einzurichten, können Sie Dinge wie Folgendes verwenden:
- enthalten
- ausschließen
- Priorität