2016-08-02 45 views
3

我有以下木偶模塊內聯如果傀儡語句的參數

class base (
    $someBoolean=false, 
) 
{ 
    exec { 'Do something': 
    command  => '/usr/bin/someStuff', 
    timeout  => (someBoolean) ? 100000000 : 300 
    } 
} 

timeout =>() ? :是enssentially是我想做的事情,但什麼是正確的語法做呢?它有可能嗎?

回答

7

Puppet的三元運算符版本是更一般的「selector」。爲你的情況下的語法如下:

exec { 'Do something': 
    command => '/usr/bin/someStuff', 
    timeout => $someBoolean ? { true => 100000000, default => 300 } 
} 

控制表達式($someBoolean在上面)實際上可以產生一個值的任何表達式,並且可以提供任何數量的相應的箱子。

+0

如何檢查一些條件內聯而不是變量。例如:exec {'做點什麼': command =>'/ usr/bin/someStuff', timeout =>(1 <2)? {true => 100000000,default => 300} } – user2885077

+0

@ user2885077,選擇器的控件表達式不需要是變量引用。它可以是任何表達式,其值爲一個值,並且它所需的值控制將哪個選項選作總體選擇器的結果值。事實上,你呈現的這個例子看起來很完美。至少在Puppet 4+上(至少在我寫這篇文章時,最新版本是v5.4),它至少應該起作用,但我不確定它是否能夠按照早期版本的過時版本工作,因爲已經有與數據類型相關的更改。 –