我正在尝试编辑init.pp文件,如果已设置变量,则只包含子类。我已经将变量初始化为undef,但是当我执行下面的IF语句时,它会出现错误并说:
'if'处的语法错误;预期'}'
当我将其作为案例陈述书写时,它可以正常工作,但不能作为IF。知道为什么会这样吗?
class {'wlsvr':
}
->
case $jdbc_filename {
undef: {}
default: {class {'jdbc':}}
}
->
if $managedsvr_name != undef {
class {'managedsvr':
}
}
答案 0 :(得分:0)
请摆脱使用
的不幸习惯->
每个其他Puppet声明之间。
这个chainging arrow在它连接的资源/类之间引入了依赖。仅在实际需要依赖项时才应使用此选项。你要问自己的问题
if
和cases
语句没有(总是)构成资源或类的等价物顺便说一下,避免
也是有益的class { 'classname': }
声明类和
的语法include classname
相反,因为前者花费了singleton semantics Puppet类。
答案 1 :(得分:0)
在if
语句之前使用链接箭头是非法语法。来自Relationships and Ordering上的木偶文档:
操作数
链接箭头接受箭头两侧的以下类型的操作数:
- 资源引用,包括多资源引用
- 资源声明
- 资源收集者
我不确定为什么它允许case
语句而不是if
语句,但我认为将其中任何一个链接起来都不是最好的做法。< / p>