2017-06-22 9 views
0

私は、Facter変数に基づいてWindows Server用のPuppet execリソースを設定しようとしています。しかし、onlyifはコマンドファイルのみを受け付け、インライン式は受け入れないようです。puppet onlyif論理式

は、誰かが私にonlyifでこの式を設定し、事前に

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

(条件式として、またはインライン-DOSコマンドなどのいずれか)のおかげで助けてくださいでした。

答えて

2

ここにいくつかの問題があります。 1つは、onlyifの構文が正しくないことです。その属性は、成功のためのコマンドとチェックを実行し、あなたは人形の文字列とシェルの構文の問題を削除するには、このにそれを変更したい:

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

注意私が書いたものの最初の部分を(コマンドを実行します)。このインスタンスでコマンドを実行する必要はありません。あなたはブールファクター事実の値をチェックしたいと思う。したがって、あなたはシェルコマンドではなく、Puppet DSLでこれをチェックします。

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 } 
} 

これはあなたの条件を修正し、あなたの目的の動作を提供します。