47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
# File 'manifests/user.pp', line 47
define quadlets::user (
Optional[String[1]] $user = $name,
Optional[String[1]] $group = undef,
Optional[Stdlib::Unixpath] $homedir = undef,
Boolean $create_dir = true,
Boolean $manage_user = true,
Boolean $manage_linger = true,
Optional[Tuple[Integer[1],Integer[1]]] $subuid = undef,
Optional[Tuple[Integer[1],Integer[1]]] $subgid = undef,
) {
include quadlets
$_group = pick($group, $user)
$_user_homedir = pick($homedir, "/home/${user}")
if $create_dir {
$components = split($quadlets::quadlet_user_dir, '/')
$dirs = $components.reduce([]) |$accum, $part| {
$accum + [$accum ? {
[] => "${_user_homedir}/${part}",
default => "${accum[-1]}/${part}"
}
]
}
file { $dirs:
ensure => directory,
owner => $user,
group => $_group,
}
}
if $manage_user {
group { $_group: }
user { $user:
ensure => present,
gid => $_group,
home => $_user_homedir,
managehome => true,
}
}
if $manage_linger {
loginctl_user { $user:
linger => enabled,
}
}
#
# Manage subordinate users
#
if $subuid {
augeas { "subuid_${user}":
incl => '/etc/subuid',
lens => 'Subids.lns',
context => '/files/etc/subuid',
changes => [
"set ${user}/start ${subuid[0]}",
"set ${user}/count ${subuid[1]}",
"rm ${user}[2]",
"rm ${user}[2]",
"rm ${user}[2]",
],
}
if $manage_user {
User[$user] -> Augeas["subuid_${user}"]
}
}
if $subgid {
augeas { "subgid_${_group}":
incl => '/etc/subgid',
lens => 'Subids.lns',
context => '/files/etc/subgid',
changes => [
"set ${_group}/start ${subgid[0]}",
"set ${_group}/count ${subgid[1]}",
"rm ${_group}[2]",
"rm ${_group}[2]",
"rm ${_group}[2]",
],
}
if $manage_user {
Group[$_group] -> Augeas["subgid_${_group}"]
}
}
}
|