Назад | Перейти на главную страницу

Как найти все локальные учетные записи пользователей в Chef

Есть ли способ найти или перебрать все учетные записи пользователей с помощью 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`