Browse Source

Merge branch 'devel' into awx_logo

Sujit Jadhav 3 years ago
parent
commit
b3d013ae44

+ 137 - 0
telemetry/roles/idrac_telemetry/tasks/idrac_telemetry_deployment.yml

@@ -0,0 +1,137 @@
+# Copyright 2022 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed 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.
+
+- name: Get timescaleDB svc IP
+  command: kubectl get svc "{{ timescaledb_k8s_name }}" -n "{{ namespace }}" -o=jsonpath='{.spec.clusterIP}'
+  changed_when: false
+  register: timescale_svc_ip
+
+- name: Get mysqlDB svc IP
+  command: kubectl get svc "{{ mysqldb_k8s_name }}" -n "{{ namespace }}" -o=jsonpath='{.spec.clusterIP}'
+  changed_when: false
+  register: mysql_svc_ip
+
+- name: Deploy idrac-telemetry pod
+  kubernetes.core.k8s:
+    state: present
+    definition:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+          name: "{{ idrac_telemetry_k8s_name }}"
+          namespace: "{{ namespace }}"
+          labels:
+              app: "{{ idrac_telemetry_k8s_name }}"
+      spec:
+          selector:
+              matchLabels:
+                  app: "{{ idrac_telemetry_k8s_name }}"
+          replicas: 1
+          strategy:
+              type: RollingUpdate
+          template:
+              metadata:
+                  labels:
+                      app: "{{ idrac_telemetry_k8s_name }}"
+              spec:
+                  volumes:
+                     - name: telemetry-reference-tools
+                       hostPath:
+                         path: "{{ mount_location + idrac_telemetry_folder_name }}"
+                         type: Directory
+
+                  hostAliases:
+                    - ip: "127.0.0.1"
+                      hostnames:
+                        - "activemq"
+                    - ip: "{{ timescale_svc_ip.stdout }}"
+                      hostnames:
+                        - "timescale"
+                    - ip: "{{ mysql_svc_ip.stdout }}"
+                      hostnames:
+                        - "mysqldb"
+
+                  containers:
+                    - name: activemq
+                      image: rmohr/activemq:5.10.0
+                      imagePullPolicy: "Always"
+                      ports:
+                        - containerPort: "{{ activemq_http_port_1 }}"
+                        - containerPort: "{{ activemq_http_port_2 }}"
+
+                    - name: telemetry-receiver
+                      image: golang:1.17
+                      imagePullPolicy: "IfNotPresent"
+                      volumeMounts:
+                        - mountPath: /go/src/github.com/telemetry-reference-tools
+                          name: telemetry-reference-tools
+                      workingDir: /go/src/github.com/telemetry-reference-tools
+                      env:
+                        - name: MESSAGEBUS_HOST
+                          value: activemq
+                        - name: MESSAGEBUS_PORT
+                          value: "{{ messagebus_http_port }}"
+                        - name: CONFIGUI_HTTP_PORT
+                          value: "{{ configui_http_port }}"
+                        - name: MYSQL_DATABASE
+                          value: "{{ mysqldb_name }}"
+                        - name: MYSQL_USER
+                          valueFrom:
+                            secretKeyRef:
+                              name: "{{ secrets_name }}"
+                              key: sqldb_user
+                        - name: MYSQL_PASSWORD
+                          valueFrom:
+                            secretKeyRef:
+                              name: "{{ secrets_name }}"
+                              key: sqldb_password
+                        - name: MYSQL_HOST
+                          value: mysqldb
+                        - name: MYSQL_HOST_PORT
+                          value: "{{ mysqldb_port1 }}"
+                      command:
+                          - "/bin/sh"
+                          - "-c"
+                      args: ["./cmd/idrac-telemetry-receiver.sh"]
+
+                    - name: timescale-ingester
+                      image: golang:1.17
+                      imagePullPolicy: "IfNotPresent"
+                      volumeMounts:
+                        - mountPath: /go/src/github.com/telemetry-reference-tools
+                          name: telemetry-reference-tools
+                      workingDir: /go/src/github.com/telemetry-reference-tools
+                      env:
+                        - name: MESSAGEBUS_HOST
+                          value: activemq
+                        - name: MESSAGEBUS_PORT
+                          value: "{{ messagebus_http_port }}"
+                        - name: POSTGRES_USER
+                          valueFrom:
+                            secretKeyRef:
+                              name: "{{ secrets_name }}"
+                              key: timescaledb_user
+                        - name: POSTGRES_DEFAULT_PWD
+                          valueFrom:
+                            secretKeyRef:
+                              name: "{{ secrets_name }}"
+                              key: timescaledb_password
+                        - name: TIMESCALE_SERVER
+                          value: timescale
+                        - name: TIMESCALE_DB
+                          value: "{{ timescaledb_name }}"
+                      command:
+                          - "/bin/sh"
+                          - "-c"
+                      args: ["go run cmd/timescalepump/timescalepump.go"]

+ 8 - 1
telemetry/roles/idrac_telemetry/tasks/main.yml

@@ -13,4 +13,11 @@
 # limitations under the License.
 ---
 
-#To be updated
+- name: Deploy idrac-telemetry
+  block:
+  - name: Deploy mysqldb pod for idrac credentials
+    include_tasks: mysqldb_deployment.yml
+
+  - name: Deploy idrac_telemetry pods
+    include_tasks: idrac_telemetry_deployment.yml
+  when: idrac_telemetry_support is true

