feat: vm setup
This commit is contained in:
53
nixos/proxmox/setup-vm.sh
Executable file
53
nixos/proxmox/setup-vm.sh
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
|
||||
tmp_dir=$(mktemp -d)
|
||||
|
||||
function cleanup() {
|
||||
trap - SIGINT SIGTERM ERR EXIT
|
||||
|
||||
echo "Cleaning Up"
|
||||
|
||||
rm -rf "${tmp_dir}"
|
||||
}
|
||||
trap cleanup SIGINT SIGTERM ERR EXIT
|
||||
|
||||
function main() {
|
||||
if [ ! -e "./flake.nix" ]; then
|
||||
echo "Run this from within the homelab directory"
|
||||
fi
|
||||
|
||||
# Get Machine Name:
|
||||
MACHINE_NAME=$(gum input --prompt="Machine Name: >")
|
||||
MACHINE_IP=$(gum input --prompt="Machne IP: >")
|
||||
|
||||
echo "Connecting to ${MACHINE_IP} and setting up as ${MACHINE_NAME}"
|
||||
#
|
||||
# Check if its ISO (check hostname == nixos)
|
||||
# Generate Host Public / Private Key Pair
|
||||
install -d -m755 "${tmp_dir}/etc/ssh"
|
||||
KEY_PATH="${tmp_dir}/etc/ssh/ssh_host_ed25519_key"
|
||||
ssh-keygen -t ed25519 -C "yadunut@${MACHINE_NAME}" -f "${KEY_PATH}" -N ""
|
||||
|
||||
|
||||
echo "Created SSH Keys: $(cat "${KEY_PATH}".pub)"
|
||||
|
||||
chmod 600 "${KEY_PATH}"
|
||||
|
||||
# Append public key to the secrets file and rekey agenix
|
||||
pushd "./nixos/secrets"
|
||||
LINE=" ${MACHINE_NAME} = \"$(cat "${KEY_PATH}".pub)\";"
|
||||
echo "appending to file ${PWD}./keys.nix"
|
||||
sed -i -e "\$i${LINE}" "./keys.nix"
|
||||
agenix --rekey
|
||||
popd
|
||||
echo "${tmp_dir}"
|
||||
echo "Run the command: nix run github:nix-community/nixos-anywhere -- --flake ".#${MACHINE_NAME}" --extra-files "${tmp_dir}" --print-build-logs root@${MACHINE_IP}"
|
||||
read -n 1
|
||||
# Deploy the systems!
|
||||
# nix run github:nix-community/nixos-anywhere -- --flake ".#${MACHINE_NAME}" --extra-files "${tmp_dir}" --print-build-logs yadunut@${MACHINE_IP}
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user