Я новичок в Puppet. Итак, я прошу помощи в том, как лучше всего решить мою проблему.
я использую этот puppet для предоставления PHP в мой ящик Ubuntu 13.10. Но, похоже, что пакет php5-mcrypt
сломано, так как mcrypt.ini
неуместен в /etc/php5/conf.d
вместо того /etc/php5/apache2/available-modules/
(Для справки, я работаю с Apache 2.4 и PHP 5.5)
Я сделал класс php-mcrypt
это подходит для меня'. Но я хочу знать, есть ли способ сделать это лучше / чище.
Вот мой обходной путь:
# https://github.com/lucasvscn/puppet-php-mcrypt
#
class php-mcrypt() {
Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }
package { "php5-mcrypt":
ensure => "installed",
require => Class['php'],
}
file { '/etc/php5/conf.d/mcrypt.ini':
require => Package['php5-mcrypt'],
}
exec {
"copying_mcrypt":
command => 'cp -v /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/',
require => Package['php5-mcrypt'],
}->
exec {
"enabling_mcrypt":
command => 'php5enmod mcrypt && service apache2 reload',
require => Package['php5-mcrypt'],
}
}
Проблема с самим пакетом обсуждалась в этой ветке (https://stackoverflow.com/questions/19446679/mcrypt-not-present-after-ubuntu-upgrade-to-13-10) и этот баг Ubuntu (https://bugs.launchpad.net/ubuntu/+source/php-mcrypt/+bug/1241286).
Общепринятое решение - создать символическую ссылку, а не копировать файл. Этот метод имеет то преимущество, что ваша конфигурация указывает на файл, который все еще находится под контролем системы управления пакетами.
Вот пример Puppet: http://www.puppetcookbook.com/posts/creating-a-symlink.html
Включите php5-mcrypt с марионеткой в Ubuntu 13.10 или 14.04
case $lsbdistid {
'Ubuntu': {
case $lsbdistrelease {
'13.10': {
file { '/etc/php5/apache2/conf.d/20-mcrypt.ini':
ensure => link,
target => '/etc/php5/conf.d/mcrypt.ini',
notify => Service['apache2'],
require => [
Package['libapache2-mod-php5'],
Package['php5-mcrypt'],
],
}
file { '/etc/php5/cli/conf.d/20-mcrypt.ini':
ensure => link,
target => '/etc/php5/conf.d/mcrypt.ini',
require => [
Package['php5-mcrypt'],
Package['php5-cli'],
],
}
}
'14.04': {
file { '/etc/php5/apache2/conf.d/20-mcrypt.ini':
ensure => link,
target => '../../mods-available/mcrypt.ini',
notify => Service['apache2'],
require => [
Package['libapache2-mod-php5'],
Package['php5-mcrypt'],
],
}
file { '/etc/php5/cli/conf.d/20-mcrypt.ini':
ensure => link,
target => '../../mods-available/mcrypt.ini',
require => [
Package['php5-mcrypt'],
Package['php5-cli'],
],
}
}
}
}
}
Управляйте ссылкой как типом ресурса Puppet File вместо более запутанного Exec ln. Убедитесь, что ссылка => и укажите target => param.