2
2
3
3
set -e
4
4
5
+ if [ -f " .env" ]; then
6
+ echo " Loading variables from .env..."
7
+ set -o allexport
8
+ source .env
9
+ set +o allexport
10
+ fi
11
+
5
12
echo " 🔧 AppControl Interactive Installer"
6
13
7
14
# === Detect current namespace ===
8
15
DEFAULT_NAMESPACE=$( oc config view --minify --output ' jsonpath={..namespace}' )
9
- read -rp " 📛 Namespace to install AppControl [${DEFAULT_NAMESPACE:- appcontrol} ]: " NAMESPACE
10
- NAMESPACE=${ NAMESPACE:- ${DEFAULT_NAMESPACE:- appcontrol} }
16
+ read -rp " 📛 Namespace to install AppControl [${NAMESPACE :- ${ DEFAULT_NAMESPACE:- appcontrol}} ]: " input_namespace
17
+ NAMESPACE=" ${input_namespace :- ${ NAMESPACE:- ${DEFAULT_NAMESPACE:- appcontrol} }} "
11
18
12
19
# === Prompt user input ===
13
- read -rp " 🌐 Enter your main domain (e.g., mycompany.com): " MY_APPCONTROL_DOMAIN
14
- read -rp " 🔑 Helm registry username: " HELM_USERNAME
15
- read -rp " 🔑 Helm registry password: " HELM_PASSWORD
20
+ read -rp " 🌐 Enter your main domain (e.g., mycompany.com) [${MY_APPCONTROL_DOMAIN:- } ]: " input_domain
21
+ MY_APPCONTROL_DOMAIN=" ${input_domain:- ${MY_APPCONTROL_DOMAIN:- } } "
22
+
23
+ read -rp " 🔑 Helm registry username [${HELM_USERNAME:- } ]: " input_helm_user
24
+ HELM_USERNAME=" ${input_helm_user:- ${HELM_USERNAME:- } } "
25
+
26
+ read -rp " 🔑 Helm registry password [${HELM_PASSWORD:- } ]: " input_helm_pass
27
+ HELM_PASSWORD=" ${input_helm_pass:- ${HELM_PASSWORD:- } } "
16
28
17
29
echo " 🗃 SQL Server configuration:"
18
- read -rp " - Server: " SQL_SERVER
19
- read -rp " - User: " SQL_USER
20
- read -srp " - Password: " SQL_PASSWORD
30
+ read -rp " - Server [${SQL_SERVER:- } ]: " input_sql_server
31
+ SQL_SERVER=" ${input_sql_server:- ${SQL_SERVER:- } } "
32
+
33
+ read -rp " - User [${SQL_USER:- } ]: " input_sql_user
34
+ SQL_USER=" ${input_sql_user:- ${SQL_USER:- } } "
35
+
36
+ read -srp " - Password (hidden) [hidden if already set]: " input_sql_password
21
37
echo
38
+ SQL_PASSWORD=" ${input_sql_password:- ${SQL_PASSWORD:- } } "
39
+
22
40
SQL_CONNECTION_STRING_SERVICES=" Server=$SQL_SERVER ;Database=xc-x4b-db;User ID=$SQL_USER ;Password=$SQL_PASSWORD ;"
23
41
SQL_CONNECTION_STRING_APPCONTROL=" Server=$SQL_SERVER ;Database=xc-appcontrol-db;User ID=$SQL_USER ;Password=$SQL_PASSWORD ;"
24
42
25
- # Generate default salt
43
+ # Generate default salt if not provided
26
44
DEFAULT_SALT=$( openssl rand -base64 32)
27
- read -rp " 🪙 Token salt [auto-generated]: " TOKEN_SALT
28
- TOKEN_SALT=${TOKEN_SALT:- $DEFAULT_SALT }
45
+ read -rp " 🪙 Token salt [${TOKEN_SALT:- auto-generated} ]: " input_token_salt
46
+ TOKEN_SALT=" ${input_token_salt:- ${TOKEN_SALT:- $DEFAULT_SALT } } "
47
+
48
+ read -rp " 🧠 Redis hostname [${REDIS_HOST:- redis-service} ]: " input_redis_host
49
+ REDIS_HOST=" ${input_redis_host:- ${REDIS_HOST:- redis-service} } "
50
+
51
+ read -rp " 🔢 Redis port [${REDIS_PORT:- 6379} ]: " input_redis_port
52
+ REDIS_PORT=" ${input_redis_port:- ${REDIS_PORT:- 6379} } "
29
53
30
- read -rp " 🧠 Redis hostname [redis-service]: " REDIS_HOST
31
- REDIS_HOST=${REDIS_HOST:- redis-service}
32
- read -rp " 🔢 Redis port [6379]: " REDIS_PORT
33
- REDIS_PORT=${REDIS_PORT:- 6379}
34
54
REDIS_HOSTNAME=" $REDIS_HOST :$REDIS_PORT "
35
- read -srp " 🔐 Redis password (leave empty if none): " REDIS_PASSWORD
36
- read -rp " 📬 RabbitMQ hostname [rabbitmq]: " RABBIT_HOST
37
- RABBIT_HOST=${RABBIT_HOST:- rabbitmq}
38
- read -rp " 📬 RabbitMQ username: " RABBIT_USER
39
- read -rp " 📬 RabbitMQ password: " RABBIT_PASSWORD
40
- read -rp " 📬 RabbitMQ virtual host [/]:" RABBIT_VHOST
41
- RABBIT_VHOST=${RABBIT_VHOST:-/ }
42
55
43
- read -rp " 📦 Helm chart X4B Services version [40.6.0]: " CHART_X4B_SERVICES_VERSION
44
- CHART_X4B_SERVICES_VERSION=${CHART_X4B_SERVICES_VERSION:- 40.6.0}
56
+ read -srp " 🔐 Redis password (leave empty if none) [hidden if already set]: " input_redis_password
57
+ echo
58
+ REDIS_PASSWORD=" ${input_redis_password:- ${REDIS_PASSWORD:- } } "
59
+
60
+ read -rp " 📬 RabbitMQ hostname [${RABBIT_HOST:- rabbitmq} ]: " input_rabbit_host
61
+ RABBIT_HOST=" ${input_rabbit_host:- ${RABBIT_HOST:- rabbitmq} } "
45
62
46
- read -rp " 📦 Helm chart Appcontrol version [90.3.0]: " CHART_APPCONTROL_VERSION
47
- CHART_APPCONTROL_VERSION=${CHART_APPCONTROL_VERSION:- 90.3.0}
63
+ read -rp " 📬 RabbitMQ username [${RABBIT_USER:- } ]: " input_rabbit_user
64
+ RABBIT_USER=" ${input_rabbit_user:- ${RABBIT_USER:- } } "
65
+
66
+ read -rp " 📬 RabbitMQ password [hidden if already set]: " input_rabbit_password
67
+ RABBIT_PASSWORD=" ${input_rabbit_password:- ${RABBIT_PASSWORD:- } } "
68
+
69
+ read -rp " 📬 RabbitMQ virtual host [${RABBIT_VHOST:-/ } ]: " input_rabbit_vhost
70
+ RABBIT_VHOST=" ${input_rabbit_vhost:- ${RABBIT_VHOST:-/ } } "
71
+
72
+ read -rp " 📦 Helm chart X4B Services version [${CHART_X4B_SERVICES_VERSION:- 40.6.0} ]: " input_x4b_version
73
+ CHART_X4B_SERVICES_VERSION=" ${input_x4b_version:- ${CHART_X4B_SERVICES_VERSION:- 40.6.0} } "
74
+
75
+ read -rp " 📦 Helm chart Appcontrol version [${CHART_APPCONTROL_VERSION:- 90.3.0} ]: " input_appcontrol_version
76
+ CHART_APPCONTROL_VERSION=" ${input_appcontrol_version:- ${CHART_APPCONTROL_VERSION:- 90.3.0} } "
48
77
49
78
# === TLS prompt with detection ===
50
79
echo -e " \n🔐 TLS Configuration (Let's Encrypt via cert-manager)"
@@ -54,9 +83,8 @@ ISSUER_EXISTS=$(kubectl get clusterissuer letsencrypt-issuer --no-headers 2>/dev
54
83
read -rp " Do you want to enable TLS with Let's Encrypt? [Y/n]: " ENABLE_TLS
55
84
ENABLE_TLS=${ENABLE_TLS:- Y}
56
85
57
- APPS_EXTERNAL_URL=" https://x4b.$MY_APPCONTROL_DOMAIN /apps"
58
- LOGIN_EXTERNAL_URL=" https://x4b.$MY_APPCONTROL_DOMAIN /login"
59
- AUTH_INTERNAL_URL=" http://x4b-services-authentication-svc:8080"
86
+ EXTERNAL_URL=" https://x4b.$MY_APPCONTROL_DOMAIN /"
87
+
60
88
61
89
if [[ " $ENABLE_TLS " =~ ^[Yy]$ ]]; then
62
90
TLS_ENABLED=true
@@ -71,10 +99,15 @@ if [[ "$ENABLE_TLS" =~ ^[Yy]$ ]]; then
71
99
else
72
100
TLS_ENABLED=false
73
101
SSL_REDIRECT=false
74
- APPS_EXTERNAL_URL=" http://x4b.$MY_APPCONTROL_DOMAIN /apps"
75
- LOGIN_EXTERNAL_URL=" http://x4b.$MY_APPCONTROL_DOMAIN /login"
102
+ EXTERNAL_URL=" http://x4b.$MY_APPCONTROL_DOMAIN /"
76
103
fi
77
104
105
+ APPS_EXTERNAL_URL=" ${EXTERNAL_URL} apps"
106
+ AUTHENTICATION_URL=" ${EXTERNAL_URL} authentication"
107
+ LOGIN_EXTERNAL_URL=" ${EXTERNAL_URL} login"
108
+ AUTH_INTERNAL_URL=" http://x4b-services-authentication-svc:8080"
109
+ REDIRECT_REGISTRATION_URL=" ${LOGIN_EXTERNAL_URL} /registration"
110
+
78
111
MY_SECRET_NAME=" jwt-keys"
79
112
CONFIGMAP_NAME=" appcontrol-config"
80
113
REPO=" oci://x4bcontainerregistry.azurecr.io/helm"
@@ -122,12 +155,25 @@ mkdir -p generated
122
155
123
156
# === Generate x4b-services-values.yaml ===
124
157
cat << EOF > generated/x4b-services-values.yaml
125
- externalHostname: x4b.$MY_APPCONTROL_DOMAIN
126
- jwtSecretName: $MY_SECRET_NAME
158
+ externalHostname: "x4b.${MY_APPCONTROL_DOMAIN} "
159
+ x4bSpecificDnszone: "x4b.${MY_APPCONTROL_DOMAIN} "
160
+ jwtSecretName: "${MY_SECRET_NAME} "
161
+ pullSecretName: ""
162
+ devSubDomain: ""
163
+ settings:
164
+ appsServiceUrl: "${APPS_EXTERNAL_URL} "
165
+ authenticationUrl: "${AUTHENTICATION_URL} "
127
166
sql:
128
- connectionString: "$SQL_CONNECTION_STRING_SERVICES "
167
+ connectionString: "${ SQL_CONNECTION_STRING_SERVICES} "
129
168
apps:
130
- appsConfigMapName: "$CONFIGMAP_NAME "
169
+ appsConfigMapName: "${CONFIGMAP_NAME} "
170
+ serverRemoteUrl: "${EXTERNAL_URL} "
171
+ authentication:
172
+ OtlpCollectorAddr: ''
173
+ serverRemoteUrl: "${EXTERNAL_URL} "
174
+ redirectRegistrationUrl: "${REDIRECT_REGISTRATION_URL} "
175
+ loginPageUrl: "${LOGIN_EXTERNAL_URL} "
176
+ secretName: $MY_SECRET_NAME
131
177
EOF
132
178
133
179
# === Generate appcontrol-values.yaml ===
@@ -160,17 +206,29 @@ rabbitmq:
160
206
virtualHost: "$RABBIT_VHOST "
161
207
EOF
162
208
209
+ uninstall_if_exists () {
210
+ local release=$1
211
+ if helm status " $release " -n " $NAMESPACE " & > /dev/null; then
212
+ echo " ⛔ Uninstalling existing release: $release "
213
+ helm uninstall " $release " -n " $NAMESPACE "
214
+ fi
215
+ }
216
+
217
+ echo " 🔍 Checking for existing releases..."
218
+ uninstall_if_exists " appcontrol-services"
219
+ uninstall_if_exists " appcontrol"
220
+
163
221
# === Deploy Helm charts ===
164
222
echo " 🚀 Installing x4b-services..."
165
223
helm install appcontrol-services " $REPO /x4b-services" \
166
224
--namespace " $NAMESPACE " \
167
225
--version " $CHART_X4B_SERVICES_VERSION " \
168
- -f generated/x4b-services-values.yaml
226
+ -f generated/x4b-services-values.yaml
169
227
170
228
echo " 🚀 Installing AppControl..."
171
229
helm install appcontrol " $REPO /appcontrol" \
172
230
--namespace " $NAMESPACE " \
173
231
--version " $CHART_APPCONTROL_VERSION " \
174
- -f generated/appcontrol-values.yaml
232
+ -f generated/appcontrol-values.yaml
175
233
176
234
echo " ✅ AppControl platform successfully deployed!"
0 commit comments