Opscode chefを使用して、すべてのユーザーアカウントを検索またはループする方法はありますか?
各ユーザーのホームディレクトリに構成ファイルを作成する必要があります。このためにディレクトリ構造をループしたくありません。
システム上のすべてのユーザーは、Chefの実行時にohaiによって自動的に検出され、node['etc']
属性スペースで使用できます。ユーザーはnode['etc']['passwd']
です。これをハッシュのように繰り返すことができます。ユーザーの数値IDがシステム/etc/login.defsUID_MINで定義されているものを超えているかどうかを比較することにより、「システム」または「パッケージによって事前作成された」を除外できます。
クックブックに保存した構成ファイルを作成するためのレシピでの使用例。ユーザーごとに異なるファイル。
node['etc']['passwd'].each do |user, data|
if data['uid'].to_i > 1000
cookbook_file "#{data['dir']}/custom_config" do
source "#{user}_custom_config"
owner user
group data['gid']
mode 0644
end
end
end
「custom_config」を、構成ファイルの名前に置き換えます。
Ohaiのetc.passwdサポートはRuby Etc.passwd に基づいているようです。これは/etc/passwd
ファイル。
ユーザーがこのように静的に定義されている場合、これは問題ない可能性があります。サーバーにLDAPやNISなどのリモートシステムで定義されたユーザーがいる場合、それらのユーザーは/ etc/passwdに存在しません。あなたはそれらをリストすることができます
`getent passwd`