【发布时间】:2018-07-03 11:25:57
【问题描述】:
在我正在处理的模块中,我需要检查机器上是否存在特定用户。 这个想法是创建一个包含所有用户数组的自定义事实。 在模块中,它应该遍历数组并检查特定用户是否是数组的一部分。
我的自定义事实:
Facter.add("users") do
setcode do
IO.readlines("/etc/passwd").collect do |line|
line.split(":").first
end
end
end
事实的输出是这样的字符串: ["user1", "user2", "user3"]
因为它只是一个字符串而不是数组,所以我无法在我的 puppet 模块中遍历它。
然后我尝试了
shell_split($::users).each |String $user| {
notify { "$user":}
}
但是现在,每个用户的用户名后面都包含一个逗号。
您有一个可行且更好的解决方案的想法吗?
【问题讨论】:
-
"事实的输出是这样的字符串:['user1', 'user2', 'user3']" - 它看起来不像字符串。它是一个数组。
-
@JagdeepSingh 是的,它看起来像一个数组。但关键是,它是一个包含数组内容的字符串。如果我使用 validate_array(),它也会告诉我它不是一个数组而是一个字符串。
-
您需要详细说明“带有数组内容的字符串”。你能把你实际拥有的东西粘贴到你的终端吗?
-
我无法重现此内容。该事实代码为我输出一个数组而不是字符串。我用
.instance_of?(Array)仔细检查了它以验证。您需要发布更多信息以验证您的问题是否符合您的情况。 -
这几乎是一个教科书示例,说明了一种方法做了太多应该分解的方法,以便您可以更好地单独测试和理解组件。