Ruby 厨师长用户资源(检查是否存在?)
我知道如何创建用户资源:Ruby 厨师长用户资源(检查是否存在?),ruby,chef-infra,Ruby,Chef Infra,我知道如何创建用户资源: 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客户端运行期间,
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客户端运行期间,我查看了检查节点[:users],但只有节点[:current_user]对我可用。在厨师食谱中,有没有一种方法可以询问是否存在一个普通用户
我的情况是,我不应该/不能创建用户(根据公司规定,但我绝对不应该继续安装我的食谱中定义的其他东西,除非已经存在xyz用户。)Ohai为您查询系统上的用户:
if node['etc']['passwd']['random']
# Do deploy
end
Ohai为您查询系统上的用户:
if node['etc']['passwd']['random']
# Do deploy
end
这仅适用于本地帐户,但如果帐户由LDAP或AD管理,则上述情况不适用。我建议使用:
"getent group #{mygroup}"
"getent passwd #{myuser}"
在ruby块中。仅适用于本地帐户,但如果帐户由LDAP或AD管理,则上述内容不适用。我建议使用:
"getent group #{mygroup}"
"getent passwd #{myuser}"
在ruby块中。如果帐户不是本地帐户,则此操作不起作用:
if node['etc']['passwd']['random']
# Do deploy
end
我的nsswitch.conf中有“passwd:files sss”,因为帐户在IPA中。
我想只有SorinS的解决方案才有效。如果帐户不是本地帐户,则这不起作用:
if node['etc']['passwd']['random']
# Do deploy
end
我的nsswitch.conf中有“passwd:files sss”,因为帐户在IPA中。
我想只有SorinS的解决方案有效。我得到的是与nil:NilClass相同的
未定义方法“[]”的错误消息。我怀疑那些解决方案有问题的人禁用了passwd-Ohai插件
对于我们这些拥有大型目录环境的人来说,在client.rb
中禁用passwd插件是非常常见的,以避免在客户端报告运行时出现413错误(“请求实体太大”)。检查/etc/chef/client.rb
以了解:
ohai.disabled\u插件[:Passwd]
禁用此插件后,node['etc']['passwd']
将添加到您的食谱中,因此会出现错误。在我的环境中,重新启用插件修复了此错误。我得到了与nil:NilClass相同的未定义方法“[]”错误消息。我怀疑那些解决方案有问题的人禁用了passwd-Ohai插件
对于我们这些拥有大型目录环境的人来说,在client.rb
中禁用passwd插件是非常常见的,以避免在客户端报告运行时出现413错误(“请求实体太大”)。检查/etc/chef/client.rb
以了解:
ohai.disabled\u插件[:Passwd]
禁用此插件后,node['etc']['passwd']
将添加到您的食谱中,因此会出现错误。在我的环境中,重新启用插件可修复此错误。这仅适用于本地帐户,但如果帐户由LDAP或AD管理,则上述情况不适用。我建议使用:如果您的nsswitch.conf
是针对LDAP的,这将解决一个常见的问题,即运行的进程无法看到对该文件的更改,因为它缓存在libc的深处。如果您在进行nsswitch更改后强制Chef进程重新启动,ohai将按预期工作。它在使用vas对AD进行身份验证的我的机器上不起作用。我不知道vas是什么,但如果它使用nsswitch模块,那么这将起作用。这在kitchen中起作用,但对于prod中的某些服务器,这会因未定义方法“[]而失败'对于nil:NilClass
。知道为什么吗?这只适用于本地帐户,但如果帐户由LDAP或AD管理,则上述情况不适用。我建议使用:如果您的nsswitch.conf
是针对LDAP的,这将解决一个常见的问题,即运行的进程无法看到对该文件的更改,因为它缓存在libc的深处。如果您在进行nsswitch更改后强制Chef进程重新启动,ohai将按预期工作。它在使用vas对AD进行身份验证的我的机器上不起作用。我不知道vas是什么,但如果它使用nsswitch模块,那么这将起作用。这在kitchen中起作用,但对于prod中的某些服务器,这会因未定义方法“[]而失败'对于nil:NilClass
。知道为什么吗?这和Ohai内部的做法是一样的(除了它直接使用API)。这和Ohai内部的做法是一样的(除了它直接使用API)。