feat(ap-prod): init #621
Labels
No labels
awaiting
awaiting-author
awaiting
awaiting-reviewer
bot
deployed
Silenced alert
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
5 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: DGNum/infrastructure#621
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/ap-prod"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#592 but cleaner
pkgs
and addzyxel-bootconfig
to levitation 590501efe8c55b059445
to8af123fbfa
il y a un truc qui m'agace un peu dans certaines fonctions de
nodes/liminix.nix
, mais faut voir si on peut vraiment faire plus clean@ -0,0 +11,4 @@
admin-vlan = svc.vlan.build {
ifname = "admin";
primary = config.hardware.networkInterfaces.lan;
vid = "3001";
vid = toString meta.isp.vlans."admin-ap".id
pour évité les mauvaise surprise.@ -0,0 +114,4 @@
services = {
# wlan0 is the 2.4GHz interface.
hostap-1 = lib.mkIf (!is5GOnly) (
inherit (lib) mkIf;
(aussi valable pour warn)@ -21,0 +41,4 @@
}:
singleAttr name {
inherit is5GOnly;
channelIndex = lib.mod channelIndex 3;
on peut ajouter le mod dans le inherit (lib)
@ -21,0 +108,4 @@
let
f =
self:
{ }
tu peux utiliser fuseAttrs plutôt que de faire plein de //
@ -21,0 +147,4 @@
# CD
// singleFloor {
name = ap: "AP-CD2-${builtins.toString ap}";
ap-range = mkRange 1 5;
il y a un AP de moins en vrai
le problème est que c'est déjà déployé, si on change la numérotation, ça devient chiant à redéployer: je pense qu'on peut attendre pour l'été prochain de le virer de l'infra?
En attendant ça peut devenir l'AP dummy :)
il a été supprimé :)
@ -21,0 +188,4 @@
"16"
];
in
"AP-MB${builtins.toString f}-${room ap}";
pas besoin de préciser builtins pour toString
@ -21,0 +228,4 @@
aps:
builtins.listToAttrs (
lib.imap0 (idx: v: {
inherit (v) name;
{ name, value }: nameValuePair name (value // ...)
@ -21,0 +230,4 @@
lib.imap0 (idx: v: {
inherit (v) name;
value = v.value // {
"apIndex" = idx;
les guillemet sont supperflu
@ -32,0 +270,4 @@
sshKeys = optional (hasAttr name apMeta) apMeta.${name}.sshKey;
need-ci = false;
Faudrait en avoir un en ci, même si c'est un AP dummy
@ -32,0 +277,4 @@
adminIp
is5GOnly
channelIndex
apIndex
nit: se sera ptet mieux d'avoir la gen de BSSID ici plutôt que dans la config de l'ap
8af123fbfa
to6d151c3284
ad61f2070c
to9fb7154cc1
c26b345af6
to9b4d34aa64
pour match avec #630 quand vous ferez le rebase, le needs-ci doit passer en
null
, ou la même str pour tout les AP (par exemple... AP ?)007c76ad47
to5d77402cc5
5d77402cc5
toad8fa12185
ec70a0ad7f
todbbf4c2dce
dbbf4c2dce
to91637d0966
0c33fc6ca8
to0044bf3640
@ -299,0 +305,4 @@
(pkgs.callPackage (sources.liminix + "/pkgs/min-copy-closure") { nix = pkgs.lix; })
# Daemon-less garbage collection for Liminix systems.
(pkgs.callPackage (sources.liminix + "/pkgs/min-collect-garbage") { nix = pkgs.lix; })
c'est sur l'host et pas l'AP ?
c'est vrai que ça devrait pas être là ça ahah
0044bf3640
toc603c7447c
petit détail de rien du tout, sinon LGTM
@ -65,2 +66,3 @@
monitoring = {
aps = builtins.fromJSON (builtins.readFile ./aps.json);
aps = mapAttrs (_: node: node.extra-args.adminIp) (
filterAttrs (name: node: (hasPrefix "AP" name) && (node.site == config.dgn-isp.site)) meta.nodes
tu peux pas plutot te fier au system, comme pour les switch ?
et je pense on peut le mettre directement dans dgn-isp, c'est exactement le même code pour les trois vault
@lbailly wrote in #621 (comment):
c'est ce que je me disais, mais rien d'autre à part les vaults auront le dgn-isp d'activé?
@lbailly wrote in #621 (comment):
pas bête ^^
c603c7447c
tod8a6644b8b
d8a6644b8b
tobfed5642aa
bfed5642aa
to2de75256d8
2de75256d8
to00b86dbad2
@ -27,3 +34,3 @@
inherit hostname;
};
}) cfg.monitoring.aps;
}) aps;
je pensais plutôt à set dgn-isp.monitoring.aps 😅
dans la section config du default me parait adapté
@lbailly wrote in #621 (comment):
j'avais déjà oublié cette option lol
00b86dbad2
toe6e17ea9f8
e6e17ea9f8
to4e33820883
4e33820883
to1b41230bfd
@rlahfa pour la partie liminix tu sera bien mieux caller que moi
il a cru le poto
Pour avoir les scripts dans le shell, il faut les définir dans
scripts/default.nix
avec leur dépendances@ -290,12 +292,18 @@ in
[
pkgs.lon
pkgs.rage
Non, si tu en as besoin pour un script, ça va en dépendance dans
scripts/default.nix
ce qui est relou c'est que le script est bash only, donc si t'as pas bash (parce que tu dois sourcer le fichier), t'es obligé t'utiliser rage directement, donc je dirais que c'est pas que pour un script
@ -0,0 +9,4 @@
...
}:
let
parentConfig = config;
Ce renommage est inutile
@ -0,0 +46,4 @@
zyxel-bootconfig
];
# Only keep root, which should inherit from DGN access control's root permissions.
users.root = config.users.root;
@ -0,0 +35,4 @@
mtdutils
min-collect-garbage
hostapd-radius
ubus
nit: tu devrais trier la liste
@ -16,1 +16,4 @@
# }
{ lib, ... }:
let
inherit (lib.extra) genFuse singleAttr fuseAttrs;
nit: trie l'inherit
@ -22,0 +61,4 @@
genFuse (
apRel:
let
ap = apRel + ap-range.from;
Ça sert pas à grand chose de définir cette variable si tu l'utilises qu'une fois, inline la et rajoute un commentaire plutôt
@ -22,0 +90,4 @@
genFuse (
floorRel:
let
floor = floorRel + floor-range.from;
Pareil que pour
ap
L64@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: 2024 Maurice Debray <maurice.debray@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2
Le nom du script convient pas, a minima ça devrait être
export-ap-radius-secret
vu ce qu'il fait@ -0,0 +14,4 @@
FIRMWARE_OUTPUT="$2"
dumpimage -T flat_dt -p 0 $ZYXEL_NWA_FIT -o $FIRMWARE_OUTPUT
Tu peux enlever la ligne vide
@ -0,0 +38,4 @@
exit 1
fi
if toplevel="$(nom-build $(colmena eval -E "{ nodes, ... }: nodes.$@.config.system.outputs.systemConfiguration" --instantiate))"; then
Fais le en plusieurs étapes:
Et t'auras plus besoin du
if
faudrait modifier
scripts/netconf-apply.sh
pour match alors ^^@ -0,0 +40,4 @@
if toplevel="$(nom-build $(colmena eval -E "{ nodes, ... }: nodes.$@.config.system.outputs.systemConfiguration" --instantiate))"; then
echo systemConfiguration $toplevel aimed at $root_prefix
sleep 3
Hmmm ?
Si tu veux te laisser le temps d'interrompre demande un input à l'user plutôt
avec un timeout? ça reviendrait au même non?
Sans timeout
@ -0,0 +41,4 @@
if toplevel="$(nom-build $(colmena eval -E "{ nodes, ... }: nodes.$@.config.system.outputs.systemConfiguration" --instantiate))"; then
echo systemConfiguration $toplevel aimed at $root_prefix
sleep 3
min-copy-closure --root "$root_prefix" $target_host $toplevel
Met chaque variable entre quotes
@ -0,0 +42,4 @@
echo systemConfiguration $toplevel aimed at $root_prefix
sleep 3
min-copy-closure --root "$root_prefix" $target_host $toplevel
$ssh_command $target_host "$root_prefix/$toplevel/bin/install" "$root_prefix"
same
@ -0,0 +9,4 @@
set -euxo pipefail
usage() {
echo "./ftp_zeroday.sh [FIT-IMAGE] [IP]"
C'est pas le bon nom de fichier
1b41230bfd
to65ce6375fd
New commits pushed, approval review dismissed automatically according to repository settings
65ce6375fd
to95f2b5146d
95f2b5146d
to4976779f56
@ -0,0 +6,4 @@
let
inherit (pkgs.pseudofile) dir symlink;
dns = [
rajouter un TODO pour utiliser nos propres DNS.
@ -0,0 +16,4 @@
"pool.ntp.org" = [ "iburst" ];
};
makestep = {
Options ultra obscures, ça sert à quoi?
C'est le threshold à partir duquel la clock jump aulieu d'accélérer. C'est de la config plutôt standard de chrony et documenté dans la manpage de chrony.conf mais on peut ajouter un commentaire c'est vrai
@ -0,0 +33,4 @@
defaultProfile.packages = with pkgs; [
hostapd-radius
min-collect-garbage
mtdutils
A-t-on vraiment besoin de mtdutils tout entier sur le système cible? Ça rajoute combien en espace?
@ -0,0 +88,4 @@
# No DNS here, hostapd do not support this mode.
auth_server_addr = "10.0.253.1";
auth_server_port = 1812;
auth_server_shared_secret =
TODO: faut qu'on décide comment on gère ça et probablement qu'on ait un simili-agenix pour les APs ou autre chose…
imo on peut laisser ça à une followup. l'objectif premier de la pr c'est de rapprocher main de la réalité de ce que je comprends (a minima ça doit pas bloquer la pr, mais si elias est motivé pour l'implem...)
@ -0,0 +108,4 @@
};
in
{
hardware.wlanMacAddresses = {
le casing comme ça c'est chelou, tout est en dashed lowercase normalement?
@ -0,0 +3,4 @@
"ip": "10.0.253.2",
"mac": "f4:4d:5c:ff:65:36",
"sshKey": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEN/cTa9mC3Z1Thh+l9faXHMO5uXN7GSBznO+I8mO4fM",
"bssid2G": "02:5B:6A:00:00:00",
À quel moment on a décidé d'avoir les mêmes BSSIDs pour tous les APs d'une même zone sur les 2 radios différentes?
Ils sont pas pareil,
02:5B:6A:00:00:00
vs02:5B:6A:01:00:00
, le 4ème octet diffère46A1-1 et 46A-2 ont le même bssid2G non?
@rlahfa wrote in #621/files (comment):
non le dernier octet diffère
ouais je sais pas lire
@ -39,6 +42,17 @@ let
colmena
jq
];
liminix-rebuild = [
Pourquoi ne pas utiliser des shebang avec des
nix-shell
?Par demande de Tom dans la précédente review ;)
Parce que on veut une version spécifique de colmena ?
@ -0,0 +1,17 @@
# SPDX-FileCopyrightText: 2024 Ryan Lahfa <ryan.lahfa@dgnum.eu>
Imo il faut merge ce fichier avec addresses.nix. D'expérience on modifie souvent les fichiers ensemble
@ -22,0 +93,4 @@
}
) (lenRange floor-range);
AP =
C'est maybe naif mais pk on a toujours ça alors qu'on a le json, je pensais le json remplaçais ce point fixe
@ -0,0 +1,14 @@
# SPDX-FileCopyrightText: 2024 Maurice Debray <maurice.debray@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2
Maybe un commentaire sur comment l'utiliser ? (et idéalement un check si il est bien sourcé et pas exec)
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.