setup wizard
This commit is contained in:
@@ -4,10 +4,22 @@ set -e
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
log_info() {
|
||||
echo -e "${YELLOW}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Input Framework
|
||||
# -----------------------------------------------------------------------------
|
||||
@@ -30,7 +42,7 @@ get_input() {
|
||||
local prompt_full="${GREEN}${prompt_text}${NC}"
|
||||
|
||||
if [ -n "$default_value" ]; then
|
||||
prompt_full+=" ${YELLOW}[$default_value]${NC}"
|
||||
prompt_full+=" [$default_value]"
|
||||
fi
|
||||
prompt_full+=": "
|
||||
|
||||
@@ -60,6 +72,7 @@ get_input() {
|
||||
|
||||
# Set the variable dynamically in the parent scope
|
||||
printf -v "$var_name" "%s" "$input_val"
|
||||
export "$var_name=$input_val"
|
||||
}
|
||||
|
||||
# Function to confirm collected inputs
|
||||
@@ -84,6 +97,17 @@ confirm_inputs() {
|
||||
fi
|
||||
}
|
||||
|
||||
install_unit() {
|
||||
local template_url=$1
|
||||
local filename=$(basename "$template_url")
|
||||
local dest_path=/etc/systemd/system/"$filename"
|
||||
|
||||
log_info "Installing $filename..."
|
||||
|
||||
curl -sL $template_url | envsubst > "$dest_path"
|
||||
log_success "$filename installed to $dest_path"
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Script Logic
|
||||
# -----------------------------------------------------------------------------
|
||||
@@ -94,10 +118,28 @@ echo "-----------------------------"
|
||||
# 1. Collect Inputs
|
||||
# Example:
|
||||
get_input "HOST_NAME" "Enter Hostname" "$(hostname)" "false"
|
||||
# get_input "ADMIN_PASS" "Enter Admin Password" "" "true"
|
||||
get_input "CERT_DIR" "Enter directory for certificates" "${HOME}/.step/certs" "false"
|
||||
get_input "CERT_LOCATION" "Enter specific path for cert" "${CERT_DIR}/${HOSTNAME}.crt" "false"
|
||||
get_input "KEY_LOCATION" "Enter specific path for private key" "${CERT_DIR}/${HOSTNAME}.key" "false"
|
||||
|
||||
export CERT_LOCATION=$(readlink -f $CERT_LOCATION)
|
||||
export KEY_LOCATION=$(readlink -f $KEY_LOCATION)
|
||||
|
||||
# 2. Confirm
|
||||
# confirm_inputs "HOST_NAME" "ADMIN_PASS"
|
||||
confirm_inputs "CERT_LOCATION" "KEY_LOCATION"
|
||||
|
||||
# 3. Configure
|
||||
REPO_URL_BASE=https://gitea.john-stream.com/john/soteria/raw/branch/main/
|
||||
SERVICE_TEMPLATE_URL="${REPO_URL_BASE}systemd/cert-renewer.service"
|
||||
TIMER_TEMPLATE_URL="${REPO_URL_BASE}systemd/cert-renewer.timer"
|
||||
|
||||
# 3. Execute
|
||||
# echo "Configuring $HOST_NAME..."
|
||||
install_unit ${SERVICE_TEMPLATE_URL}
|
||||
install_unit ${TIMER_TEMPLATE_URL}
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now "$(basename "${TIMER_TEMPLATE_URL}")"
|
||||
|
||||
systemctl status "$(basename "${SERVICE_TEMPLATE_URL}")" --no-pager
|
||||
systemctl status "$(basename "${TIMER_TEMPLATE_URL}")" --no-pager
|
||||
|
||||
Reference in New Issue
Block a user