У меня есть следующий манифест Puppet:
# PHP Configuration
class php {
exec { "php5enmod $module":
path => "/usr/sbin",
command => "php5enmod $module",
}
file {'/etc/php5/conf.d/upload_limits.ini':
ensure => present,
owner => root, group => root, mode => 444,
notify => [ Exec["php5enmod upload_limits"], Service["apache2"] ],
content => "post_max_size = 16M \nupload_max_filesize = 16M \n",
}
file {'/etc/php5/conf.d/memory_limits.ini':
ensure => present,
owner => root, group => root, mode => 444,
notify => [ Exec["php5enmod memory_limits"], Service["apache2"] ],
content => "memory_limit = 256M \n",
}
}
include php
Как я могу творить exec
использовать в notify
путем динамической передачи параметра? Это возможно, или есть другой способ лучше?
Текущий код дает мне такие ошибки, как:
Ошибка: не удалось найти зависимый Exec [php5enmod upload_limits] для файла [/etc/php5/conf.d/upload_limits.ini]
Когда это работает exec
объявляется первым.
В этот момент $ module не установлен, поэтому заголовок exec php5enmod
.
Вы не передаете здесь переменную, это просто имя.
В таком случае определенный тип имеет больше смысла.
Как это:
define php5enmod() {
exec { "php5enmod_${title}":
path => "/usr/sbin",
command => "php5enmod $title",
refreshonly => true,
notify => Service["apache2"]
}
}
class php {
php5enmod{ 'upload_limits': }
file {'/etc/php5/conf.d/upload_limits.ini':
ensure => present,
owner => 'root',
group => 'root',
mode => '0444',
content => "post_max_size = 16M \nupload_max_filesize = 16M \n",
notify => Php5enmod["upload_limits"],
}
php5enmod{ 'memory_limits': }
file {'/etc/php5/conf.d/memory_limits.ini':
ensure => present,
owner => 'root',
group => 'root',
mode => '0444',
content => "memory_limit = 256M \n",
notify => Php5enmod["memory_limits"],
}
}
include php
Обычно define
не должно быть там.
Вероятно, это должно быть php::php5enmod()
и иметь собственный файл.
Это просто для демонстрации общей концепции.
Переверните свое мышление! Использовать Subscribe
чтобы связать ваши изменчиво названные Exec
(дурной тон, ИМХО) на File
. Subscribe and Notify
являются комплиментарными; они делают то же самое, но в разных направлениях.
Попробуйте что-нибудь вроде этот?
exec { "php5enmod $module":
path => "/usr/sbin",
command => "php5enmod $module",
subscribe => [File["/etc/php5/conf.d/upload_limits.ini"], File["/etc/php5/conf.d/memory_limits.ini"],
}
file {'/etc/php5/conf.d/upload_limits.ini':
ensure => present,
owner => root, group => root, mode => 444,
notify => Service["apache2"]
content => "post_max_size = 16M \nupload_max_filesize = 16M \n",
}
file {'/etc/php5/conf.d/memory_limits.ini':
ensure => present,
owner => root, group => root, mode => 444,
notify => Service["apache2"]
content => "memory_limit = 256M \n",
}
Совершенно непроверенный, но я думаю, что это поможет вам по крайней мере ...