ProxMenux/scripts/test/vm/create_vm.sh
2025-04-27 23:24:05 +02:00

115 lines
3.1 KiB
Bash

#!/usr/bin/env bash
# ================================================
# ProxMenux - Create VM Entry Point
# ================================================
# Author : MacRimi
# ================================================
BASE_DIR="/usr/local/share/proxmenux"
UTILS_FILE="$BASE_DIR/utils.sh"
VENV_PATH="/opt/googletrans-env"
VM_CONFIG="./vm_configurator.sh"
DISK_SELECTOR="./disk_selector.sh"
VM_CREATOR="./vm_creator.sh"
#LINUX_ISO="./select_linux_iso.sh"
GUEST_AGENT="./guest_agent_config.sh"
if [[ -f "$UTILS_FILE" ]]; then
source "$UTILS_FILE"
fi
load_language
initialize_cache
# Load modules
[[ -f "$UTILS_FILE" ]] && source "$UTILS_FILE"
[[ -f "$VM_CONFIG" ]] && source "$VM_CONFIG"
[[ -f "$DISK_SELECTOR" ]] && source "$DISK_SELECTOR"
[[ -f "$VM_CREATOR" ]] && source "$VM_CREATOR"
[[ -f "$LINUX_ISO" ]] && source "$LINUX_ISO"
[[ -f "$GUEST_AGENT" ]] && source "$GUEST_AGENT"
function header_info() {
clear
show_proxmenux_logo
echo -e "${BL}╔═══════════════════════════════════════════════╗${CL}"
echo -e "${BL}║ ║${CL}"
echo -e "${BL}${YWB} ProxMenux VM Creator ${BL}${CL}"
echo -e "${BL}║ ║${CL}"
echo -e "${BL}╚═══════════════════════════════════════════════╝${CL}"
echo -e
}
# ==========================================================
# MAIN EXECUTION
# ==========================================================
header_info
echo -e "\n Loading..."
sleep 1
# Step 1 - Select OS Type
OS_TYPE=$(whiptail --title "ProxMenux" --menu "$(translate "Select the type of system to install")" 15 60 4 \
"nas" "$(translate "Create VM System NAS")" \
"windows" "$(translate "Create VM System Windows")" \
"linux" "$(translate "Create VM System Linux")" \
"lite" "$(translate "Create VM System Others (based Linux)")" 3>&1 1>&2 2>&3)
[[ -z "$OS_TYPE" ]] && clear && exit
if [[ "$OS_TYPE" == "nas" ]]; then
header_info
source ./select_nas_iso.sh
select_nas_iso || exit 1
fi
# Si es Windows, invocar selección de ISO
if [[ "$OS_TYPE" == "windows" ]]; then
header_info
source ./select_windows_iso.sh
select_windows_iso || exit 1
fi
# Si es Linux, invocar selección de ISO
if [[ "$OS_TYPE" == "linux" ]]; then
header_info
source ./select_linux_iso.sh
select_linux_iso || exit 1
fi
# Step 2 - Default or Advanced config
if (whiptail --title "ProxMenux" --yesno "$(translate "Use Default Settings?")" --no-button "$(translate "Advanced")" 10 60); then
header_info
load_default_vm_config "$OS_TYPE"
apply_default_vm_config
else
header_info
echo -e "${CUS}$(translate "Using advanced configuration")${CL}"
configure_vm_advanced "$OS_TYPE"
fi
# Step 3 - Disk selection
select_disk_type
if [[ -z "$DISK_TYPE" ]]; then
msg_error "$(translate "Disk type selection failed or cancelled")"
exit 1
fi
# Step 4 - Create VM
create_vm
# Step 5 - Guest Agent integration
configure_guest_agent