Chef Users资源(检查是否存在?)

时间:2015-01-22 17:03:28

标签: ruby chef

我知道如何创建用户资源:

user "random" do
  supports :manage_home => true
  comment "Random User"
  uid 1234
  gid "users"
  home "/home/random"
  shell "/bin/bash"
  password "$1$JJsvHslV$szsCjVEroftprNn4JHtDi."
end

但我不确定如何使用Chef查找当前节点上所有用户的列表。我查看了在chef-client运行期间检查node [:users],但只有node [:current_user]可供我使用。在Chef配方中,有没有办法询问普通用户是否存在?

我处于不应该/无法创建用户的情况下(由于公司规定,但我绝对不应该继续安装我在其中定义的其他内容)除非xyz用户已经存在,否则为cookbook。)

4 个答案:

答案 0 :(得分:8)

Ohai为您查询系统中的用户:

if node['etc']['passwd']['random']
  # Do deploy
end

答案 1 :(得分:0)

仅适用于本地帐户,但如果帐户由LDAP或AD管理,则上述帐户不适用。我建议使用:

SELECT 
 o.F_Exhibitor,
 o.F_Stand AS OrderHeaderStand, 
 e.F_Stand AS ExhibitorLocationStand,
 CASE 
   WHEN o.F_Stand = e.F_Stand THEN 'Equal'
   WHEN o.F_Stand IS NULL AND e.F_Stand IS NULL THEN 'Equal'
   ELSE 'Check'
 END AS Equal
FROM T_Order_Header o
  INNER JOIN T_ExhibitorLocation e
    ON o.F_exhibitor= e.F_ExhibitorCode
WHERE o.F_Exhibition='12004'

在红宝石区。

答案 2 :(得分:0)

如果帐户不是本地帐户,则不起作用:

if node['etc']['passwd']['random']
  # Do deploy
end

我已经" passwd:files sss"在我的nsswitch.conf中,因为帐户在IPA中。

(我很乐意将此作为对代码发布者帖子的评论添加,但我没有足够的声誉......)。

我想只有SorinS的解决方案才有效。

(会不会赞成投票SorinS'发帖,但我没有足够的声誉......)。

答案 3 :(得分:0)

我收到与Tom Klino相同的undefined method '[]' for nil:NilClass错误消息。我怀疑那些遇到coderanger's解决方案问题的人已经禁用了passwd Ohai插件。

对于我们这些拥有大型目录环境的人来说,在client.rb中禁用passwd插件以避免客户端报告运行时出现413错误("请求实体太大")是非常常见的。检查/etc/chef/client.rb

ohai.disabled_plugins [:Passwd]

禁用此插件后,node['etc']['passwd']为您的食谱unavailable,因此出错。在我的环境中,重新启用插件可以修复此错误。

相关问题