+ 134 - 0
telemetry/roles/idrac_telemetry/tasks/mysqldb_deployment.yml

@@ -0,0 +1,134 @@
+# Copyright 2022 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed 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.
+---
+
+- name: Persistent volume for mysqldb
+  kubernetes.core.k8s:
+    state: present
+    definition:
+      apiVersion: v1
+      kind: PersistentVolume
+      metadata:
+        name: "{{ mysql_pv_name }}"
+        namespace: "{{ namespace }}"
+        labels:
+          type: local
+      spec:
+        storageClassName: manual
+        capacity:
+          storage: "{{ mysqldb_storage }}"
+        accessModes:
+          - ReadWriteOnce
+        hostPath:
+          path: "{{ mount_location + 'mysqldb' }}"
+
+- name: Persistent volume claim for mysqldb
+  kubernetes.core.k8s:
+    state: present
+    definition:
+      apiVersion: v1
+      kind: PersistentVolumeClaim
+      metadata:
+        name: "{{ mysqldb_pvc_name }}"
+        namespace: "{{ namespace }}"
+      spec:
+        storageClassName: manual
+        accessModes:
+          - ReadWriteOnce
+        resources:
+          requests:
+            storage: "{{ mysqldb_storage }}"
+
+- name: mysqldb pod definition
+  kubernetes.core.k8s:
+    state: present
+    definition:
+      apiVersion: apps/v1
+      kind: StatefulSet
+      metadata:
+        name: "{{ mysqldb_k8s_name }}"
+        namespace: "{{ namespace }}"
+      spec:
+        selector:
+          matchLabels:
+            app: "{{ mysqldb_k8s_name }}"
+        serviceName: "{{ mysqldb_k8s_name }}"
+        replicas: "{{ statefulset_replicas }}"
+        template:
+          metadata:
+            labels:
+              app: "{{ mysqldb_k8s_name }}"
+          spec:
+            volumes:
+              - name: telemetry-reference-tools
+                hostPath:
+                  path: "{{ mount_location + idrac_telemetry_folder_name }}"
+                  type: Directory
+
+              - name: mysqldb-pvc
+                persistentVolumeClaim:
+                  claimName: "{{ mysqldb_pvc_name }}"
+
+            containers:
+              - name: mysqldb
+                image: mysql:8.0
+                imagePullPolicy: "IfNotPresent"
+                volumeMounts:
+                  - mountPath: /go/src/github.com/telemetry-reference-tools
+                    name: telemetry-reference-tools
+                  - mountPath: /var/lib/mysql/
+                    name: mysqldb-pvc
+                workingDir: /go/src/github.com/telemetry-reference-tools
+                env:
+                  - name: MYSQL_DATABASE
+                    value: timescale
+                  - name: MYSQL_USER
+                    valueFrom:
+                      secretKeyRef:
+                        name: "{{ secrets_name }}"
+                        key: sqldb_user
+                  - name: MYSQL_PASSWORD
+                    valueFrom:
+                      secretKeyRef:
+                        name: "{{ secrets_name }}"
+                        key: sqldb_password
+                  - name: MYSQL_ROOT_PASSWORD
+                    valueFrom:
+                      secretKeyRef:
+                        name: "{{ secrets_name }}"
+                        key: sqldb_root_password
+                ports:
+                  - containerPort: "{{ mysqldb_container_port1 }}"
+                  - containerPort: "{{ mysqldb_container_port2 }}"
+
+- name: Service for mysqldb
+  kubernetes.core.k8s:
+    state: present
+    definition:
+      apiVersion: v1
+      kind: Service
+      metadata:
+        name: "{{ mysqldb_k8s_name }}"
+        namespace: "{{ namespace }}"
+        labels:
+          app: "{{ mysqldb_k8s_name }}"
+      spec:
+        type: ClusterIP
+        ports:
+          - name: mysqldb-http-port-1
+            port: "{{ mysqldb_container_port1 }}"
+          - name: mysqldb-http-port-2
+            port: "{{ mysqldb_container_port2 }}"
+        selector:
+          app: "{{ mysqldb_k8s_name }}"

+ 17 - 1
telemetry/roles/idrac_telemetry/vars/main.yml

@@ -13,4 +13,20 @@
 # limitations under the License.
 ---
 
-#To be updated
+# Usage: mysqldb_deployment.yml
+mysql_pv_name: mysqldb-storage
+mysqldb_storage: 1Gi
+mysqldb_name: idrac_telemetrysource_services_db
+mysqldb_pvc_name: mysqldb-storage-claim
+mysqldb_k8s_name: mysqldb
+statefulset_replicas: 1
+mysqldb_container_port1: 3306
+mysqldb_port1: "3306"
+mysqldb_container_port2: 33060
+
+# Usage: idrac_telemetry_deployment.yml
+idrac_telemetry_k8s_name: idrac-telemetry
+activemq_http_port_1: 8161
+activemq_http_port_2: 61616
+messagebus_http_port: "61613"
+configui_http_port: "8082"

+ 1 - 0
telemetry/telemetry.yml

@@ -20,6 +20,7 @@
    roles:
     - common
     - timescaledb
+    - idrac_telemetry
     - grafana_config
 
 - name: Get node inventory