我已经找到了一些例子,可以检查变量是否具有特定值
if $var == 'somevalue' {
...
}
如果某事被定义
if defined(Package['somepackage']) {
...
}
但是我如何检查用户是否存在,如果不存在则失败。知道如何使用脚本或 shell 测试的结果就足够了,因为这/usr/bin/id -u ${name} >/dev/null 2>&1
就是我所需要的,即使检查用户目录是否存在也可以。
file
并且exec
不接受该onlyif
参数,否则这根本不是问题
答案1
为什么不添加一个事实并检查它呢?
使用我在 Puppet 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 {
}
空字符串的计算结果为 false,因此你可以将其用作布尔值
答案2
如果这对某人有帮助,那么就我的目的而言,这样做更有效率:
lib/facter/system_users.rb:
require 'facter'
Facter.add(:system_users) do
setcode do
Facter::Core::Execution.exec('/usr/bin/cut -f 1 -d \':\' /etc/passwd | /usr/bin/tr \'\n\' \':\'')
end
end
进而:
$system_user_list = $facts['system_users']
$system_users = split($system_user_list,':')
if ($site_user in $system_users) { ...