You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by om...@apache.org on 2019/09/25 12:19:19 UTC

[incubator-dlab] branch DLAB-1028 created (now 15beb0a)

This is an automated email from the ASF dual-hosted git repository.

omartushevskyi pushed a change to branch DLAB-1028
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git.


      at 15beb0a  added guacamole chart

This branch includes the following new commits:

     new 15beb0a  added guacamole chart

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org


[incubator-dlab] 01/01: added guacamole chart

Posted by om...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

omartushevskyi pushed a commit to branch DLAB-1028
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 15beb0a5923a16c3b868d95a7c0cccd68d37529d
Author: Oleh Martushevskyi <Ol...@epam.com>
AuthorDate: Wed Sep 25 15:19:09 2019 +0300

    added guacamole chart
---
 .../dlab-ui-chart/templates/configmap-ui-conf.yaml |  2 +-
 .../main/guacamole-chart/.helmignore               | 43 ++++++++++++
 .../main/guacamole-chart/Chart.yaml                | 26 +++++++
 .../main/guacamole-chart/templates/NOTES.txt       | 42 +++++++++++
 .../main/guacamole-chart/templates/_helpers.tpl    | 65 +++++++++++++++++
 .../main/guacamole-chart/templates/deployment.yaml | 82 ++++++++++++++++++++++
 .../main/guacamole-chart/templates/service.yaml    | 39 ++++++++++
 .../main/guacamole-chart/values.yaml               | 43 ++++++++++++
 .../aws/ssn-helm-charts/main/guacamole.tf          | 39 ++++++++++
 .../terraform/aws/ssn-helm-charts/main/mysql.tf    | 79 +++++++++++++++++----
 .../terraform/aws/ssn-helm-charts/main/secrets.tf  | 23 ++++--
 .../aws/ssn-helm-charts/main/variables.tf          | 12 +++-
 12 files changed, 475 insertions(+), 20 deletions(-)

diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/dlab-ui-chart/templates/configmap-ui-conf.yaml b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/dlab-ui-chart/templates/configmap-ui-conf.yaml
index efa6f2a..dbf27c0 100644
--- a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/dlab-ui-chart/templates/configmap-ui-conf.yaml
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/dlab-ui-chart/templates/configmap-ui-conf.yaml
@@ -219,7 +219,7 @@ data:
 
     guacamole:
       connectionProtocol: ssh
