feat(meta): Use the module system to directly create the admin list from the groups
All checks were successful
Check meta / check_meta (pull_request) Successful in 15s
Check meta / check_dns (pull_request) Successful in 15s
Build all the nodes / netaccess01 (pull_request) Successful in 20s
Build all the nodes / netcore01 (pull_request) Successful in 21s
Build all the nodes / netcore02 (pull_request) Successful in 21s
Check workflows / check_workflows (pull_request) Successful in 26s
Build all the nodes / ap01 (pull_request) Successful in 32s
Build the shell / build-shell (pull_request) Successful in 24s
Run pre-commit on all files / pre-commit (pull_request) Successful in 45s
Build all the nodes / hypervisor03 (pull_request) Successful in 1m38s
Build all the nodes / web01 (pull_request) Successful in 2m13s
Build all the nodes / compute01 (pull_request) Successful in 2m44s
Build all the nodes / hypervisor02 (pull_request) Successful in 3m4s
Build all the nodes / rescue01 (pull_request) Successful in 3m10s
Build all the nodes / build01 (pull_request) Successful in 3m15s
Build all the nodes / bridge01 (pull_request) Successful in 3m16s
Build all the nodes / hypervisor01 (pull_request) Successful in 3m22s
Build all the nodes / geo01 (pull_request) Successful in 3m26s
Build all the nodes / web02 (pull_request) Successful in 3m6s
Build all the nodes / tower01 (pull_request) Successful in 3m16s
Build all the nodes / geo02 (pull_request) Successful in 3m46s
Build all the nodes / vault01 (pull_request) Successful in 3m36s
Build all the nodes / storage01 (pull_request) Successful in 3m46s
Build all the nodes / web03 (pull_request) Successful in 3m48s
Check meta / check_meta (push) Successful in 15s
Check meta / check_dns (push) Successful in 16s
Check workflows / check_workflows (push) Successful in 16s
Build all the nodes / netaccess01 (push) Successful in 20s
Build all the nodes / ap01 (push) Successful in 31s
Build all the nodes / netcore01 (push) Successful in 39s
Build all the nodes / netcore02 (push) Successful in 39s
Build the shell / build-shell (push) Successful in 44s
Run pre-commit on all files / pre-commit (push) Successful in 49s
Build all the nodes / hypervisor01 (push) Successful in 1m43s
Build all the nodes / tower01 (push) Successful in 1m43s
Build all the nodes / bridge01 (push) Successful in 1m46s
Build all the nodes / build01 (push) Successful in 3m29s
Build all the nodes / storage01 (push) Successful in 3m41s
Build all the nodes / web02 (push) Successful in 3m25s
Build all the nodes / geo01 (push) Successful in 3m46s
Build all the nodes / rescue01 (push) Successful in 3m47s
Build all the nodes / geo02 (push) Successful in 3m58s
Build all the nodes / hypervisor03 (push) Successful in 4m1s
Build all the nodes / web03 (push) Successful in 3m33s
Build all the nodes / hypervisor02 (push) Successful in 4m16s
Build all the nodes / web01 (push) Successful in 4m2s
Build all the nodes / vault01 (push) Successful in 4m11s
Build all the nodes / compute01 (push) Successful in 4m33s
All checks were successful
Check meta / check_meta (pull_request) Successful in 15s
Check meta / check_dns (pull_request) Successful in 15s
Build all the nodes / netaccess01 (pull_request) Successful in 20s
Build all the nodes / netcore01 (pull_request) Successful in 21s
Build all the nodes / netcore02 (pull_request) Successful in 21s
Check workflows / check_workflows (pull_request) Successful in 26s
Build all the nodes / ap01 (pull_request) Successful in 32s
Build the shell / build-shell (pull_request) Successful in 24s
Run pre-commit on all files / pre-commit (pull_request) Successful in 45s
Build all the nodes / hypervisor03 (pull_request) Successful in 1m38s
Build all the nodes / web01 (pull_request) Successful in 2m13s
Build all the nodes / compute01 (pull_request) Successful in 2m44s
Build all the nodes / hypervisor02 (pull_request) Successful in 3m4s
Build all the nodes / rescue01 (pull_request) Successful in 3m10s
Build all the nodes / build01 (pull_request) Successful in 3m15s
Build all the nodes / bridge01 (pull_request) Successful in 3m16s
Build all the nodes / hypervisor01 (pull_request) Successful in 3m22s
Build all the nodes / geo01 (pull_request) Successful in 3m26s
Build all the nodes / web02 (pull_request) Successful in 3m6s
Build all the nodes / tower01 (pull_request) Successful in 3m16s
Build all the nodes / geo02 (pull_request) Successful in 3m46s
Build all the nodes / vault01 (pull_request) Successful in 3m36s
Build all the nodes / storage01 (pull_request) Successful in 3m46s
Build all the nodes / web03 (pull_request) Successful in 3m48s
Check meta / check_meta (push) Successful in 15s
Check meta / check_dns (push) Successful in 16s
Check workflows / check_workflows (push) Successful in 16s
Build all the nodes / netaccess01 (push) Successful in 20s
Build all the nodes / ap01 (push) Successful in 31s
Build all the nodes / netcore01 (push) Successful in 39s
Build all the nodes / netcore02 (push) Successful in 39s
Build the shell / build-shell (push) Successful in 44s
Run pre-commit on all files / pre-commit (push) Successful in 49s
Build all the nodes / hypervisor01 (push) Successful in 1m43s
Build all the nodes / tower01 (push) Successful in 1m43s
Build all the nodes / bridge01 (push) Successful in 1m46s
Build all the nodes / build01 (push) Successful in 3m29s
Build all the nodes / storage01 (push) Successful in 3m41s
Build all the nodes / web02 (push) Successful in 3m25s
Build all the nodes / geo01 (push) Successful in 3m46s
Build all the nodes / rescue01 (push) Successful in 3m47s
Build all the nodes / geo02 (push) Successful in 3m58s
Build all the nodes / hypervisor03 (push) Successful in 4m1s
Build all the nodes / web03 (push) Successful in 3m33s
Build all the nodes / hypervisor02 (push) Successful in 4m16s
Build all the nodes / web01 (push) Successful in 4m2s
Build all the nodes / vault01 (push) Successful in 4m11s
Build all the nodes / compute01 (push) Successful in 4m33s
This commit is contained in:
parent
0433a00636
commit
7eef4e2661
6 changed files with 40 additions and 53 deletions
|
@ -28,11 +28,7 @@ rec {
|
|||
rootKeys = getMemberKeys meta.organization.groups.root;
|
||||
|
||||
# All admins for a node
|
||||
getNodeAdmins =
|
||||
node:
|
||||
meta.organization.groups.root
|
||||
++ meta.nodes.${node}.admins
|
||||
++ (builtins.concatMap (g: meta.organization.groups.${g}) meta.nodes.${node}.adminGroups);
|
||||
getNodeAdmins = node: meta.organization.groups.root ++ meta.nodes.${node}.admins;
|
||||
|
||||
# All keys needed for secret encryption
|
||||
getSecretKeys = node: unique (getMemberKeys (getNodeAdmins node) ++ getNodeKeys [ node ]);
|
||||
|
|
|
@ -14,12 +14,10 @@ let
|
|||
inherit (lib)
|
||||
attrValues
|
||||
catAttrs
|
||||
concatLists
|
||||
escapeRegex
|
||||
concatStringsSep
|
||||
mapAttrs'
|
||||
nameValuePair
|
||||
unique
|
||||
;
|
||||
|
||||
domain = "sso.dgnum.eu";
|
||||
|
@ -91,18 +89,7 @@ in
|
|||
name: members: nameValuePair "grp_${name}" { members = builtins.map usernameFor members; }
|
||||
) meta.organization.groups)
|
||||
// (mapAttrs' (
|
||||
name:
|
||||
{
|
||||
admins ? [ ],
|
||||
adminGroups ? [ ],
|
||||
}:
|
||||
nameValuePair "grp-admin_${name}" {
|
||||
members = unique (
|
||||
builtins.map usernameFor (
|
||||
admins ++ (concatLists (builtins.map (group: meta.organization.groups.${group}) adminGroups))
|
||||
)
|
||||
);
|
||||
}
|
||||
name: srv: nameValuePair "grp-admin_${name}" { members = builtins.map usernameFor srv.admins; }
|
||||
) meta.organization.services);
|
||||
|
||||
# INFO: The authentication resources declared here can only be for internal services,
|
||||
|
|
|
@ -8,11 +8,13 @@
|
|||
|
||||
let
|
||||
inherit (lib)
|
||||
concatMap
|
||||
mkEnableOption
|
||||
mkDefault
|
||||
mkIf
|
||||
mkOption
|
||||
optionalAttrs
|
||||
unique
|
||||
;
|
||||
|
||||
inherit (lib.types)
|
||||
|
@ -98,6 +100,7 @@ in
|
|||
|
||||
sshKeys = lib.mkOption {
|
||||
type = listOf singleLineStr;
|
||||
default = [ ];
|
||||
description = ''
|
||||
A list of verbatim OpenSSH public keys that should be added to the
|
||||
authorized keys of the root user for the nodes where the member has
|
||||
|
@ -148,25 +151,35 @@ in
|
|||
};
|
||||
|
||||
services = mkOption {
|
||||
type = attrsOf (submodule {
|
||||
options = {
|
||||
admins = mkOption {
|
||||
type = listOf str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of administrators of the service.
|
||||
'';
|
||||
};
|
||||
type = attrsOf (
|
||||
submodule (
|
||||
{ config, ... }:
|
||||
{
|
||||
options = {
|
||||
admins = mkOption {
|
||||
type = listOf str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of administrators of the service.
|
||||
'';
|
||||
apply = unique;
|
||||
};
|
||||
|
||||
adminGroups = mkOption {
|
||||
type = listOf str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of administrator groups of the service.
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
adminGroups = mkOption {
|
||||
type = listOf str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of administrator groups of the service.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
admins = concatMap (group: org.groups.${group}) config.adminGroups;
|
||||
};
|
||||
}
|
||||
)
|
||||
);
|
||||
description = ''
|
||||
Administrator access of the different DGNum services,
|
||||
it is mainly indicative as most services cannot configure this statically.
|
||||
|
@ -243,6 +256,7 @@ in
|
|||
description = ''
|
||||
List of members to be given root access to this node.
|
||||
'';
|
||||
apply = unique;
|
||||
};
|
||||
|
||||
adminGroups = mkOption {
|
||||
|
@ -268,6 +282,8 @@ in
|
|||
};
|
||||
|
||||
config = {
|
||||
admins = concatMap (group: org.groups.${group}) config.adminGroups;
|
||||
|
||||
deployment =
|
||||
{
|
||||
tags = [
|
||||
|
|
|
@ -23,10 +23,7 @@ let
|
|||
types
|
||||
;
|
||||
|
||||
admins =
|
||||
meta.organization.groups.root
|
||||
++ nodeMeta.admins
|
||||
++ (builtins.concatMap (g: meta.organization.groups.${g}) nodeMeta.adminGroups);
|
||||
admins = meta.organization.groups.root ++ nodeMeta.admins;
|
||||
|
||||
cfg = config.dgn-access-control;
|
||||
in
|
||||
|
|
|
@ -24,10 +24,7 @@ let
|
|||
types
|
||||
;
|
||||
|
||||
admins =
|
||||
meta.organization.groups.root
|
||||
++ nodeMeta.admins
|
||||
++ (builtins.concatMap (g: meta.organization.groups.${g}) nodeMeta.adminGroups);
|
||||
admins = meta.organization.groups.root ++ nodeMeta.admins;
|
||||
|
||||
cfg = config.dgn-access-control;
|
||||
in
|
||||
|
|
|
@ -13,19 +13,13 @@
|
|||
|
||||
let
|
||||
inherit (lib)
|
||||
concatStringsSep
|
||||
concatMapStringsSep
|
||||
mkEnableOption
|
||||
mkForce
|
||||
mkIf
|
||||
;
|
||||
|
||||
emails = concatStringsSep ", " (
|
||||
builtins.map (name: meta.organization.members.${name}.email) (
|
||||
builtins.foldl' (
|
||||
admins: group: admins ++ meta.organization.groups.${group}
|
||||
) nodeMeta.admins nodeMeta.adminGroups
|
||||
)
|
||||
);
|
||||
emails = concatMapStringsSep ", " (name: meta.organization.members.${name}.email) nodeMeta.admins;
|
||||
|
||||
cfg = config.dgn-notify;
|
||||
in
|
||||
|
|
Loading…
Add table
Reference in a new issue