mirror of https://gitlab.crans.org/nounous/nixos
Merge branch 'iso' into 'main'
Iso custom crans See merge request nounous/nixos!17merge-requests/17/merge
commit
8469fe1bbc
|
@ -89,6 +89,14 @@
|
||||||
specialArgs = inputs;
|
specialArgs = inputs;
|
||||||
modules = [ ./hosts/vm/vaultwarden ] ++ baseModules;
|
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,103 @@
|
||||||
|
{ 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
|
||||||
|
ip link set ens$INTERFACE10 up
|
||||||
|
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 link set ens$INTERFACE10 up
|
||||||
|
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}1
|
||||||
|
mount /dev/$${DISK}1 /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";
|
||||||
|
initialHashedPassword = lib.mkForce null;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue