我正在尝试基于Facter变量为Windows Server设置Puppet exec
资源。但是,看起来onlyif
只接受命令文件,不接受内联表达式。
有人可以帮我onlyif
设置这个表达式吗(作为条件表达式或内联 dos 命令(
exec { 'C:Usersvalidate.cmd validate':
onlyif => "$validate_enabled" == true, => This not recognized as command
provider => powershell,
}
提前谢谢。
这里有几个问题。首先是onlyif
的语法不正确。该属性执行命令并检查是否成功,因此您需要将其更改为此命令以删除 Puppet 字符串和 shell 语法问题:
exec { 'C:Usersvalidate.cmd validate':
onlyif => $validate_enabled,
provider => powershell,
}
请注意我编写的第一部分(执行命令(。您不希望在此实例中执行命令。您想要检查布尔事实事实的值。因此,您将使用 Puppet DSL 而不是 shell 命令来检查这一点。
事实3/木偶4:
# use fact hash
if $facts['validate_enabled'] {
exec { 'C:Usersvalidate.cmd validate': provider => powershell }
}
事实2/木偶3:
# specify global variable for safety
if $::validate_enabled {
exec { 'C:Usersvalidate.cmd validate': provider => powershell }
}
这将修复您的条件并为您提供所需的行为。