diff --git a/bin/pct-create b/bin/pct-create index 51c22a7..ced5e68 100755 --- a/bin/pct-create +++ b/bin/pct-create @@ -53,7 +53,7 @@ function create_container { --memory $mem_in_mb \ --swap $swp_in_mb \ --hostname $CONTAINER_NAME \ - --net0 name=eth0,bridge=vmbr0,ip=dhcp,firewall=1 \ + --net0 name=eth0,bridge=$BRIDGE,ip=dhcp,firewall=1 \ --start \ --onboot true \ $(optional_public_keys) \ diff --git a/bin/pct-default b/bin/pct-default index 4481cb6..2da7cfe 100755 --- a/bin/pct-default +++ b/bin/pct-default @@ -9,31 +9,108 @@ ARG1="${1:-}" # FUNCTIONS function usage { - echo "$(basename "$0") [--edit]" + echo "$(basename "$0") [--edit | --config]" +} + +function parse_options { + COMMAND=show + while [[ $# -gt 0 ]]; do + case "$1" in + --edit) + COMMAND=edit + ;; + --config) + COMMAND=config + ;; + --help | -h) + usage && exit 0 + ;; + *) + echo >&2 "Unknown option: $1" && usage && exit 2 + ;; + esac + + shift 1 # Move to the next argument + done } function show_defaults { + [[ ! -f $DEFAULT_CONFIG ]] && echo >&2 "config file missing: $DEFAUL_CONFIG" && exit 3 + + source "$DEFAULT_CONFIG" echo "STORAGE_DISK=$STORAGE_DISK" echo "STORAGE_SIZE=$STORAGE_SIZE" + echo "BRIDGE=$BRIDGE" echo "MEMORY=$MEMORY" echo "SWAP=$SWAP" echo "CPU=$CPU" } +function compute_cpu_cores { + nproc=$(nproc) + [[ $nproc -ge 16 ]] && cores=4 + [[ $nproc -ge 8 ]] && cores=2 + [[ $nproc -lt 8 ]] && cores=1 + echo $cores +} -# MAIN +function choose_from_selection { + local name=$1[@] + local selection=("${!name}") + local length=${#selection[@]} + [[ $length == 0 ]] && echo >&2 'no values from selection!' && exit 7 + [[ $length == 1 ]] && chosen=${selection[0]} && return -set -Eue -[[ "$ARG1" == '--help' ]] && usage && exit 1 + echo "$2:" + echo ----------------- + + PS3="Choose number: " + select chosen in "${selection[@]}"; do + [[ -n $chosen ]] && break + done < /dev/tty +} + +function choose_default { + echo 'initializing default values...' + storage_size='20G' + memory='2G' + swap='2G' + cpu=$(compute_cpu_cores) -[[ ! -f $DEFAULT_CONFIG ]] && >&2 echo 'configuration file missing!' && exit 2 + mapfile -t storages <<< $(pct-info list-zfs-pools) + choose_from_selection storages "TYPE=ZFSPOOL STORAGE LIST" + storage_disk=$chosen + mapfile -t bridges <<< $(pct-info list-bridges) + choose_from_selection bridges "BRIDGE LIST" + bridge=$chosen -if [[ "$ARG1" == '--edit' ]]; then - editor $DEFAULT_CONFIG -else - source $DEFAULT_CONFIG - show_defaults -fi + cat >$DEFAULT_CONFIG <