我使用“user”资源来定义Chef中的用户。现在,我想为同一个用户检索UID和GID的值。这可以使用chef中的ruby代码来完成吗?现在,我正在尝试使用bash资源并运行以下命令:
UID
GID
id -u $USERNAME
nx7onnlm1#
您可以使用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运行中访问其信息,则可能必须触发负责的 ohai 插件的reload。(这可能会自动触发,但我不希望如此。
ohai 'reload passwd' do plugin 'passwd' action :reload end user 'john' do notifies :reload, 'ohai[reload passwd]', :immediately end
从Chef 15开始,the etc plugin is optional
cfh9epnr2#
为此,您可以使用Ruby的Etc类:http://ruby-doc.org/stdlib-2.1.2/libdoc/etc/rdoc/Etc.html#method-c-getpwnam
Etc
[15] pry(main)> Etc.getpwnam('david').uid => 501 [16] pry(main)> Etc.getpwnam('david').gid => 20
2条答案
按热度按时间nx7onnlm1#
您可以使用Ohai提供的自动属性。
该信息可通过
在命令行中,可以按如下方式浏览属性:
如果您在chef运行期间创建了一个用户,并希望在同一chef运行中访问其信息,则可能必须触发负责的 ohai 插件的reload。(这可能会自动触发,但我不希望如此。
从Chef 15开始,the etc plugin is optional
cfh9epnr2#
为此,您可以使用Ruby的
Etc
类:http://ruby-doc.org/stdlib-2.1.2/libdoc/etc/rdoc/Etc.html#method-c-getpwnam