¿Puede Puppet actualizar el paquete a la última versión menor?

¿Puede Puppet actualizar el paquete a la última versión menor?

Por ejemplo tengo instalado php-fpm:

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

El objetivo es mantener PHP en la última versión 5.4. Actualmente tengo esto en el manifiesto: ensure => '5.4.16-23.el7_0.3',.

Eso no se actualizará si sale una nueva versión o lanzamiento, aunque no quiero que se actualice a 5.5 inesperadamente.

He probado lo siguiente:

  • ensure => '5.4.16',
  • ensure => '5.4',
  • ensure => '5.4.16-*',
  • ensure => '5.4.*',

Todo lo cual me da algo similar a:

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

Al estar en RHEL/CentOS, probablemente cumpla con el requisito de tener simplemente ensure => latest,PHP, solo estoy usando PHP como ejemplo. Todavía me gusta saber:

  • La forma títere de gestionar lanzamientos menores. (Si hay uno o dos... Leí que al menos puedes mantener tu propio repositorio, pero ¿existe una sintaxis de marionetas pura como la que supuse anteriormente?)
  • Obviamente, hay paquetes distintos de PHP, ¿cómo usaría Puppet para administrar paquetes que quizás sean de un repositorio diferente, o quizás para una distribución que no sea RHEL/CentOS, etc.?
  • Leí en la referencia de la marioneta que garantizar que "los valores pueden coincidir con /./", ¿es esa expresión regular o qué?http://docs.puppetlabs.com/references/3.7.5/type.html#package-attribute-ensure

Estoy ejecutando Puppet 3.7.5 de código abierto en RHEL/CentOS 7.

Respuesta1

No, Puppet no puede actualizar a la versión menor más reciente, pero solo puede garantizar una versión específica o puede garantizar que el paquete esté presente o sea el más reciente.

Lo que debes hacer es crear tus propios repositorios personalizados, que tendrán solo paquetes de tu relevancia (por ejemplo, serie 5.4 de PHP) y luego en Puppet simplemente configura:

package { 'php-fpm': ensure => latest }

Esto verificará cada ejecución de títeres si hay una actualización.

Además, si no utiliza repositorios adicionales que ofrecen paquetes PHP más nuevos para su sistema, ensure => latestse comportará exactamente como lo desea, debido a la forma en que CentOS actualiza sus paquetes. Nunca habrá php-5.5 en CentOS 7, pero php permanecerá en la serie 5.4. 5.5 y cualquier actualización más reciente se proporcionará a través de php55, php56, etc., lo que significa que tendrá que cambiar el nombre del paquete en el manifiesto de Puppet para reflejar la versión que desea, por ejemplo:

package { 'php56-fpm': ensure => latest }

Entonces, la respuesta es NO, debe asegurarse de que sus repositorios solo ofrezcan la versión principal que desea y luego pueda usarla ensure => latestdentro de Puppet.

Para configurar eso en los repositorios, puedes usar cosas como:

  • incluir
  • excluir
  • prioridad

información relacionada