Téléverser les fichiers vers "/"
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
# v1.9.0 - Provisionnement modulaire
|
||||||
|
|
||||||
|
Cette version transforme la v1.8.7 validée en configuration multi-postes / multi-utilisateurs.
|
||||||
|
|
||||||
|
## Principes
|
||||||
|
|
||||||
|
- Le moteur de provisionnement reste commun à tous les postes.
|
||||||
|
- Une fiche dans `users/` décrit l'identité de l'utilisateur à préparer.
|
||||||
|
- Une fiche dans `hosts/` associe un poste à une fiche utilisateur.
|
||||||
|
- `configuration.nix` contient uniquement la configuration commune.
|
||||||
|
- `flake.nix` expose une configuration NixOS par poste.
|
||||||
|
- La configuration matérielle reste locale dans `/etc/nixos/hardware-configuration.nix` et n'est pas placée dans le dépôt.
|
||||||
|
|
||||||
|
## Exemples fournis
|
||||||
|
|
||||||
|
- `bureautix-01` -> `alice`
|
||||||
|
- `bureautix-02` -> `bob`
|
||||||
|
- `bureautix-03` -> `mike`
|
||||||
|
|
||||||
|
## Non-régression
|
||||||
|
|
||||||
|
La logique validée en v1.8.7 n'est pas modifiée :
|
||||||
|
|
||||||
|
- création systemd-homed ;
|
||||||
|
- espace personnel LUKS2 ;
|
||||||
|
- changement du mot de passe ;
|
||||||
|
- création du PIN YubiKey ;
|
||||||
|
- association FIDO2 ;
|
||||||
|
- affichage SDDM ;
|
||||||
|
- assistant de première connexion.
|
||||||
|
|
||||||
|
## Flakes
|
||||||
|
|
||||||
|
Le dépôt utilise `nixpkgs` sur la branche `nixos-26.05`. Le fichier `flake.lock` doit être généré une première fois sur une machine disposant de Nix puis ajouté au dépôt afin de figer précisément la révision utilisée.
|
||||||
|
|
||||||
|
Comme `hardware-configuration.nix` reste volontairement hors du dépôt, les commandes Flake doivent actuellement être lancées avec `--impure`.
|
||||||
+76
-21
@@ -1,32 +1,87 @@
|
|||||||
# Déploiement v1.8 LAB
|
# Déploiement v1.9.0
|
||||||
|
|
||||||
La procédure de référence est décrite dans `PROVISIONING-v1.8-LAB.md`.
|
## Choisir le poste, pas l'utilisateur
|
||||||
|
|
||||||
## Commande de déploiement
|
Le déploiement sélectionne uniquement une fiche de poste. Cette fiche détermine elle-même l'utilisateur à préparer.
|
||||||
|
|
||||||
Depuis `localadm` :
|
```text
|
||||||
|
bureautix-01 -> alice
|
||||||
```bash
|
bureautix-02 -> bob
|
||||||
cd ~/nixos-workstations
|
bureautix-03 -> mike
|
||||||
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Cette activation :
|
Il ne faut donc jamais fournir séparément un nom de poste et un nom d'utilisateur à la commande de build.
|
||||||
|
|
||||||
1. installe/configure le poste ;
|
## Premier test de non-régression
|
||||||
2. active `systemd-homed` ;
|
|
||||||
3. précrée `alice` si elle n'existe pas ;
|
|
||||||
4. crée `/home/alice.home` en LUKS2 avec le mot de passe temporaire LAB ;
|
|
||||||
5. lance SDDM avec le support d'énumération des comptes homed.
|
|
||||||
|
|
||||||
Aucune action `homectl` manuelle n'est demandée à `localadm`.
|
Sur le poste de LAB déjà validé pour Alice :
|
||||||
|
|
||||||
## Première session
|
```bash
|
||||||
|
sudo nixos-rebuild build \
|
||||||
|
-I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
|
||||||
|
```
|
||||||
|
|
||||||
Alice se connecte avec le mot de passe temporaire et l'assistant finalise automatiquement :
|
Puis :
|
||||||
|
|
||||||
- mot de passe personnel ;
|
```bash
|
||||||
- PIN d'une YubiKey vierge ;
|
sudo nixos-rebuild switch \
|
||||||
- enrôlement FIDO2 dans `systemd-homed`.
|
-I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
|
||||||
|
```
|
||||||
|
|
||||||
Aucune recovery key n'est créée à ce stade.
|
Le compte existant doit être détecté et laissé intact par le service de pré-provisionnement.
|
||||||
|
|
||||||
|
## Passage aux flakes
|
||||||
|
|
||||||
|
Après cette première activation :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /home/localadm/nixos-workstations
|
||||||
|
nix flake lock
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis tester :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild build --impure --flake .#bureautix-01
|
||||||
|
```
|
||||||
|
|
||||||
|
Si ce build est correct :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch --impure --flake .#bureautix-01
|
||||||
|
```
|
||||||
|
|
||||||
|
`--impure` est requis parce que la configuration matérielle reste dans `/etc/nixos/hardware-configuration.nix` et n'est pas intégrée au dépôt.
|
||||||
|
|
||||||
|
## Nouveau poste pour Bob
|
||||||
|
|
||||||
|
Sur un poste neuf destiné à Bob :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild build --impure --flake .#bureautix-02
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch --impure --flake .#bureautix-02
|
||||||
|
```
|
||||||
|
|
||||||
|
La fiche `hosts/bureautix-02.nix` sélectionne automatiquement `users/bob.nix`.
|
||||||
|
|
||||||
|
## Nouveau poste pour Mike
|
||||||
|
|
||||||
|
Même principe :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch --impure --flake .#bureautix-03
|
||||||
|
```
|
||||||
|
|
||||||
|
## Nouveau couple poste / utilisateur
|
||||||
|
|
||||||
|
Pour une nouvelle personne :
|
||||||
|
|
||||||
|
1. créer sa fiche dans `users/` ;
|
||||||
|
2. créer la fiche du nouveau poste dans `hosts/` ;
|
||||||
|
3. ajouter le poste dans `flake.nix` ;
|
||||||
|
4. lancer le build en sélectionnant uniquement le poste.
|
||||||
|
|||||||
+14
-14
@@ -2,34 +2,34 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
# Le matériel reste propre à la machine et n'est pas stocké dans le dépôt.
|
||||||
|
# Avec un build Flake, utiliser --impure afin d'autoriser cet import local.
|
||||||
/etc/nixos/hardware-configuration.nix
|
/etc/nixos/hardware-configuration.nix
|
||||||
|
|
||||||
./modules/software.nix
|
./modules/software.nix
|
||||||
./modules/users.nix
|
./modules/users.nix
|
||||||
./modules/homed.nix
|
./modules/homed.nix
|
||||||
./modules/security.nix
|
./modules/security.nix
|
||||||
./modules/workstation-setup.nix
|
./modules/workstation-setup.nix
|
||||||
|
./modules/provisioning.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Pré-provisionnement automatique : le rebuild crée Alice avec systemd-homed
|
# Les flakes utilisent encore les fonctionnalités expérimentales du client Nix.
|
||||||
# et un home LUKS2. L'assistant se lance ensuite à sa première session.
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
nixosWorkstations.homedUser = {
|
|
||||||
enable = true;
|
|
||||||
user = "alice";
|
|
||||||
realName = "Alice";
|
|
||||||
initialPassword = "LaboTest@1980";
|
|
||||||
diskSize = "10G";
|
|
||||||
};
|
|
||||||
|
|
||||||
nixosWorkstations.workstationSetup = {
|
# Cette configuration est volontairement commune. Elle doit toujours être
|
||||||
enable = true;
|
# appelée par une fiche de poste qui choisit explicitement un utilisateur.
|
||||||
user = "alice";
|
assertions = [
|
||||||
};
|
{
|
||||||
|
assertion = config.nixosWorkstations.provisioning.enable;
|
||||||
|
message = "Sélectionnez une fiche dans hosts/ au lieu de construire configuration.nix directement.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
networking.hostName = "bureautix-01";
|
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
time.timeZone = "Europe/Paris";
|
time.timeZone = "Europe/Paris";
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
description = "NixOS Workstations - provisionnement modulaire";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { nixpkgs, ... }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
mkWorkstation = hostModule:
|
||||||
|
nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
modules = [ hostModule ];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
nixosConfigurations = {
|
||||||
|
bureautix-01 = mkWorkstation ./hosts/bureautix-01.nix;
|
||||||
|
bureautix-02 = mkWorkstation ./hosts/bureautix-02.nix;
|
||||||
|
bureautix-03 = mkWorkstation ./hosts/bureautix-03.nix;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user