puppet onlyif логическое выражение

Я пытаюсь настроить ресурс Puppet exec для Windows Server на основе переменной Facter. Но похоже, что onlyif принимает только командные файлы, а не встроенное выражение.

Может ли кто-нибудь помочь мне установить это выражение в onlyif (либо как условное выражение, либо как встроенную команду dos)

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

Заранее спасибо.


person Raghav    schedule 22.06.2017    source источник


Ответы (1)


Здесь есть пара проблем. Во-первых, синтаксис для onlyif неверен. Этот атрибут выполняет команду и проверяет ее успешность, поэтому вы можете изменить его на это, чтобы удалить проблемы со строкой Puppet и синтаксисом оболочки:

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

Обратите внимание на первую часть того, что я написал (выполняет команду). Вы не хотите выполнять команду в этом экземпляре. Вы хотите проверить значение логического факта Facter. Следовательно, вы будете проверять это с помощью Puppet DSL, а не с помощью команды оболочки.

Фактор 3/Марионетка 4:

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

Фактор 2/Марионетка 3:

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

Это исправит ваше условие и даст вам желаемое поведение.

person Matt Schuchard    schedule 22.06.2017