从 Chef 中的用户获取 UID 的最佳方法是什么?
What is the best way to get UID from user within Chef?
我正在使用 "user" 资源在 Chef 中定义用户。
现在,我想为同一用户检索 UID
和 GID
的值。
这可以使用 chef 中的 ruby 代码来完成吗?
现在,我正在尝试使用 bash 资源和 运行 以下命令:
id -u $USERNAME
为此,您可以使用 Ruby 的 Etc
class:http://ruby-doc.org/stdlib-2.1.2/libdoc/etc/rdoc/Etc.html#method-c-getpwnam
[15] pry(main)> Etc.getpwnam('david').uid
=> 501
[16] pry(main)> Etc.getpwnam('david').gid
=> 20
您可以使用 Ohai 提供的自动属性。
可通过
访问该信息
# uid
node['etc']['passwd']['$USERNAME']['uid']
# gid
node['etc']['passwd']['$USERNAME']['gid']
从命令行,您可以按如下方式浏览属性:
$ ohai etc/passwd/vagrant
{
"dir": "/home/vagrant",
"gid": 900,
"uid": 900,
"shell": "/bin/bash",
"gecos": "vagrant,,,"
}
$ ohai etc/passwd/vagrant/uid
900
如果您在 chef 运行 期间创建了一个用户并希望在同一 chef 运行 中访问其信息,您可能必须触发负责人 [=] 的 reload 23=]ohai 插件。 (这可能会自动触发,但我不希望如此。)
ohai 'reload passwd' do
plugin 'passwd'
action :reload
end
user 'john' do
action :reload, 'ohai[reload passwd]'
end
我正在使用 "user" 资源在 Chef 中定义用户。
现在,我想为同一用户检索 UID
和 GID
的值。
这可以使用 chef 中的 ruby 代码来完成吗?
现在,我正在尝试使用 bash 资源和 运行 以下命令:
id -u $USERNAME
为此,您可以使用 Ruby 的 Etc
class:http://ruby-doc.org/stdlib-2.1.2/libdoc/etc/rdoc/Etc.html#method-c-getpwnam
[15] pry(main)> Etc.getpwnam('david').uid
=> 501
[16] pry(main)> Etc.getpwnam('david').gid
=> 20
您可以使用 Ohai 提供的自动属性。
可通过
访问该信息# uid
node['etc']['passwd']['$USERNAME']['uid']
# gid
node['etc']['passwd']['$USERNAME']['gid']
从命令行,您可以按如下方式浏览属性:
$ ohai etc/passwd/vagrant
{
"dir": "/home/vagrant",
"gid": 900,
"uid": 900,
"shell": "/bin/bash",
"gecos": "vagrant,,,"
}
$ ohai etc/passwd/vagrant/uid
900
如果您在 chef 运行 期间创建了一个用户并希望在同一 chef 运行 中访问其信息,您可能必须触发负责人 [=] 的 reload 23=]ohai 插件。 (这可能会自动触发,但我不希望如此。)
ohai 'reload passwd' do
plugin 'passwd'
action :reload
end
user 'john' do
action :reload, 'ohai[reload passwd]'
end