如何检查人偶中是否存在用户?

Deh*_*ion 4 scripting puppet

我已经找到了一些可以检查变量是否具有特定值的示例

if $var == 'somevalue' {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果定义了某些东西

if defined(Package['somepackage']) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是如何检查用户是否存在,如果不存在则失败。知道如何使用脚本或 shell 测试的结果就足够了,因为这/usr/bin/id -u ${name} >/dev/null 2>&1就是我所需要的,即使检查用户目录是否存在也可以。

file并且exec不接受onlyif参数,否则这根本不是问题

R. *_* S. 5

为什么不添加一个事实事实并检查它呢?

使用我在 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
Run Code Online (Sandbox Code Playgroud)

然后将其用作

if $::user_exists_blah {
}
Run Code Online (Sandbox Code Playgroud)

空字符串的计算结果为 false,因此您可以将其用作布尔值

  • 但是,您可以让 Facter 事实返回系统上的*所有* 用户,并让主机基于此做出决策。 (2认同)