我正在使用「用戶」資源來定義Chef中的用戶。 現在,我想爲同一個用戶檢索UID
和GID
的值。廚師從用戶獲取UID的最佳方式是什麼?
這可以使用廚師內的ruby代碼來完成嗎?
現在,我嘗試使用bash資源,運行以下命令:
id -u $USERNAME
我正在使用「用戶」資源來定義Chef中的用戶。 現在,我想爲同一個用戶檢索UID
和GID
的值。廚師從用戶獲取UID的最佳方式是什麼?
這可以使用廚師內的ruby代碼來完成嗎?
現在,我嘗試使用bash資源,運行以下命令:
id -u $USERNAME
您可以使用自動屬性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
爲此,您可以使用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