new script / wrapper around virt-install
This commit is contained in:
parent
1dfc10b5c9
commit
3fafb78838
26
deploy-vm.sh
Executable file
26
deploy-vm.sh
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to execute a script
|
||||
execute_script() {
|
||||
local script_to_execute="$1"
|
||||
echo "Executing: $script_to_execute"
|
||||
"$script_to_execute" || {
|
||||
echo "Script failed: $script_to_execute"
|
||||
return 1 # Indicate failure
|
||||
}
|
||||
return 0 # Indicate success
|
||||
}
|
||||
|
||||
# Array of scripts
|
||||
scripts=(
|
||||
"./scripts/core-count.sh"
|
||||
"./scripts/system-memory.sh"
|
||||
"./scripts/deploy-distro.sh"
|
||||
)
|
||||
|
||||
# Iterate through the scripts and execute them
|
||||
for script in "${scripts[@]}"; do
|
||||
execute_script "$script"
|
||||
done
|
||||
|
||||
echo "All scripts executed."
|
13
scripts/core-count.sh
Executable file
13
scripts/core-count.sh
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Get the core count using nproc --all
|
||||
core_count=$(nproc --all)
|
||||
|
||||
# Check if nproc --all returns a numerical value greater than 2
|
||||
if (( core_count > 1 )); then
|
||||
echo "System has more than 1 core (nproc --all: $core_count)."
|
||||
else
|
||||
echo "Warning: System has only $core_count core)."
|
||||
echo "The script requires at least two cores"
|
||||
exit 1 # Exit with an error code to indicate the condition is not met
|
||||
fi
|
60
scripts/deploy-distro.sh
Executable file
60
scripts/deploy-distro.sh
Executable file
@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Get a list of files in the directory dishes without extensions
|
||||
mapfile -t dish_name < <(find "dishes/" -maxdepth 1 -type f -printf "%f\n" | sed 's/\.[^.]*$//')
|
||||
|
||||
# Check if there are any files
|
||||
if [ ${#dish_name[@]} -eq 0 ]; then
|
||||
echo "No files found in the directory ../dishes."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Display the files with numbered options
|
||||
echo "Available files:"
|
||||
for i in "${!dish_name[@]}"; do
|
||||
echo "$((i + 1)). ${dish_name[$i]}"
|
||||
done
|
||||
|
||||
# Prompt the user to select a file
|
||||
read -r -p "Enter the number of the file you want to select: " choice
|
||||
|
||||
# Validate the user's choice
|
||||
if ! [[ "$choice" =~ ^[0-9]+$ ]] || (( choice < 1 )) || (( choice > ${#dish_name[@]} )); then
|
||||
echo "Invalid choice. Please enter a number from 1 to ${#dish_name[@]}."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the selected filename
|
||||
vm_name="${dish_name[$((choice - 1))]}"
|
||||
|
||||
# Output the selected filename
|
||||
echo "You selected: $vm_name"
|
||||
|
||||
# virt-install command with user-defined VM name
|
||||
virt-install \
|
||||
--connect qemu:///system \
|
||||
--os-variant fedora41 \
|
||||
--virt-type kvm \
|
||||
--arch x86_64 \
|
||||
--machine q35 \
|
||||
--name "$vm_name" \
|
||||
--boot uefi \
|
||||
--cpu host-model,topology.sockets=1,topology.cores=2,topology.threads=1 \
|
||||
--vcpus 2 \
|
||||
--memory 2048 \
|
||||
--video virtio \
|
||||
--autoconsole none \
|
||||
--console pty,target.type=virtio \
|
||||
--sound none \
|
||||
--network type=user,model=virtio \
|
||||
--controller type=virtio-serial \
|
||||
--controller type=usb,model=none \
|
||||
--controller type=scsi,model=virtio-scsi \
|
||||
--input type=keyboard,bus=virtio \
|
||||
--input type=tablet,bus=virtio \
|
||||
--rng /dev/urandom,model=virtio \
|
||||
--disk path=/var/lib/libvirt/images/"$vm_name".img,format=raw,bus=virtio,cache=writeback,size=10 \
|
||||
--location=https://download.fedoraproject.org/pub/fedora/linux/releases/42/Everything/x86_64/os/ \
|
||||
--initrd-inject "dishes/$vm_name".cfg --extra-args "inst.ks=file:dishes/$vm_name.cfg"
|
||||
|
||||
echo "virt-install command executed with VM name: $vm_name"
|
14
scripts/system-memory.sh
Executable file
14
scripts/system-memory.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Read the total memory from /proc/meminfo in MiB
|
||||
total_memory=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
|
||||
|
||||
# Convert to MiB by dividing by 1024 (since MemTotal is in KiB)
|
||||
total_memory_mb=$(( total_memory / 1024 ))
|
||||
|
||||
if [[ "$total_memory_mb" -lt "2048" ]]; then
|
||||
echo "Not enough RAM: The system has only ${total_memory_mb}MiB of RAM, but at least 2048 MiB is required."
|
||||
exit 1
|
||||
else
|
||||
echo "Sufficient memory available. System has ${total_memory_mb}MiB of RAM."
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user