Como encontrar todas as contas de usuários locais no chef

2

Usando o opscode chef, existe uma maneira de encontrar ou fazer o loop de todas as contas de usuário?

Eu preciso criar um arquivo de configuração no diretório inicial de cada usuário. Eu não quero fazer um loop sobre qualquer estrutura de diretório para isso.

    
por pablo 22.08.2011 / 22:15

2 respostas

5

Todos os usuários no sistema são detectados automaticamente pelo ohai quando o Chef é executado e estão disponíveis no espaço do atributo node['etc'] . Os usuários são node['etc']['passwd'] . Você pode repetir isso como um hash. Você pode excluir "sistema" ou "pré-criado por pacotes" comparando se o ID numérico de um usuário está sobre o que está definido em seus sistemas /etc/login.defs UID_MIN.

Exemplo de uso em uma receita para criar um arquivo de configuração que você armazenou no livro de receitas, um arquivo diferente para cada usuário.

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

Substitua "custom_config" por qualquer nome de configuração.

    
por 23.08.2011 / 01:38
0

Parece que o suporte do ohai etc.passwd é baseado em Ruby Etc.passwd que lê o arquivo /etc/passwd .

Isso pode ser bom se seus usuários forem definidos estaticamente assim. Se o seu servidor tiver usuários definidos em um sistema remoto como LDAP ou NIS, esses usuários não estarão em / etc / passwd. Você pode listá-los com

'getent passwd'
    
por 14.09.2012 / 22:55