我正在使用“user”资源来定义Chef内的用户。
现在,我想为同一个用户检索UID
和GID
的值。
可以使用chef中的ruby代码完成吗?
现在,我正在尝试使用bash资源并运行以下命令:
id -u $USERNAME
答案 0 :(得分:4)
您可以使用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
如果您在厨师运行期间创建用户并希望在同一个厨师运行中访问其信息,则可能必须触发reload负责的 ohai 插件。 (这可能会自动触发,但我不希望如此。)
ohai 'reload passwd' do
plugin 'passwd'
action :reload
end
user 'john' do
action :reload, 'ohai[reload passwd]'
end
答案 1 :(得分:3)
为此,您可以使用Ruby的Etc
类: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