2012-07-23 14 views
27

Aparentemente esto no es posible, pero no puedo creer que sea el único que lo necesite.Puppet: especificando una versión de un paquete para instalar

Quiero especificar la versión de php para instalar porque estoy trabajando en un proyecto anterior que requiere php 5.2.

En realidad, mi máquina virtual se basa en onírico con php 5.3

¿Tiene alguna solución para hacer esto?

Respuesta

45

Puede especificar una versión:

package { 'php' : 
    ensure => '5.2' , 
} 

Sin embargo, si esa versión de PHP RPM/DEB/paquete no está disponible en tu repositorio aguas arriba, entonces usted querrá a cualquiera:

  1. Encuentra una cesión temporal alternativo que tiene ese paquete, y agregarlo a su lista de recompra
  2. configurar su propio repo con el paquete
  3. la instalación desde su sistema de archivos, por provid ing una ruta al paquete:

    package { 'php' : 
        ensure => '5.2' , 
        source => '/some/path/to/php-5.2.rpm' , 
    } 
    
+0

Probé la solución a cambiar mi preferencia/fuente lista pero estoy teniendo problemas para descargar la clave pública de archive.debian: s – JulienD

+0

@opsmason: ¿El valor de la versión debe ser una cadena? ¿Puedes especificarlo como 'asegurar => 5.2'? – greenpool

+0

@greenpool: la versión es una cadena. Tome httpd-2.4.29 como un ejemplo :: 2.4.29 no es un flotador, ¡es una cadena! – opsmason

7

Esto se acerca bastante a la forma en que uso repositorios APT personalizado en marionetas con sus claves GPG

# put downloaded pgp keys into modulename/files/pgp/ 
# this will copy them all into /tmp 
file { '/tmp/pgp-keys': 
     ensure => directory, 
     recurse => true, 
     source => 'puppet:///modules/modulename/pgp', 
} 

# add any keys that you need 
exec { 'apt-key add': 
     command  => '/usr/bin/apt-key add /tmp/pgp-keys/number1.gpg.key &&/ 
         /usr/bin/apt-key add /tmp/pgp-keys/number2.gpg.key', 
     subscribe => File['/tmp/pgp-keys'], 
     refreshonly => true, 
} 

# make sure you add your custom apt repository 
file { 'cassandra.sources.list': 
     ensure => 'present', 
     path => '/etc/apt/sources.list.d/cassandra.sources.list', 
     source => 'puppet:///modules/modulename/cassandra.sources.list', 
     require => Exec['apt-key add'], 
} 

# update your package list 
exec { 'apt-get update': 
     command => '/usr/bin/apt-get update', 
     require => File['cassandra.sources.list'], 
} 

# Install your specific package - I haven't actually used this yet, 
# based on answer by opsmason 
package { 'cassandra': 
     ensure => '1.2.0', 
     require => Exec['apt-get update'], 
} 
Cuestiones relacionadas