Есть ли способ найти или перебрать все учетные записи пользователей с помощью opscode chef?
Мне нужно создать файл конфигурации в домашнем каталоге каждого пользователя. Я не хочу перебирать для этого какую-либо структуру каталогов.
Все пользователи в системе автоматически обнаруживаются ohai при запуске Chef и доступны в node['etc']
пространство атрибутов. Пользователи node['etc']['passwd']
. Вы можете перебирать это как хэш. Вы можете исключить «системный» или «предварительно созданный пакетами», сравнив, превышает ли числовой идентификатор пользователя то, что определено в вашей системе /etc/login.defs UID_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 и т. Д. Основана на Ruby И т. Д. Passwd который читает /etc/passwd
файл.
Это может быть нормально, если ваши пользователи определены таким статическим образом. Если на вашем сервере есть пользователи, определенные в удаленной системе, такой как LDAP или NIS, этих пользователей не будет в / etc / passwd. Вы можете перечислить их с
`getent passwd`