我对Puppet很新,似乎无法找到这个问题的答案。我有一个定义的Puppet资源,它需要一些参数:
class xy::xy {
include apache:regular_apache
define setup($pkg_name, $xy_version, $pas_ver) {
file { '/etc/xy':
ensure => present,
notify => Service['apache'],
}
}
我正在尝试将此自定义资源用于另一个文件中的其他资源。
class soft::buy {
include xy::xy
$xt_requires = [Xy::Xy::Setup["{'xt_buy': pkg_name => 'xt_buy_v01',
xy_version => '1.0.1',
pas_version => '2.1.4'}"]]
package { 'buy.xt':
ensure => $::buy_xt_version,
provider => 'xt',
require => $xt_requires,
}
}
我得到的错误是:Syntax error at 'require'; expected '}'
从阅读Puppet文档,似乎我在某个地方错过了一个逗号或冒号,但我尝试了各种各样的东西。我想知道如何正确地要求自定义资源与其他资源的参数?谢谢!
答案 0 :(得分:4)
语法错误可以通过以下代码片段修复。
package { 'buy.xt':
ensure => $::buy_xt_version,
provider => 'xt',
require => $xt_requires
}
[编辑:原始代码定义$ xt_requires,而不是$ requires]
您正在定义参数require
(它定义了首先需要处理的资源)。
这与语言语句require
(包括类并在所需类中添加依赖项)不同。
但是,在require-paramter中,您无法指定需求的参数,只是它的存在。完全正确的是:
xy::xy::setup {'xt_buy':
pkg_name => 'xt_buy_v01',
xy_version => '1.0.1',
pas_version => '2.1.4'
}
package { 'buy.xt':
ensure => $::buy_xt_version,
provider => 'xt',
require => Xy::Xy::Setup['xt_buy']
}