すべてのユーザーを返すファクトを作成したいと考えています。
Facter.add("sysusers") do
setcode do
File.readlines('/etc/passwd').each do |line|
line.match(/^[^:]+/)[0]
end
end
end
それから私の.pp
ファイルにはこれがあります:
$users = inline_template("<%= scope.lookupvar('sysusers') %>")
$users.each |String $user| {
notify { "$user":}
}
これは機能するはずですが、ファクトは一度に 1 文字しか返しません。
したがってnotify { "$user":}
、印刷するだけです:
Notify[r]
Notify[o]
そして、次の文字も「o」であるため、クラッシュします (「root」に 2 つの o があり、root は /etc/passwd に記述されている最初のユーザーです)。
では、どうすればすべてのユーザーを印刷できますか?
編集
次の編集を行います。
Facter.add("sysusers") do
setcode do
File.readlines('/etc/passwd').each do |line|
line.match(/^[^:]+/).to_s
end
end
end
出力は次のとおりです。
root@mymachine]# facter sysusers
[
"root:x:0:0:root:/root:/bin/bash
",
"bin:x:1:1:bin:/bin:/usr/bin/nologin
",
"daemon:x:2:2:daemon:/:/usr/bin/nologin
...
...
そのため、まだ期待どおりに機能していないようです。