examples: extract common features for running QEMU VMs
Needed by commit: "examples: add deploy-krops.sh"
This commit is contained in:
parent
cb3d5446c8
commit
ccba86a0f0
3 changed files with 62 additions and 41 deletions
48
examples/qemu-vm/run-vm.sh
Normal file
48
examples/qemu-vm/run-vm.sh
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
qemuDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd)
|
||||
|
||||
tmpDir=/tmp/nix-bitcoin-qemu-vm
|
||||
mkdir -p $tmpDir
|
||||
|
||||
# Cleanup on exit
|
||||
cleanup() {
|
||||
set +eu
|
||||
if [[ $qemuPID ]]; then
|
||||
kill -9 $qemuPID
|
||||
fi
|
||||
rm -rf $tmpDir
|
||||
}
|
||||
trap "cleanup" EXIT
|
||||
|
||||
identityFile=$qemuDir/id-vm
|
||||
chmod 0600 $identityFile
|
||||
|
||||
runVM() {
|
||||
vm=$1
|
||||
vmNumCPUs=$2
|
||||
vmMemoryMiB=$3
|
||||
sshPort=$4
|
||||
|
||||
export NIX_DISK_IMAGE=$tmpDir/img
|
||||
export QEMU_NET_OPTS=hostfwd=tcp::$sshPort-:22
|
||||
</dev/null $vm/bin/run-*-vm -m $vmMemoryMiB -smp $vmNumCPUs &>/dev/null &
|
||||
qemuPID=$!
|
||||
}
|
||||
|
||||
vmWaitForSSH() {
|
||||
echo
|
||||
printf "Waiting for SSH connection..."
|
||||
while ! c : 2>/dev/null; do :; done
|
||||
echo
|
||||
}
|
||||
|
||||
# Run command in VM
|
||||
c() {
|
||||
ssh -p $sshPort -i $identityFile -o ConnectTimeout=1 \
|
||||
-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR \
|
||||
-o ControlMaster=auto -o ControlPath=$tmpDir/ssh-connection -o ControlPersist=60 \
|
||||
root@127.0.0.1 "$@"
|
||||
}
|
||||
export identityFile
|
||||
export sshPort
|
||||
export tmpDir
|
||||
export -f c
|
||||
7
examples/qemu-vm/vm-config.nix
Normal file
7
examples/qemu-vm/vm-config.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
virtualisation.graphics = false;
|
||||
services.mingetty.autologinUser = "root";
|
||||
users.users.root = {
|
||||
openssh.authorizedKeys.keyFiles = [ ./id-vm.pub ];
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue