feat(scripts): Add a script to easily launch a vm with port forwarding #7

Merged
thubrecht merged 2 commits from launch_vm_script into main 2023-10-27 14:36:48 +02:00
4 changed files with 62 additions and 2 deletions

View file

@ -1,5 +1,6 @@
# Copyright :
# - Tom Hubrecht <tom.hubrecht@dgnum.eu> 2023
# - Maurice Debray <maurice.debray@dgnum.eu> 2023
#
# Ce logiciel est un programme informatique servant à déployer des
# configurations de serveurs via NixOS.
@ -44,6 +45,7 @@
"dgn-secrets"
"dgn-ssh"
"dgn-web"
"dgn-vm-variant"
]) ++ [
"${sources.agenix}/modules/age.nix"
"${sources.attic}/nixos/atticd.nix"

View file

@ -0,0 +1,19 @@
{ config, lib, ... }:
let
inherit (lib)
mkEnableOption
mkIf;
cfg = config.dgn-vmVariant;
in
{
options.dgn-vmVariant.enable = mkEnableOption "ACME settings." // { default = true; };
config = mkIf cfg.enable {
virtualisation.vmVariant = {
services.resolved.dnssec = "false";
};
};
}

View file

@ -6,7 +6,8 @@ let
bash
colmena
coreutils
git;
git
jq;
};
mkShellScript = name: (pkgs.substituteAll ({
@ -22,6 +23,7 @@ let
scripts = [
"ns-update"
"launch-vm"
# "mk-backup-key"
# "wg-setup"
];

37
scripts/launch-vm.sh Executable file
View file

@ -0,0 +1,37 @@
#!@bash@/bin/bash
# shellcheck shell=bash
set -o errexit
set -o nounset
set -o pipefail
MACHINE=""
HOSTFWD=""
while getopts 'p:o:h' opt; do
case "$opt" in
p)
HOSTFWD=",hostfwd=tcp::$OPTARG$HOSTFWD"
;;
o)
MACHINE="$OPTARG"
;;
h|?)
echo "Usage: $(basename "$0") [-p hostport-:guestport] -o MACHINE"
exit 1
;;
esac
done
shift "$((OPTIND -1))"
mdebray marked this conversation as resolved Outdated

Cette ligne plante si on n'a pas jq d'installé, il faut remplacer par @jq@/bin/jq et rajouter jq dans les substitutions de scripts/default.ni

Cette ligne plante si on n'a pas `jq` d'installé, il faut remplacer par `@jq@/bin/jq` et rajouter `jq` dans les substitutions de `scripts/default.ni`
if [ -z "$MACHINE" ]; then echo "-o option needed"; exit 1; fi
DRV_PATH=$(@colmena@/bin/colmena eval --instantiate -E "{nodes, ...}: nodes.$MACHINE.config.system.build.vm")
echo "Realising $DRV_PATH"
RESULT=$(nix-store -r "$DRV_PATH")
mdebray marked this conversation as resolved Outdated

Je sais pas si c'est une bonne idée de modifier la variable PATH, dans le doute je mettrais plutôt RESULT

Je sais pas si c'est une bonne idée de modifier la variable `PATH`, dans le doute je mettrais plutôt `RESULT`

J'ai pas fait gaffe mais oui

J'ai pas fait gaffe mais oui
echo "Built $RESULT, launching VM ..."
"$RESULT/bin/run-$MACHINE-vm" -device e1000,netdev=net0 -netdev "user,id=net0$HOSTFWD"