Puppet: указание версии пакета для установки
По-видимому, это невозможно, но я не могу поверить, что я единственный, кому это нужно.
Я хочу указать версию php для установки, потому что я работаю над старым проектом, требующим php 5.2.
На самом деле моя виртуальная машина основана на Oneiric с php 5.3
Есть ли у вас какое-либо решение для этого?
Ответы
Ответ 1
Вы можете указать версию:
package { 'php' :
ensure => '5.2' ,
}
Однако, если эта версия PHP RPM/Deb/package недоступна в вашем восходящем репо, вам нужно либо:
- Найдите альтернативное репо с этим пакетом и добавьте его в свой список репо
- Настройте свое собственное репо с пакетом
-
Установите из вашей файловой системы, указав путь к пакету:
package { 'php' :
ensure => '5.2' ,
source => '/some/path/to/php-5.2.rpm' ,
}
Ответ 2
Это довольно близко к тому, как я использую пользовательские репозитории apt в марионетке с их клавишами 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'],
}