web-dev-qa-db-ja.com

ユーザーがpuppetに存在するかどうかを確認するにはどうすればよいですか?

変数に特定の値があるかどうかを確認できる例をすでにいくつか見つけました

if $var == 'somevalue' {
    ...
}

何かが定義されている場合の

if defined(Package['somepackage']) {
    ...
}

しかし、ユーザーが存在するかどうかを確認し、存在しない場合は失敗するにはどうすればよいですか。必要なのは/usr/bin/id -u ${name} >/dev/null 2>&1だけなので、スクリプトまたはシェルテストの結果の使用方法を知っていれば十分です。ユーザーディレクトリが存在するかどうかを確認しても問題ありません。

fileexeconlyifパラメータを受け入れません。そうでなければ、これはまったく問題になりません。

4
Dehalion

事実を追加して確認してみませんか?

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と評価されるため、ブール値として使用できます。

5
R. S.