Как передать параметр для Exec из уведомлений?
У меня есть следующий манифест 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]
2 ответа
Когда это работает 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",
}
Полностью непроверенный, но я думаю, что ты начнешь хотя бы...