diff --git a/scripts/create.sh b/scripts/create.sh index d5db7e7..5c3d29c 100644 --- a/scripts/create.sh +++ b/scripts/create.sh @@ -62,6 +62,7 @@ read -p "Is this correct (y/n)? " v;if [ "$v" != "y" ];then "Exiting, restart to if [ -n $subnet ]; then dhcp_opts=" -s $subnet";fi if [ -n $ip ]; then dhcp_opts+=" -i $ip";fi +dhcp_opts+=" -m $mac" lname=`echo $name | tr '[:upper:]' '[:lower:]'` diff --git a/scripts/shared_scripts/get_sever_settings.sh b/scripts/shared_scripts/get_sever_settings.sh new file mode 100644 index 0000000..91dd808 --- /dev/null +++ b/scripts/shared_scripts/get_sever_settings.sh @@ -0,0 +1,61 @@ +#!/bin/bash +cd "$(dirname "$(readlink -f "$0")")" + +#define defaults +cpu=1 +memory=1 +root_disk=10 +variant="archlinux" +path="/virtual/disks/" +dhcp_opts="" +ssh_key_dir="../../identity_files" +dhcp_dir="../../dhcp_files" +mac=52:54:00:`openssl rand -hex 1`:`openssl rand -hex 1`:`openssl rand -hex 1` +branch="prod" +deflate="y" +ansible="y" + +#get variables +numre='^[0-9]+$' +macre='^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$' +ipsegre='^[0-255]$' + +while true; do read -p "Name of new vm/server (caps allowed, not fqdn): " v;if [ -z $v ]; then echo "error: name is required";else name=$v;break;fi;done +while true; do read -p "Number of CPU cores (default $cpu): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $numre ]] ; then echo "error: not a number";else cpu=$v; break;fi;fi;done +while true; do read -p "Ram in GB (default $memory): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $numre ]] ; then echo "error: not a number";else memory=$v; break;fi;fi;done +while true; do read -p "Root disk size in GB (default $root_disk): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $numre ]] ; then echo "error: not a number";else root_disk=$v; break;fi;fi;done +while true; do read -p "Path to store root disk (default $path): " v;if [ -z $v ]; then path="$path/$name.qcow2"; break;else if ! [ -d $v ] ; then echo "error: not a directory";else path="$v/$name.qcow2"; break;fi;fi;done +variant=$(dialog --clear --title "Select Linux variant to use" --menu "Choose one of the following options:" 15 40 4 \ +archlinux "Arch Linux" \ +alma "Alma Linux 9" \ +2>&1 >/dev/tty);clear +while true; do read -p "Mac address (default $mac): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $macre ]] ; then echo "error: invalid mac address";else mac=$v; break;fi;fi;done +#add subnet list +eval "dhcp_sets=(`grep "#" $dhcp_dir/subnets/172.* | grep -o 172.* | sort -t . -k 1,1n -k 2,2n -k 3,3n | sed -e "s/:# /.* \'/" | sed -e "s/$/\'/"`)" +subnet=$(dialog --clear --title "Select subnet to use" --menu "Choose one of the following: " 20 100 10 "${dhcp_sets[@]}" 2>&1 >/dev/tty);subnet=`echo $subnet | grep -oP "172.16.\d+"`;clear; +while true; do read -p "Specify last segment of IP (defaults to next available): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $numre ]] ; then echo "error: not a number";else ip=$v; break;fi;fi;done +while true; do read -p "Specify branch of build_ansible to use (defult $branch): " v;if [ -z $v ]; then break;else branch=$v;break;fi;done +while true; do read -p "Full path to extra disk to attach (if applicable, default none): " v;if [ -z $v ]; then break;else if ! [ -f $v ] ; then echo "error: file doesn't exist";else attach=$v;break;fi;fi;done +while true; do read -p "Autodeflate memory on use y/n (default $deflate)? " v;if [ -z $v ]; then break;elif [ "$v" == "y" ];then break; elif [ "$v" == "n" ];then deflate=$v;break;else echo "error: select y or n";fi;done +while true; do read -p "Autorun ansible build script (default $ansible)? " v;if [ -z $v ]; then break;elif [ "$v" == "y" ];then break; elif [ "$v" == "n" ];then ansible=$v;break;else echo "error: select y or n";fi;done + +path=`echo $path | sed -s 's/\/\//\//'` +attach=`echo $attach | sed -s 's/\/\//\//'` + +echo "" +echo "Name: $name" +echo "CPU: $cpu" +echo "Ram: $memory" +echo "Root Disk: $root_disk" +echo "Path: $path" +echo "Variant: $variant" +echo "Mac: $mac" +echo "Subnet: $subnet" +echo "IP: $ip" +echo "Branch: $branch" +echo "Attach: $attach" +echo "Deflate: $deflate" +echo "Run Ansible: $ansible" +echo "" + +read -p "Is this correct (y/n)? " v;if [ "$v" != "y" ];then "Exiting, restart to reenter info"; exit;fi \ No newline at end of file