运行安装一组包后执行一次命令
Running a command once after a group of packages is installed
我有一个现有的 puppet 清单,它安装了一堆 php5 包,并且只有在安装后才会重新启动 apache。简化清单类似于
package { 'apache-php':
name => $modules,
ensure => installed
}
exec {'enable-mod-php':
command => $enable_cmd,
refreshonly => true
}
Package['apache-php'] ~> Exec['enable-mod-php'] ~> Service['apache']
系统升级后目录运行开始失败并显示以下错误消息:
Error: Failed to apply catalog: Parameter name failed on Package[apache-php]: Name must be a String not Array at /etc/puppet/modules/apache/manifests/php.pp:22
我发现我使用的是未记录的 feature/bug:Puppet 3.4.0 name as an array in package。
但是,我很难找到升级后如何重做我的设置。我如何重写此清单,使其适用于更新的 Puppet 版本?
而不是在您的示例中为包定义使用任意标题。 (例如 apache-php
)并使用 name
参数,您可以执行以下操作:
$modules = ['foo','bar','baz']
package { $modules:
ensure => present
notify => Exec['enable-mod-php']
}
exec {'enable-mod-php':
command => $enable_cmd,
refreshonly => true,
notify => Service['apache']
}
service { 'apache':
# your apache params
}
我没有查看包提供程序的代码,但可以验证以上是否有效。您还应该注意,链接箭头都很好,但根据 Puppet style guide,metaparameters
是首选。
希望对您有所帮助。
我有一个现有的 puppet 清单,它安装了一堆 php5 包,并且只有在安装后才会重新启动 apache。简化清单类似于
package { 'apache-php':
name => $modules,
ensure => installed
}
exec {'enable-mod-php':
command => $enable_cmd,
refreshonly => true
}
Package['apache-php'] ~> Exec['enable-mod-php'] ~> Service['apache']
系统升级后目录运行开始失败并显示以下错误消息:
Error: Failed to apply catalog: Parameter name failed on Package[apache-php]: Name must be a String not Array at /etc/puppet/modules/apache/manifests/php.pp:22
我发现我使用的是未记录的 feature/bug:Puppet 3.4.0 name as an array in package。
但是,我很难找到升级后如何重做我的设置。我如何重写此清单,使其适用于更新的 Puppet 版本?
而不是在您的示例中为包定义使用任意标题。 (例如 apache-php
)并使用 name
参数,您可以执行以下操作:
$modules = ['foo','bar','baz']
package { $modules:
ensure => present
notify => Exec['enable-mod-php']
}
exec {'enable-mod-php':
command => $enable_cmd,
refreshonly => true,
notify => Service['apache']
}
service { 'apache':
# your apache params
}
我没有查看包提供程序的代码,但可以验证以上是否有效。您还应该注意,链接箭头都很好,但根据 Puppet style guide,metaparameters
是首选。
希望对您有所帮助。