2017-06-22 110 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 } 
} 

這將解決您的條件,給你你想要的行爲。