mirror of https://gitlab.crans.org/nounous/nixos
Ajout iso custom
parent
89ae1f5475
commit
43642f94d6
|
@ -79,6 +79,14 @@
|
|||
specialArgs = inputs;
|
||||
modules = [ ./hosts/vm/vaultwarden ] ++ baseModules;
|
||||
};
|
||||
cransIso = nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = inputs;
|
||||
modules = [
|
||||
./hosts/iso
|
||||
./modules/crans/locale.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
# Iso
|
||||
|
||||
La configuration présente dans le dossier iso contient une configuration custom
|
||||
ayant pour but de simplifier l'installation des VM au CR@NS.
|
||||
|
||||
## Création de l'iso
|
||||
|
||||
Pour configurer l'iso, il suffit d'éditer les fichiers de configuration.
|
||||
|
||||
Pour générer l'iso, il suffit d'éxécuter la commande suivante :
|
||||
|
||||
```bash
|
||||
nix build .#nixosConfigurations.cransIso.config.system.build.isoImage
|
||||
```
|
||||
|
||||
Une fois générer, l'iso se trouve dans le dossier `result/iso`. il est alors
|
||||
possible de le renommer puis de le rendre accessible sur les hyperviseurs avec
|
||||
au choix :
|
||||
|
||||
- envoyer le fichier depuis l'interface graphique de proxmox
|
||||
- en l'envoyant avec la commande
|
||||
`scp result/iso/<nom>.iso sam.adm.crans.org:/var/lib/vz/template/iso/`
|
||||
|
||||
Remarque : quelque soit la solution choisie, pensez à procéder de la même façon
|
||||
pour tout les hyperviseurs.
|
||||
|
||||
il est également possible de vérifier si l'iso est opérationnel à en procédant
|
||||
ainsi :
|
||||
|
||||
```bash
|
||||
nix-shell -p qemu
|
||||
qemu-system-x86_64 -enable-kvm -m 256 -cdrom result/iso/<nom>.iso
|
||||
```
|
||||
|
||||
## Installation d'une VM
|
||||
|
||||
Pour l'installation d'une VM, il faut commencer par booter sur l'iso custom.
|
||||
Une fois cela effectuer, la configuration réseau doit être effectuer.
|
||||
|
||||
Un script permettant de simplifier celle ci est disponible à l'aide de la
|
||||
commande `crans-ip-config`. Il vous est alors demandé un id qui correspond au
|
||||
numéro de la VM.
|
||||
|
||||
Pour simplifier le partitionnement du disque, vous pouvez éxécuter la commande
|
||||
`crans-disk-config`. Il vous sera alors demander le disque à considérer.
|
||||
|
||||
ATTENTION /!\ : la configuration automatique des disques ne permet de faire
|
||||
uniquement la configuration la plus basique (une seule parition en ext4).
|
||||
Pour des configurations plus complexe, veuillez voir des
|
||||
[documentations](../README.md) plus détailler et ne pas utiliser le script.
|
||||
|
||||
Récapitulatif des commandes :
|
||||
|
||||
```bash
|
||||
$ sudo su
|
||||
$ crans-ip-config
|
||||
id : 42 # a priori, l'id est supérieur à 100
|
||||
vlan 10, interface enxXX : 18
|
||||
souhaitez-vous configurer le vlan 3 ? (o/n)O
|
||||
vlan 3, interface ensXX : 19
|
||||
|
||||
$ crans-disk-config
|
||||
<la liste des disques apparaît>
|
||||
disque : sda
|
||||
Veuillez déplacer le fichier /mnt/etc/nixos/hardware-configuration.nix à
|
||||
l'emplacement de la vm en cours d'installation.
|
||||
Pensez également à vous mettre sur la branche appropriée
|
||||
```
|
||||
|
||||
À ce niveau là, la connexion ssh sur le nouveau serveur est possible avec le
|
||||
mot de passe `crans`.
|
|
@ -0,0 +1,99 @@
|
|||
{ pkgs, lib, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix")
|
||||
];
|
||||
|
||||
networking = {
|
||||
hostName = "crans-iso";
|
||||
dhcpcd.enable = false;
|
||||
nameservers = [ "172.16.10.128" ];
|
||||
};
|
||||
|
||||
nix = {
|
||||
settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
extraOptions = "experimental-features = nix-command flakes";
|
||||
};
|
||||
|
||||
boot = {
|
||||
kernelParams = [ "console=ttyS0,115200" ];
|
||||
kernelPackages = pkgs.linuxPackages_latest;
|
||||
supportedFilesystems = lib.mkForce [ "btrfs" "vfat" "zfs"];
|
||||
};
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Enable some utility programs.
|
||||
programs.git.enable = true;
|
||||
programs.htop.enable = true;
|
||||
programs.neovim.enable = true;
|
||||
programs.screen.enable = true;
|
||||
programs.tmux.enable = true;
|
||||
programs.vim.enable = true;
|
||||
|
||||
environment.systemPackages =
|
||||
let crans-ip-config =
|
||||
(
|
||||
pkgs.writeShellScriptBin "crans-ip-config"
|
||||
''
|
||||
#!/usr/bin/env bash
|
||||
echo -n "ID : "
|
||||
read ID
|
||||
ip -c l
|
||||
echo -n "vlan 10, interface ensXX : "
|
||||
read INTERFACE10
|
||||
ip addr add 172.16.10.$ID/24 dev ens$INTERFACE10
|
||||
echo -n "souhaitez-vous configurer le vlan 3 ? (o/N)"
|
||||
read REP
|
||||
if [[ "$REP" == [oOyY] ]]; then
|
||||
echo -n "vlan 3, interface ensXX : "
|
||||
read INTERFACE3
|
||||
ip addr add 172.16.3.$ID/24 dev ens$INTERFACE3
|
||||
ip route add default via 172.16.3.99
|
||||
else
|
||||
ip route add default via 172.16.10.101
|
||||
fi
|
||||
''
|
||||
);
|
||||
crans-disk-config =
|
||||
(
|
||||
pkgs.writeShellScriptBin "crans-disk-config"
|
||||
''
|
||||
#!/usr/bin/env bash
|
||||
lsblk
|
||||
echo -n "disque /dev/XXX : "
|
||||
read DISK
|
||||
parted /dev/$DISK -- mklabel msdos
|
||||
parted /dev/$DISK -- mkpart primary 1MB 100%
|
||||
parted /dev/$DISK -- set 1 boot on
|
||||
mkfs.ext4 -L nixos /dev/$DISK
|
||||
mount /dev/$DISK /mnt
|
||||
nixos-generate-config --root /mnt
|
||||
cp /mnt/etc/nixos/hardware-configuration.nix /root/
|
||||
rm -rf /mnt/etc/nixos
|
||||
git clone https://gitlab.adm.crans.org/nounous/nixos.git /mnt/etc/nixos
|
||||
cp /root/hardware-configuration.nix /mnt/etc/nixos/
|
||||
rm /root/hardware-configuration.nix
|
||||
echo "Veuillez déplacer le fichier /mnt/etc/nixos/hardware-configuration.nix à l'emplacement de la vm en cours d'installation."
|
||||
echo "Pensez également à vous mettre sur la branche appropriée"
|
||||
''
|
||||
);
|
||||
in with pkgs; [
|
||||
bat
|
||||
fd
|
||||
helix
|
||||
nfs-utils
|
||||
ripgrep
|
||||
shelldap
|
||||
crans-ip-config
|
||||
crans-disk-config
|
||||
];
|
||||
|
||||
users.users.root.password = "crans";
|
||||
|
||||
}
|
Loading…
Reference in New Issue