2017-06-22 114 views
0

我正在尝试为基于Facter变量的Windows Server设置Puppet exec资源。但是,它看起来像onlyif只接受命令文件而不是内联表达式。puppet onlyif逻辑表达式

可能有人请帮我设置onlyif这个表达式提前(无论是作为一个条件表达式或内嵌-DOS命令)

exec { 'C:\Users\validate.cmd validate': 
    onlyif => "$validate_enabled" == true, => This not recognized as command 
    provider => powershell, 
} 

感谢。

回答

2

这里有几个问题。首先是onlyif的语法不正确。该属性执行一个成功的指令和检查,所以你会希望将其更改为这个以去除木偶字符串和shell语法问题:

exec { 'C:\Users\validate.cmd validate': 
    onlyif => $validate_enabled, 
    provider => powershell, 
} 

注意的是我写的第一部分(执行命令)。在这种情况下,您不想执行命令。你想检查一个布尔Facter事实的值。因此,你应该使用Puppet DSL而不是shell命令来检查它。

Facter 3/4木偶:

# use fact hash 
if $facts['validate_enabled'] { 
    exec { 'C:\Users\validate.cmd validate': provider => powershell } 
} 

Facter 2/3木偶:

# specify global variable for safety 
if $::validate_enabled { 
    exec { 'C:\Users\validate.cmd validate': provider => powershell } 
} 

这将解决您的条件,给你你想要的行为。