init
This commit is contained in:
@@ -0,0 +1,391 @@
|
||||
# Nixos_Fleet
|
||||
|
||||
Déploiement en masse (PXE ou USB) du profil générique `usagers`.
|
||||
|
||||
Repo public. `git pull` sans mot de passe.
|
||||
|
||||
Ne contient aucune donnée des utilisateurs nommés. Ça, c'est dans [Nixos_Users](../nixos_users), repo privé séparé.
|
||||
|
||||
---
|
||||
|
||||
# Installer un PC
|
||||
|
||||
Une étape à la fois. Ne saute pas d'étape.
|
||||
|
||||
## Étape 1 — Brancher
|
||||
|
||||
Branche le câble réseau.
|
||||
|
||||
Branche le PC au secteur.
|
||||
|
||||
Allume le PC.
|
||||
|
||||
## Étape 2 — Menu de démarrage
|
||||
|
||||
Appuie plusieurs fois sur une touche dès l'allumage.
|
||||
|
||||
Dell → F12
|
||||
|
||||
HP → F9
|
||||
|
||||
Lenovo → F12
|
||||
|
||||
Choisis : Network Boot.
|
||||
|
||||
## Étape 3 — Attendre
|
||||
|
||||
Un écran noir avec du texte apparaît seul.
|
||||
|
||||
Attends.
|
||||
|
||||
## Étape 4 — Choisir un cas
|
||||
|
||||
Il y a deux cas. Choisis-en un seul.
|
||||
|
||||
PC normal → va à l'étape 4A.
|
||||
|
||||
PC pour thomas, clara, jade ou oreo → va à l'étape 4B.
|
||||
|
||||
## Étape 4A — PC normal
|
||||
|
||||
Tape : `1`
|
||||
|
||||
Appuie sur Entrée.
|
||||
|
||||
N'appuie plus sur rien.
|
||||
|
||||
Attends la fin (plusieurs minutes).
|
||||
|
||||
Va à l'étape 5.
|
||||
|
||||
## Étape 4B — PC pour une personne
|
||||
|
||||
Tape : `2`
|
||||
|
||||
Appuie sur Entrée.
|
||||
|
||||
Tape le prénom (thomas, clara, jade ou oreo).
|
||||
|
||||
Appuie sur Entrée.
|
||||
|
||||
Une question sur le chiffrement apparaît.
|
||||
|
||||
Pas sûr → appuie juste sur Entrée.
|
||||
|
||||
Tape le token (donné à part, pas dans ce guide).
|
||||
|
||||
Appuie sur Entrée.
|
||||
|
||||
Si une passphrase est demandée :
|
||||
|
||||
Tape-la.
|
||||
|
||||
Note-la sur papier tout de suite.
|
||||
|
||||
Attends la fin (plusieurs minutes).
|
||||
|
||||
Va à l'étape 5.
|
||||
|
||||
## Étape 5 — Redémarrage
|
||||
|
||||
Le PC redémarre seul.
|
||||
|
||||
N'y touche pas.
|
||||
|
||||
## Étape 6 — Connexion
|
||||
|
||||
PC normal :
|
||||
|
||||
Utilisateur : `usagers`
|
||||
|
||||
Mot de passe : `nixos`
|
||||
|
||||
PC pour une personne :
|
||||
|
||||
Utilisateur : le prénom tapé à l'étape 4B
|
||||
|
||||
Mot de passe : `nixos`
|
||||
|
||||
Un nouveau mot de passe est demandé tout de suite. Le choisir maintenant.
|
||||
|
||||
## Étape 7 — Vérifier
|
||||
|
||||
Le bureau s'affiche.
|
||||
|
||||
Firefox s'ouvre.
|
||||
|
||||
Le son fonctionne.
|
||||
|
||||
Tout est bon → le PC est prêt.
|
||||
|
||||
## Si ça bloque
|
||||
|
||||
N'insiste pas seul.
|
||||
|
||||
Préviens le référent technique.
|
||||
|
||||
---
|
||||
|
||||
# Installer le serveur PXE
|
||||
|
||||
Une étape à la fois.
|
||||
|
||||
## Étape 1 — Installer NixOS
|
||||
|
||||
ISO : https://nixos.org/download
|
||||
|
||||
Partitionnement normal.
|
||||
|
||||
Définir un mot de passe root.
|
||||
|
||||
## Étape 2 — Cloner le repo
|
||||
|
||||
```bash
|
||||
nix-shell -p git
|
||||
git clone https://gitea.miniclic.net/Damien/Nixos_Fleet.git /etc/nixos-fleet
|
||||
cd /etc/nixos-fleet
|
||||
```
|
||||
|
||||
## Étape 3 — Éditer 3 valeurs
|
||||
|
||||
Fichier : `pxe-server/configuration.nix`
|
||||
|
||||
`interface` → sortie de `ip a`
|
||||
|
||||
`serverIp` → IP fixe du serveur
|
||||
|
||||
`standaloneDhcp` → laisser `false` si le réseau a déjà un DHCP
|
||||
|
||||
```bash
|
||||
$EDITOR pxe-server/configuration.nix
|
||||
```
|
||||
|
||||
## Étape 4 — Construire
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#pxe-server
|
||||
```
|
||||
|
||||
## Étape 5 — Publier l'image
|
||||
|
||||
```bash
|
||||
sudo systemctl start pxe-publish
|
||||
sudo systemctl status pxe-publish
|
||||
```
|
||||
|
||||
Doit finir en "success". Première fois : plusieurs minutes.
|
||||
|
||||
## Étape 6 — Vérifier
|
||||
|
||||
```bash
|
||||
sudo systemctl status dnsmasq caddy
|
||||
ls /var/lib/tftpboot
|
||||
ls /var/www/pxe
|
||||
curl -I http://<serverIp>/netboot.ipxe
|
||||
```
|
||||
|
||||
Tout doit répondre sans erreur.
|
||||
|
||||
## Étape 7 — Tester sur 1 PC
|
||||
|
||||
Démarrer un seul PC en PXE.
|
||||
|
||||
Vérifier qu'il arrive sur l'écran de choix.
|
||||
|
||||
Si le parc a du BIOS et de l'UEFI, tester les deux.
|
||||
|
||||
Ne pas lancer 20 PC avant que cette étape fonctionne.
|
||||
|
||||
## Après l'installation
|
||||
|
||||
Noter l'IP du serveur quelque part accessible à l'équipe.
|
||||
|
||||
Vérifier que `pxe-publish.timer` est actif :
|
||||
|
||||
```bash
|
||||
systemctl is-enabled pxe-publish.timer
|
||||
```
|
||||
|
||||
Ce serveur n'a rien à sauvegarder à part le repo git.
|
||||
|
||||
## Entretien
|
||||
|
||||
Republier l'image après une modif de `installer/` :
|
||||
|
||||
```bash
|
||||
sudo systemctl start pxe-publish
|
||||
```
|
||||
|
||||
Appliquer une modif de `pxe-server/configuration.nix` :
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#pxe-server
|
||||
```
|
||||
|
||||
Voir les logs DHCP/TFTP :
|
||||
|
||||
```bash
|
||||
journalctl -u dnsmasq -f
|
||||
```
|
||||
|
||||
Voir les logs HTTP :
|
||||
|
||||
```bash
|
||||
journalctl -u caddy -f
|
||||
```
|
||||
|
||||
## Si ça bloque
|
||||
|
||||
Écran PXE ne trouve rien → revérifier `serverIp` et `interface`.
|
||||
|
||||
Boucle infinie au démarrage → regarder `journalctl -u dnsmasq` pendant un boot.
|
||||
|
||||
UEFI ou BIOS ne boote pas → vérifier les deux fichiers dans `/var/lib/tftpboot`.
|
||||
|
||||
IP qui changent tout le temps → un autre DHCP tourne déjà, repasser `standaloneDhcp` à `false`.
|
||||
|
||||
---
|
||||
|
||||
# Référence
|
||||
|
||||
## Contenu du repo
|
||||
|
||||
`hosts/usagers/` → le seul profil du repo. Jamais chiffré.
|
||||
|
||||
`disks/plain.nix` → layout disko (disque `main`, GPT+ESP+btrfs).
|
||||
|
||||
`installer/` → l'image d'installation, PXE et USB. Même image pour tous les cas.
|
||||
|
||||
`pxe-server/` → le serveur PXE (dnsmasq + Caddy).
|
||||
|
||||
## Pourquoi deux repos
|
||||
|
||||
Une machine de la flotte pull uniquement ce repo.
|
||||
|
||||
Les comptes thomas/clara/jade/oreo vivent dans un autre repo, privé.
|
||||
|
||||
La flotte ne voit jamais ce second repo.
|
||||
|
||||
## Graver la clé USB
|
||||
|
||||
```bash
|
||||
nix build .#nixosConfigurations.installer-iso.config.system.build.isoImage
|
||||
sudo dd if=result/iso/*.iso of=/dev/sdX bs=4M status=progress conv=fsync
|
||||
```
|
||||
|
||||
Vérifier `/dev/sdX` avant de lancer `dd`.
|
||||
|
||||
## Mises à jour de la flotte
|
||||
|
||||
Chaque PC tire ses mises à jour directement depuis ce repo, tous les jours.
|
||||
|
||||
Pas de `git pull` manuel sur les PC. Juste `git push` ici.
|
||||
|
||||
## Avant la première vague de 100 PC
|
||||
|
||||
Rien de ce repo n'a été testé sur du vrai matériel.
|
||||
|
||||
À vérifier avant de lancer 100 PC :
|
||||
|
||||
Détection du disque, sur une machine à 2 disques internes.
|
||||
|
||||
Comportement du proxyDHCP, face au routeur réel.
|
||||
|
||||
Boot BIOS et boot UEFI, sur le parc réel.
|
||||
|
||||
Test sur 1-2 PC réels d'abord.
|
||||
|
||||
```bash
|
||||
nix flake check
|
||||
nix build .#nixosConfigurations.usagers.config.system.build.toplevel
|
||||
nix build .#nixosConfigurations.installer-iso
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Travailler avec Git
|
||||
|
||||
## Cloner (première fois)
|
||||
|
||||
```bash
|
||||
git clone https://gitea.miniclic.net/Damien/Nixos_Fleet.git
|
||||
cd Nixos_Fleet
|
||||
```
|
||||
|
||||
## Avant de modifier
|
||||
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
Toujours, avant de commencer à éditer.
|
||||
|
||||
## Modifier et envoyer
|
||||
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "description courte"
|
||||
git push
|
||||
```
|
||||
|
||||
## Si le push est refusé
|
||||
|
||||
Quelqu'un a poussé avant toi.
|
||||
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
Résoudre les conflits s'il y en a (voir plus bas).
|
||||
|
||||
Puis repousser :
|
||||
|
||||
```bash
|
||||
git push
|
||||
```
|
||||
|
||||
## Travailler à plusieurs
|
||||
|
||||
Un repo, plusieurs personnes : risque d'écraser le travail des autres.
|
||||
|
||||
Règle : une branche par changement.
|
||||
|
||||
```bash
|
||||
git checkout -b mon-changement
|
||||
```
|
||||
|
||||
Modifier. Commit. Push la branche :
|
||||
|
||||
```bash
|
||||
git push -u origin mon-changement
|
||||
```
|
||||
|
||||
Ouvrir une Pull Request sur Gitea.
|
||||
|
||||
Quelqu'un relit, merge depuis l'interface Gitea.
|
||||
|
||||
Jamais de push direct sur `main` à plusieurs.
|
||||
|
||||
## Si un conflit apparaît
|
||||
|
||||
Git l'annonce avec `CONFLICT` dans le message.
|
||||
|
||||
Ouvrir le(s) fichier(s) listé(s).
|
||||
|
||||
Chercher les marqueurs `<<<<<<<`, `=======`, `>>>>>>>`.
|
||||
|
||||
Choisir quelle version garder.
|
||||
|
||||
Supprimer les marqueurs.
|
||||
|
||||
```bash
|
||||
git add <fichier>
|
||||
git commit
|
||||
git push
|
||||
```
|
||||
|
||||
## Ce workflow git ne concerne que les développeurs
|
||||
|
||||
Les PC de la flotte ne font jamais `git pull`.
|
||||
|
||||
Ils tirent les mises à jour directement depuis l'URL git (voir plus haut).
|
||||
Reference in New Issue
Block a user