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;
|
rootKeys = getMemberKeys meta.organization.groups.root;
|
||||||
|
|
||||||
# All admins for a node
|
# All admins for a node
|
||||||
getNodeAdmins =
|
getNodeAdmins = node: meta.organization.groups.root ++ meta.nodes.${node}.admins;
|
||||||
node:
|
|
||||||
meta.organization.groups.root
|
|
||||||
++ meta.nodes.${node}.admins
|
|
||||||
++ (builtins.concatMap (g: meta.organization.groups.${g}) meta.nodes.${node}.adminGroups);
|
|
||||||
|
|
||||||
# All keys needed for secret encryption
|
# All keys needed for secret encryption
|
||||||
getSecretKeys = node: unique (getMemberKeys (getNodeAdmins node) ++ getNodeKeys [ node ]);
|
getSecretKeys = node: unique (getMemberKeys (getNodeAdmins node) ++ getNodeKeys [ node ]);
|
||||||
|
|
|
@ -14,12 +14,10 @@ let
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
attrValues
|
attrValues
|
||||||
catAttrs
|
catAttrs
|
||||||
concatLists
|
|
||||||
escapeRegex
|
escapeRegex
|
||||||
concatStringsSep
|
concatStringsSep
|
||||||
mapAttrs'
|
mapAttrs'
|
||||||
nameValuePair
|
nameValuePair
|
||||||
unique
|
|
||||||
;
|
;
|
||||||
|
|
||||||
domain = "sso.dgnum.eu";
|
domain = "sso.dgnum.eu";
|
||||||
|
@ -91,18 +89,7 @@ in
|
||||||
name: members: nameValuePair "grp_${name}" { members = builtins.map usernameFor members; }
|
name: members: nameValuePair "grp_${name}" { members = builtins.map usernameFor members; }
|
||||||
) meta.organization.groups)
|
) meta.organization.groups)
|
||||||
// (mapAttrs' (
|
// (mapAttrs' (
|
||||||
name:
|
name: srv: nameValuePair "grp-admin_${name}" { members = builtins.map usernameFor srv.admins; }
|
||||||
{
|
|
||||||
admins ? [ ],
|
|
||||||
adminGroups ? [ ],
|
|
||||||
}:
|
|
||||||
nameValuePair "grp-admin_${name}" {
|
|
||||||
members = unique (
|
|
||||||
builtins.map usernameFor (
|
|
||||||
admins ++ (concatLists (builtins.map (group: meta.organization.groups.${group}) adminGroups))
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
) meta.organization.services);
|
) meta.organization.services);
|
||||||
|
|
||||||
# INFO: The authentication resources declared here can only be for internal services,
|
# INFO: The authentication resources declared here can only be for internal services,
|
||||||
|
|
|
@ -8,11 +8,13 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
|
concatMap
|
||||||
mkEnableOption
|
mkEnableOption
|
||||||
mkDefault
|
mkDefault
|
||||||
mkIf
|
mkIf
|
||||||
mkOption
|
mkOption
|
||||||
optionalAttrs
|
optionalAttrs
|
||||||
|
unique
|
||||||
;
|
;
|
||||||
|
|
||||||
inherit (lib.types)
|
inherit (lib.types)
|
||||||
|
@ -98,6 +100,7 @@ in
|
||||||
|
|
||||||
sshKeys = lib.mkOption {
|
sshKeys = lib.mkOption {
|
||||||
type = listOf singleLineStr;
|
type = listOf singleLineStr;
|
||||||
|
default = [ ];
|
||||||
description = ''
|
description = ''
|
||||||
A list of verbatim OpenSSH public keys that should be added to the
|
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
|
authorized keys of the root user for the nodes where the member has
|
||||||
|
@ -148,7 +151,10 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
services = mkOption {
|
services = mkOption {
|
||||||
type = attrsOf (submodule {
|
type = attrsOf (
|
||||||
|
submodule (
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
options = {
|
options = {
|
||||||
admins = mkOption {
|
admins = mkOption {
|
||||||
type = listOf str;
|
type = listOf str;
|
||||||
|
@ -156,6 +162,7 @@ in
|
||||||
description = ''
|
description = ''
|
||||||
List of administrators of the service.
|
List of administrators of the service.
|
||||||
'';
|
'';
|
||||||
|
apply = unique;
|
||||||
};
|
};
|
||||||
|
|
||||||
adminGroups = mkOption {
|
adminGroups = mkOption {
|
||||||
|
@ -166,7 +173,13 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
config = {
|
||||||
|
admins = concatMap (group: org.groups.${group}) config.adminGroups;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
description = ''
|
description = ''
|
||||||
Administrator access of the different DGNum services,
|
Administrator access of the different DGNum services,
|
||||||
it is mainly indicative as most services cannot configure this statically.
|
it is mainly indicative as most services cannot configure this statically.
|
||||||
|
@ -243,6 +256,7 @@ in
|
||||||
description = ''
|
description = ''
|
||||||
List of members to be given root access to this node.
|
List of members to be given root access to this node.
|
||||||
'';
|
'';
|
||||||
|
apply = unique;
|
||||||
};
|
};
|
||||||
|
|
||||||
adminGroups = mkOption {
|
adminGroups = mkOption {
|
||||||
|
@ -268,6 +282,8 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
admins = concatMap (group: org.groups.${group}) config.adminGroups;
|
||||||
|
|
||||||
deployment =
|
deployment =
|
||||||
{
|
{
|
||||||
tags = [
|
tags = [
|
||||||
|
|
|
@ -23,10 +23,7 @@ let
|
||||||
types
|
types
|
||||||
;
|
;
|
||||||
|
|
||||||
admins =
|
admins = meta.organization.groups.root ++ nodeMeta.admins;
|
||||||
meta.organization.groups.root
|
|
||||||
++ nodeMeta.admins
|
|
||||||
++ (builtins.concatMap (g: meta.organization.groups.${g}) nodeMeta.adminGroups);
|
|
||||||
|
|
||||||
cfg = config.dgn-access-control;
|
cfg = config.dgn-access-control;
|
||||||
in
|
in
|
||||||
|
|
|
@ -24,10 +24,7 @@ let
|
||||||
types
|
types
|
||||||
;
|
;
|
||||||
|
|
||||||
admins =
|
admins = meta.organization.groups.root ++ nodeMeta.admins;
|
||||||
meta.organization.groups.root
|
|
||||||
++ nodeMeta.admins
|
|
||||||
++ (builtins.concatMap (g: meta.organization.groups.${g}) nodeMeta.adminGroups);
|
|
||||||
|
|
||||||
cfg = config.dgn-access-control;
|
cfg = config.dgn-access-control;
|
||||||
in
|
in
|
||||||
|
|
|
@ -13,19 +13,13 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
concatStringsSep
|
concatMapStringsSep
|
||||||
mkEnableOption
|
mkEnableOption
|
||||||
mkForce
|
mkForce
|
||||||
mkIf
|
mkIf
|
||||||
;
|
;
|
||||||
|
|
||||||
emails = concatStringsSep ", " (
|
emails = concatMapStringsSep ", " (name: meta.organization.members.${name}.email) nodeMeta.admins;
|
||||||
builtins.map (name: meta.organization.members.${name}.email) (
|
|
||||||
builtins.foldl' (
|
|
||||||
admins: group: admins ++ meta.organization.groups.${group}
|
|
||||||
) nodeMeta.admins nodeMeta.adminGroups
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
cfg = config.dgn-notify;
|
cfg = config.dgn-notify;
|
||||||
in
|
in
|
||||||
|
|
Loading…
Add table
Reference in a new issue