-      serverHost: localhost
+      serverHost: guacamole
       serverPort: 4822
       port: 22
       username: dlab-user
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/.helmignore b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/.helmignore
new file mode 100644
index 0000000..4976779
--- /dev/null
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/.helmignore
@@ -0,0 +1,43 @@
+# *****************************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# ******************************************************************************
+
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/Chart.yaml b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/Chart.yaml
new file mode 100644
index 0000000..147a90a
--- /dev/null
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/Chart.yaml
@@ -0,0 +1,26 @@
+# *****************************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# ******************************************************************************
+
+apiVersion: v1
+appVersion: "1.0"
+description: A Helm chart for Guacamole
+name: guacamole-dlab
+version: 0.1.0
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/NOTES.txt b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/NOTES.txt
new file mode 100644
index 0000000..29995ec
--- /dev/null
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/NOTES.txt
@@ -0,0 +1,42 @@
+# *****************************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# ******************************************************************************
+
+1. Get the application URL by running these commands:
+{{- if .Values.ui.ingress.enabled }}
+{{- range $host := .Values.ui.ingress.hosts }}
+  {{- range .paths }}
+  http{{ if $.Values.ui.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }}
+  {{- end }}
+{{- end }}
+{{- else if contains "NodePort" .Values.ui.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "guacamole.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.ui.service.type }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "guacamole.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "guacamole.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.ui.service.http_port }}
+{{- else if contains "ClusterIP" .Values.ui.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "guacamole.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:80
+{{- end }}
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/_helpers.tpl b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/_helpers.tpl
new file mode 100644
index 0000000..d8667c1
--- /dev/null
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/_helpers.tpl
@@ -0,0 +1,65 @@
+# *****************************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# ******************************************************************************
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "guacamole.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "guacamole.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "guacamole.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Common labels
+*/}}
+{{- define "guacamole.labels" -}}
+app.kubernetes.io/name: {{ include "guacamole.name" . }}
+helm.sh/chart: {{ include "guacamole.chart" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/deployment.yaml b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/deployment.yaml
new file mode 100644
index 0000000..2c38b70
--- /dev/null
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/deployment.yaml
@@ -0,0 +1,82 @@
+{{- /*
+# *****************************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# ******************************************************************************
+*/ -}}
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ include "guacamole.fullname" . }}
+  labels:
+{{ include "guacamole.labels" . | indent 4 }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      app.kubernetes.io/name: {{ include "guacamole.name" . }}
+      app.kubernetes.io/instance: {{ .Release.Name }}
+  template:
+    metadata:
+      labels:
+        app.kubernetes.io/name: {{ include "guacamole.name" . }}
+        app.kubernetes.io/instance: {{ .Release.Name }}
+    spec:
+      containers:
+        - name: "{{ .Chart.Name }}-guacd"
+          image: "{{ .Values.guacd.image.repository }}:{{ .Values.guacd.image.tag }}"
+          imagePullPolicy: {{ .Values.guacd.image.pullPolicy }}
+          ports:
+            - name: tcp
+              containerPort: 4822
+              protocol: TCP
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+        - name: {{ .Chart.Name }}
+            image: "{{ .Values.guacamole.image.repository }}:{{ .Values.guacamole.image.tag }}"
+            imagePullPolicy: {{ .Values.guacamole.image.pullPolicy }}
+            env:
+              - name: MYSQL_PASSWORD
+                valueFrom:
+                  secretKeyRef:
+                    name: mysql-guacamole-user-password
+                    key: password
+              - name: MYSQL_DATABASE
+                value: {{ .Values.guacamole.mysql.database }}
+              - name: MYSQL_USER
+                value: {{ .Values.guacamole.mysql.user }}
+            ports:
+              - name: tcp
+                containerPort: 8080
+                protocol: TCP
+            resources:
+              {{- toYaml .Values.resources | nindent 12 }}
+      {{- with .Values.nodeSelector }}
+      nodeSelector:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+    {{- with .Values.affinity }}
+      affinity:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
+    {{- with .Values.tolerations }}
+      tolerations:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/service.yaml b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/service.yaml
new file mode 100644
index 0000000..ead7df5
--- /dev/null
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/templates/service.yaml
@@ -0,0 +1,39 @@
+{{- /*
+# *****************************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# ******************************************************************************
+*/ -}}
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "guacamole.fullname" . }}
+  labels:
+{{ include "guacamole.labels" . | indent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    - port: {{ .Values.service.port }}
+      targetPort: {{ .Values.service.port }}
+      protocol: TCP
+      name: tcp
+  selector:
+    app.kubernetes.io/name: {{ include "guacamole.name" . }}
+    app.kubernetes.io/instance: {{ .Release.Name }}
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/values.yaml b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/values.yaml
new file mode 100644
index 0000000..f8fd2f7
--- /dev/null
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole-chart/values.yaml
@@ -0,0 +1,43 @@
+# *****************************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# ******************************************************************************
+
+# Default values for dlab-ui.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+service:
+  type: ClusterIp
+  port: 4822
+
+guacd:
+  image:
+    repository: guacamole/guacd
+    tag: latest
+    pullPolicy: Always
+
+guacamole:
+  image:
+    repository: guacamole/guacamole
+    tag: latest
+    pullPolicy: Always
+  mysql:
+    database: ${mysql_database}
+    user: ${mysql_user}
\ No newline at end of file
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole.tf b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole.tf
new file mode 100644
index 0000000..c5f70a0
--- /dev/null
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/guacamole.tf
@@ -0,0 +1,39 @@
+# *****************************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# ******************************************************************************
+
+data "template_file" "guacamole-values" {
+  template = file("./guacamole-chart/values.yaml")
+  vars = {
+      mysql_database = var.mysql_guacamole_db_name
+      mysql_user     = var.mysql_guacamole_user
+  }
+}
+
+resource "helm_release" "guacamole" {
+    name       = "guacamole"
+    chart      = "./guacamole-chart"
+    depends_on = [helm_release.guacamole-mysql, kubernetes_secret.mysql_guacamole_user_password_secret]
+    wait       = true
+
+    values     = [
+        data.template_file.guacamole-values.rendered
+    ]
+}
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/mysql.tf b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/mysql.tf
index 98cb238..82d95c3 100644
--- a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/mysql.tf
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/mysql.tf
@@ -19,14 +19,14 @@
 #
 # ******************************************************************************
 
-data "template_file" "mysql_values" {
+data "template_file" "keycloak-mysql-values" {
   template = file("./files/mysql_values.yaml")
   vars = {
     mysql_root_password = random_string.mysql_root_password.result
-    mysql_user          = var.mysql_user
-    mysql_user_password = random_string.mysql_user_password.result
-    mysql_db_name       = var.mysql_db_name
-    mysql_volume_claim  = kubernetes_persistent_volume_claim.example.metadata.0.name
+    mysql_user          = var.mysql_keycloak_user
+    mysql_user_password = random_string.mysql_keycloak_user_password.result
+    mysql_db_name       = var.mysql_keycloak_db_name
+    mysql_volume_claim  = kubernetes_persistent_volume_claim.mysql-keycloak-pvc.metadata.0.name
   }
 }
 
@@ -35,16 +35,16 @@ resource "helm_release" "keycloak-mysql" {
   chart  = "stable/mysql"
   wait   = true
   values = [
-    data.template_file.mysql_values.rendered
+    data.template_file.keycloak-mysql-values.rendered
   ]
-  depends_on = [kubernetes_secret.mysql_root_password_secret, kubernetes_secret.mysql_user_password_secret]
+  depends_on = [kubernetes_secret.mysql_root_password_secret, kubernetes_secret.mysql_keycloak_user_password_secret]
 }
 
 provider "kubernetes" {}
 
-resource "kubernetes_persistent_volume" "example" {
+resource "kubernetes_persistent_volume" "mysql-keycloak-pv" {
   metadata {
-    name = "mysql-keycloak-pv2"
+    name = "mysql-keycloak-pv"
   }
   spec {
     capacity = {
@@ -53,15 +53,15 @@ resource "kubernetes_persistent_volume" "example" {
     access_modes = ["ReadWriteMany"]
     persistent_volume_source {
       host_path {
-        path = "/home/dlab-user/keycloak-pv2"
+        path = "/home/dlab-user/keycloak-pv"
       }
     }
   }
 }
 
-resource "kubernetes_persistent_volume_claim" "example" {
+resource "kubernetes_persistent_volume_claim" "mysql-keycloak-pvc" {
   metadata {
-    name = "mysql-keycloak-pvc2"
+    name = "mysql-keycloak-pvc"
   }
   spec {
     access_modes = ["ReadWriteMany"]
@@ -70,7 +70,60 @@ resource "kubernetes_persistent_volume_claim" "example" {
         storage = "5Gi"
       }
     }
-    volume_name = kubernetes_persistent_volume.example.metadata.0.name
+    volume_name = kubernetes_persistent_volume.mysql-keycloak-pv.metadata.0.name
+  }
+}
+
+data "template_file" "guacamole-mysql-values" {
+  template = file("./files/mysql_values.yaml")
+  vars = {
+    mysql_root_password = random_string.mysql_root_password.result
+    mysql_user          = var.mysql_guacamole_user
+    mysql_user_password = random_string.mysql_guacamole_user_password.result
+    mysql_db_name       = var.mysql_guacamole_db_name
+    mysql_volume_claim  = kubernetes_persistent_volume_claim.mysql-guacamole-pvc.metadata.0.name
+  }
+}
+
+resource "helm_release" "guacamole-mysql" {
+  name   = "guacamole-mysql"
+  chart  = "stable/mysql"
+  wait   = true
+  values = [
+    data.template_file.guacamole-mysql-values.rendered
+  ]
+  depends_on = [kubernetes_secret.mysql_root_password_secret, kubernetes_secret.mysql_guacamole_user_password_secret]
+}
+
+resource "kubernetes_persistent_volume" "mysql-guacamole-pv" {
+  metadata {
+    name = "mysql-guacamole-pv"
+  }
+  spec {
+    capacity = {
+      storage = "8Gi"
+    }
+    access_modes = ["ReadWriteMany"]
+    persistent_volume_source {
+      host_path {
+        path = "/home/dlab-user/guacamole-pv"
+      }
+    }
+  }
+}
+
+resource "kubernetes_persistent_volume_claim" "mysql-guacamole-pvc" {
+  metadata {
+    name = "mysql-guacamole-pvc"
+  }
+  spec {
+    access_modes = ["ReadWriteMany"]
+    resources {
+      requests = {
+        storage = "5Gi"
+      }
+    }
+    volume_name = kubernetes_persistent_volume.mysql-guacamole-pv.metadata.0.name
   }
 }
 
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/secrets.tf b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/secrets.tf
index 03b6cc7..98ba426 100644
--- a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/secrets.tf
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/secrets.tf
@@ -92,18 +92,33 @@ resource "kubernetes_secret" "mysql_root_password_secret" {
   }
 }
 
-resource "random_string" "mysql_user_password" {
+resource "random_string" "mysql_keycloak_user_password" {
   length = 16
   special = false
 }
 
-resource "kubernetes_secret" "mysql_user_password_secret" {
+resource "kubernetes_secret" "mysql_keycloak_user_password_secret" {
   metadata {
-    name = "mysql-user-password"
+    name = "mysql-keycloak-user-password"
   }
 
   data = {
-    password = random_string.mysql_user_password.result
+    password = random_string.mysql_keycloak_user_password.result
+  }
+}
+
+resource "random_string" "mysql_guacamole_user_password" {
+  length = 16
+  special = false
+}
+
+resource "kubernetes_secret" "mysql_guacamole_user_password_secret" {
+  metadata {
+    name = "mysql-guacamole-user-password"
+  }
+
+  data = {
+    password = random_string.mysql_guacamole_user_password.result
   }
 }
 
diff --git a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/variables.tf b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/variables.tf
index 040b126..ef15720 100644
--- a/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/variables.tf
+++ b/infrastructure-provisioning/terraform/aws/ssn-helm-charts/main/variables.tf
@@ -27,14 +27,22 @@ variable "keycloak_user" {
     default = "dlab-admin"
 }
 
-variable "mysql_user" {
+variable "mysql_keycloak_user" {
     default = "keycloak"
 }
 
-variable "mysql_db_name" {
+variable "mysql_keycloak_db_name" {
     default = "keycloak"
 }
 
+variable "mysql_guacamole_user" {
+    default = "guacamole"
+}
+
+variable "mysql_guacamole_db_name" {
+    default = "guacamole"
+}
+
 variable "ldap_usernameAttr" {
     default = "uid"
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org