Я уже нашел несколько примеров, где я могу проверить, имеет ли переменная определенное значение
if $var == 'somevalue' {
...
}
если что-то определено
if defined(Package['somepackage']) {
...
}
но как я могу проверить, существует ли пользователь, и потерпеть неудачу, если его нет. Было бы достаточно знать, как использовать результат скрипта или теста оболочки, потому что /usr/bin/id -u ${name} >/dev/null 2>&1
это все, что мне нужно, даже проверка, существует ли каталог пользователя, будет в порядке.
file
и exec
не принимайте onlyif
параметр, иначе это не было бы проблемой
Почему бы просто не добавить фактический факт и не проверить его?
с моей настройкой на марионетке 3 я бы поместил следующее в modules/facts/lib/facter/user_exists_blah.rb
require 'facter'
Facter.add(:user_exists_blah) do
setcode do
name = "blah"
Facter::Util::Resolution.exec("/usr/bin/id -u #{name} 2>/dev/null")
end
end
А затем используйте его как
if $::user_exists_blah {
}
Пустая строка оценивается как ложь, поэтому вы можете просто использовать ее как логическое