Puppet: указание версии пакета для установки

Видимо это невозможно, но я не могу поверить, что это нужно только мне.

Я хочу указать версию php для установки, потому что я работаю над старым проектом, требующим php 5.2.

На самом деле моя виртуальная машина основана на Oneiric с php 5.3.

У вас есть какое-нибудь решение для этого?


person JulienD    schedule 23.07.2012    source источник


Ответы (2)


Вы можете указать версию:

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

Однако, если эта версия PHP RPM/Deb/package недоступна в вашем вышестоящем репозитории, вам нужно:

  1. Найдите альтернативное репо с этим пакетом и добавьте его в свой список репо.
  2. Настройте собственное репо с пакетом
  3. Установите из вашей файловой системы, указав путь к пакету:

    package { 'php' :
      ensure => '5.2' ,
      source => '/some/path/to/php-5.2.rpm' ,
    }
    
person opsmason    schedule 23.07.2012
comment
Я попытался изменить свой список предпочтений/источников, но у меня возникли проблемы с загрузкой открытого ключа archive.debian :s - person JulienD; 24.07.2012
comment
@opsmason: Должно ли значение версии быть строкой? вы можете указать его как ensure => 5.2? - person greenpool; 08.02.2015
comment
@greenpool: версия представляет собой строку. Возьмем, к примеру, httpd-2.4.29: 2.4.29 - это не число с плавающей запятой, это строка! - person opsmason; 13.12.2017

Это довольно близко к тому, как я использую пользовательские репозитории apt в puppet с их ключами 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'],
}
person StuartW    schedule 01.03.2013