web-dev-qa-db-ja.com

chefですべてのローカルユーザーアカウントを見つける方法

Opscode chefを使用して、すべてのユーザーアカウントを検索またはループする方法はありますか?

各ユーザーのホームディレクトリに構成ファイルを作成する必要があります。このためにディレクトリ構造をループしたくありません。

3
pablo

システム上のすべてのユーザーは、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」を、構成ファイルの名前に置き換えます。

7
jtimberman

Ohaiのetc.passwdサポートはRuby Etc.passwd に基づいているようです。これは/etc/passwdファイル。

ユーザーがこのように静的に定義されている場合、これは問題ない可能性があります。サーバーにLDAPやNISなどのリモートシステムで定義されたユーザーがいる場合、それらのユーザーは/ etc/passwdに存在しません。あなたはそれらをリストすることができます

`getent passwd`
0
kgilpin