Puppet Class: accounts

Inherits:
::accounts::params
Defined in:
manifests/init.pp

Overview

Puppet accounts management

Parameters:

  • manage_users (Any) (defaults to: hiera('accounts::manage_users', true))
  • manage_groups (Any) (defaults to: hiera('accounts::manage_groups', true))
  • users (Any) (defaults to: {})
  • groups (Any) (defaults to: {})
  • user_defaults (Any) (defaults to: hiera_hash('accounts::user_defaults', {}))
  • options (Any) (defaults to: hiera_hash('accounts::config', {}))


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'manifests/init.pp', line 3

class accounts(
  $manage_users  = hiera('accounts::manage_users', true),
  $manage_groups = hiera('accounts::manage_groups', true),
  $users         = {},
  $groups        = {},
  $user_defaults = hiera_hash('accounts::user_defaults', {}),
  $options       = hiera_hash('accounts::config', {}),
) inherits ::accounts::params {
  # validations are not necessary on Puppet 4
  if versioncmp($::puppetversion, '4.0.0') < 0 {
    validate_bool($manage_users)
    validate_bool($manage_groups)
    validate_hash($users)
    validate_hash($groups)
    validate_hash($user_defaults)
  }

  $users_h  = hiera_hash('accounts::users', {})
  $groups_h = hiera_hash('accounts::groups', {})

  $_users = merge($users, $users_h)
  anchor { 'accounts::users_created': }

  class{'::accounts::config':
    options => $options,
    before  => Anchor['accounts::users_created'],
  }

  if $manage_users {
    $udef = merge($user_defaults, {
      home_permissions => $::accounts::params::home_permissions,
      require          => Anchor['accounts::users_created'],
    })
    create_resources(accounts::user, $_users, $udef)
  }

  if $manage_groups {
    $_groups = merge($groups, $groups_h)

    if has_key($user_defaults, 'groups'){
      $default_groups = $user_defaults['groups']
    } else {
      $default_groups = []
    }
    # Merge group definition with user's assignment to groups
    # No anchor is needed, all requirements are defined individially for each resource
    $members = accounts_group_members($_users, $_groups, $default_groups)
    create_resources(accounts::group, $members)
  }
}