feat: create glauth module

- manage config directories, config file
- manage systemd service and socket
- manage users, service accounts and groups
- manage defaults for users, services and groups
- manage packages for role
This commit is contained in:
2024-06-30 22:41:32 +10:00
parent bc35270731
commit c69e8c487e
19 changed files with 545 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
# define a group object
define glauth::obj::group (
String $group_name,
Integer $gidnumber,
Stdlib::Absolutepath $config_path,
Optional[Array[Integer]] $includegroups = [],
) {
concat::fragment { "glauth_group_${group_name}":
target => $config_path,
content => epp('glauth/obj/group.epp', {
'name' => $group_name,
'gidnumber' => $gidnumber,
'includegroups' => $includegroups,
}),
order => '90',
}
}
+21
View File
@@ -0,0 +1,21 @@
# define a service object
define glauth::obj::service (
String $service_name,
String $mail,
Integer $uidnumber,
Integer $primarygroup,
String $passsha256,
Stdlib::Absolutepath $config_path,
) {
concat::fragment { "glauth_service_${service_name}":
target => $config_path,
content => epp('glauth/obj/service.epp', {
'name' => $service_name,
'mail' => $mail,
'uidnumber' => $uidnumber,
'primarygroup' => $primarygroup,
'passsha256' => $passsha256,
}),
order => '80',
}
}
+39
View File
@@ -0,0 +1,39 @@
# define a user object
define glauth::obj::user (
String $user_name,
String $mail,
Integer $uidnumber,
Integer $primarygroup,
String $passsha256,
Stdlib::Absolutepath $config_path,
String $givenname = '',
String $sn = '',
String $loginshell = '',
String $homedir = '',
Optional[Array[String]] $sshkeys = [],
Optional[Array[String]] $passappsha256 = [],
Optional[Array[Integer]] $othergroups = [],
) {
$formatted_othergroups = $othergroups.empty ? {
true => '[]',
false => "[${othergroups.join(', ')}]",
}
concat::fragment { "glauth_user_${user_name}":
target => $config_path,
content => epp('glauth/obj/user.epp', {
'name' => $user_name,
'givenname' => $givenname,
'sn' => $sn,
'mail' => $mail,
'uidnumber' => $uidnumber,
'primarygroup' => $primarygroup,
'loginshell' => $loginshell,
'homedir' => $homedir,
'passsha256' => $passsha256,
'sshkeys' => $sshkeys,
'passappsha256' => $passappsha256,
'othergroups' => $formatted_othergroups,
}),
order => '70',
}
}