2016-08-02 4 views
3

У меня есть следующий модульИнлайн, если заявление на кукольный параметры

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

timeout =>() ? : марионетка enssentially, что я хочу сделать, но то, что это правильный синтаксис, чтобы сделать это? Это вообще возможно?

ответ

7

Кукольная версия тернарного оператора является более общей «selector». Синтаксис для Вашего случая выглядит следующим образом:

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

выражение управления ($someBoolean в приведенном выше) на самом деле может быть любое выражение, которое производит значение, и может быть предусмотрено любое число соответствующих случаев.

+0

Как проверить некоторое условие inline вместо переменной. например: exec {'Do something': command => '/ usr/bin/someStuff', timeout => (1 <2)? {true => 100000000, default => 300} } – user2885077

+0

@ user2885077, управляющее выражение селектора не обязательно должно быть ссылкой на переменные. Это может быть любое выражение, которое оценивает значение, а требуемое значение определяет, какая опция выбрана в качестве итогового значения общего селектора. Действительно, представленный вами пример выглядит хорошо сформированным. Он должен работать, по крайней мере, на Puppet 4+ (поскольку я пишу это, последнее - v5.4), но я не уверен, будет ли он работать по желанию на более ранних, устаревших версиях, поскольку произошли изменения, связанные с набором данных , –

Смежные вопросы