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` :
|
||||
|
||||
```bash
|
||||
cd ~/nixos-workstations
|
||||
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
|
||||
```text
|
||||
bureautix-01 -> alice
|
||||
bureautix-02 -> bob
|
||||
bureautix-03 -> mike
|
||||
```
|
||||
|
||||
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 ;
|
||||
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.
|
||||
## Premier test de non-régression
|
||||
|
||||
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 ;
|
||||
- PIN d'une YubiKey vierge ;
|
||||
- enrôlement FIDO2 dans `systemd-homed`.
|
||||
```bash
|
||||
sudo nixos-rebuild switch \
|
||||
-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 = [
|
||||
# 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
|
||||
|
||||
./modules/software.nix
|
||||
./modules/users.nix
|
||||
./modules/homed.nix
|
||||
./modules/security.nix
|
||||
./modules/workstation-setup.nix
|
||||
./modules/provisioning.nix
|
||||
];
|
||||
|
||||
# Pré-provisionnement automatique : le rebuild crée Alice avec systemd-homed
|
||||
# et un home LUKS2. L'assistant se lance ensuite à sa première session.
|
||||
nixosWorkstations.homedUser = {
|
||||
enable = true;
|
||||
user = "alice";
|
||||
realName = "Alice";
|
||||
initialPassword = "LaboTest@1980";
|
||||
diskSize = "10G";
|
||||
};
|
||||
# Les flakes utilisent encore les fonctionnalités expérimentales du client Nix.
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
nixosWorkstations.workstationSetup = {
|
||||
enable = true;
|
||||
user = "alice";
|
||||
};
|
||||
# Cette configuration est volontairement commune. Elle doit toujours être
|
||||
# appelée par une fiche de poste qui choisit explicitement un utilisateur.
|
||||
assertions = [
|
||||
{
|
||||
assertion = config.nixosWorkstations.provisioning.enable;
|
||||
message = "Sélectionnez une fiche dans hosts/ au lieu de construire configuration.nix directement.";
|
||||
}
|
||||
];
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.hostName = "bureautix-01";
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
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