Sha256: b5bc0f800422281b230be521f7d64fd2429d728dd5a584c6816328c33ccdf5df

Contents?: true

Size: 1.81 KB

Versions: 2

Compression:

Stored size: 1.81 KB

Contents

users = if Chef::Config[:solo]
          node[:users]
        else
          search(:users)
        end

groups = if Chef::Config[:solo]
           node[:groups]
         else
           search(:groups)
         end

ohai "reload_passwd" do
  action :nothing
  plugin "passwd"
end

groups.each do |group|
  group group[:id] do
    gid group[:gid]
    action [:create, :manage, :modify]
  end
end

users.each do |user|
  primary_group = user[:groups].nil? ? nil : user[:groups].first

  directory File.dirname(user[:home]) do
    action :create
    recursive true
    owner "root"
    group "root"
  end

  user user[:id] do
    shell user[:shell] || "/bin/bash"
    home user[:home]
    gid primary_group
    uid user[:uid]
    supports :manage_home => true
    action [:create, :manage]
    notifies :reload, resources(:ohai => "reload_passwd"), :immediately
  end

  file "#{user[:home]}/.zshrc" do
    action :create_if_missing
    content "# Automatically generated by Chef."
  end

  (user[:groups] || []).each do |group_name|
    group_id = groups.find {|group| group[:id] == group_name}[:gid]

    group group_name do
      members [user[:id]]
      gid group_id
      append true
      action [:create, :manage, :modify]
    end
  end

  ssh_keys = {}
  if user[:ssh_key]
    ssh_keys[user[:id]] = user[:ssh_key]
  end

  if user[:extra_ssh_keys]
    user[:extra_ssh_keys].each do |user_id|
      ssh_keys[user_id] = users.find{|u| u[:id] == user_id}[:ssh_key]
    end
  end

  if ssh_keys.any?
    directory "#{user[:home]}/.ssh" do
      mode "0700"
      owner user[:id]
      group primary_group
      action :create
    end

    template "#{user[:home]}/.ssh/authorized_keys" do
      mode "0600"
      owner user[:id]
      group primary_group
      source "authorized_keys.pub"
      variables :ssh_keys => ssh_keys
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
ciborg-3.0.0 chef/travis-cookbooks/worker_host/users/recipes/default.rb
lobot-2.1.0 chef/travis-cookbooks/worker_host/users/recipes/default.rb