From 80a3413dc04b715a1e89a418c2fb456221b3294d Mon Sep 17 00:00:00 2001 From: abhijit_onap Date: Wed, 20 May 2020 01:59:43 +0530 Subject: [PATCH] Added Roles for MECM and MEP-Server Added the applcm task folder, also having the applcm deployment yaml files. Added following things: applcm roles and updated self review comments. Signed-off-by: abhijit_onap Change-Id: I7bee7f497451700e479b8d93a818b4dcc30d007f --- ocd/infra/playbooks/ealt-all.yml | 14 +++- .../files/deploy/applcm-broker-deployment.yaml | 76 +++++++++++++++++++++ .../applcm/files/deploy/applcm-broker-service.yaml | 38 +++++++++++ .../playbooks/roles/applcm/files/deploy/config.sh | 23 +++++++ .../roles/applcm/files/deploy/db-deployment.yaml | 70 +++++++++++++++++++ .../roles/applcm/files/deploy/db-service.yaml | 36 ++++++++++ .../files/deploy/helm-plugin-deployment.yaml | 75 ++++++++++++++++++++ .../applcm/files/deploy/helm-plugin-service.yaml | 36 ++++++++++ .../playbooks/roles/applcm/files/deploy/init.sh | 16 +++++ .../files/deploy/my-db-persistentvolumeclaim.yaml | 31 +++++++++ ocd/infra/playbooks/roles/applcm/tasks/install.yml | 79 ++++++++++++++++++++++ ocd/infra/playbooks/roles/applcm/tasks/main.yml | 20 ++++++ .../playbooks/roles/applcm/tasks/uninstall.yml | 22 ++++++ 13 files changed, 534 insertions(+), 2 deletions(-) create mode 100644 ocd/infra/playbooks/roles/applcm/files/deploy/applcm-broker-deployment.yaml create mode 100644 ocd/infra/playbooks/roles/applcm/files/deploy/applcm-broker-service.yaml create mode 100755 ocd/infra/playbooks/roles/applcm/files/deploy/config.sh create mode 100644 ocd/infra/playbooks/roles/applcm/files/deploy/db-deployment.yaml create mode 100644 ocd/infra/playbooks/roles/applcm/files/deploy/db-service.yaml create mode 100644 ocd/infra/playbooks/roles/applcm/files/deploy/helm-plugin-deployment.yaml create mode 100644 ocd/infra/playbooks/roles/applcm/files/deploy/helm-plugin-service.yaml create mode 100755 ocd/infra/playbooks/roles/applcm/files/deploy/init.sh create mode 100644 ocd/infra/playbooks/roles/applcm/files/deploy/my-db-persistentvolumeclaim.yaml create mode 100644 ocd/infra/playbooks/roles/applcm/tasks/install.yml create mode 100644 ocd/infra/playbooks/roles/applcm/tasks/main.yml create mode 100644 ocd/infra/playbooks/roles/applcm/tasks/uninstall.yml diff --git a/ocd/infra/playbooks/ealt-all.yml b/ocd/infra/playbooks/ealt-all.yml index 48880a9..1e7964a 100644 --- a/ocd/infra/playbooks/ealt-all.yml +++ b/ocd/infra/playbooks/ealt-all.yml @@ -52,6 +52,9 @@ roles: - helm - grafana + - kubeconfig + - mepconfig + - applcm - hosts: mep become: yes @@ -61,9 +64,16 @@ - mep roles: - - docker - k3s - helm - rabbitmq - - cAdvisor - prometheus + - kubeconfig + +- hosts: mepautomate + become: yes + tags: + - mepautomate + + roles: + - mepserver diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/applcm-broker-deployment.yaml b/ocd/infra/playbooks/roles/applcm/files/deploy/applcm-broker-deployment.yaml new file mode 100644 index 0000000..ce4d6b4 --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/applcm-broker-deployment.yaml @@ -0,0 +1,76 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +# yamllint disable +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: applcm-broker + name: applcm-broker +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: applcm-broker + strategy: {} + template: + metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: applcm-broker + spec: + containers: + - env: + - name: ADDRESS + value: 0.0.0.0:8081 + - name: HELM_PLUGIN_PORT + value: "50051" + - name: KUBERNETES_PLUGIN_PORT + value: "50052" + - name: LOGFILE_PATH + value: /go/release/logfile + - name: LOGGER_LEVEL + value: info + - name: MYSQL_DATABASE + value: db + - name: MYSQL_PASSWORD + value: password + - name: MYSQL_ROOT_PASSWORD + value: password + - name: MYSQL_USER + value: root + - name: PACKAGE_ARTIFACT_PATH + value: /Artifacts/Deployment/ + - name: PACKAGE_PATH + value: /go/release/application/packages/ + image: ealtedge/applcm-broker:latest + imagePullPolicy: "" + name: applcm-broker + ports: + - containerPort: 8081 + resources: {} + restartPolicy: Always + serviceAccountName: "" + volumes: null +status: {} + +# yamllint enable diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/applcm-broker-service.yaml b/ocd/infra/playbooks/roles/applcm/files/deploy/applcm-broker-service.yaml new file mode 100644 index 0000000..737611b --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/applcm-broker-service.yaml @@ -0,0 +1,38 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +# yamllint disable +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: applcm-broker + name: applcm-broker +spec: + type: NodePort + ports: + - name: "28081" + port: 8081 + targetPort: 8081 + nodePort: 30001 + selector: + io.kompose.service: applcm-broker +status: + loadBalancer: {} + +# yamllint enable diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/config.sh b/ocd/infra/playbooks/roles/applcm/files/deploy/config.sh new file mode 100755 index 0000000..d5e7b2f --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/config.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +# Command to give privileges to mysql root user +# The Grant is necessary for Applcm-Broker to create applcmdb +mysql -u root -ppassword << EOF +SELECT host,user,Grant_priv,Super_priv FROM mysql.user; +UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root'; +FLUSH PRIVILEGES; +GRANT ALL ON *.* TO 'root'@'%'; +EOF diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/db-deployment.yaml b/ocd/infra/playbooks/roles/applcm/files/deploy/db-deployment.yaml new file mode 100644 index 0000000..3d75520 --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/db-deployment.yaml @@ -0,0 +1,70 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +# yamllint disable +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: db + name: db +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: db + strategy: + type: Recreate + template: + metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: db + spec: + containers: + - env: + - name: MYSQL_DATABASE + value: db + - name: MYSQL_PASSWORD + value: password + - name: MYSQL_ROOT_PASSWORD + value: password + - name: MYSQL_USER + value: root + image: mysql/mysql-server + imagePullPolicy: "" + name: db + ports: + - containerPort: 3306 + resources: {} + volumeMounts: + - mountPath: /var/lib/mysql + name: my-db + restartPolicy: Always + serviceAccountName: "" + volumes: + - name: my-db + hostPath: + path: /data + type: DirectoryOrCreate +status: {} + +# yamllint enable diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/db-service.yaml b/ocd/infra/playbooks/roles/applcm/files/deploy/db-service.yaml new file mode 100644 index 0000000..ee1adb2 --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/db-service.yaml @@ -0,0 +1,36 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +# yamllint disable +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: db + name: dbhost +spec: + ports: + - name: "3306" + port: 3306 + targetPort: 3306 + selector: + io.kompose.service: db +status: + loadBalancer: {} + +# yamllint enable diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/helm-plugin-deployment.yaml b/ocd/infra/playbooks/roles/applcm/files/deploy/helm-plugin-deployment.yaml new file mode 100644 index 0000000..c87b5e6 --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/helm-plugin-deployment.yaml @@ -0,0 +1,75 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +# yamllint disable +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: helm-plugin + name: helm-plugin +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: helm-plugin + strategy: {} + template: + metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: helm-plugin + spec: + containers: + - env: + - name: CERTIFICATE_PATH + - name: CHART_PATH + value: /go/release/charts/ + - name: HELM_PLUGIN_PORT + value: "50051" + - name: KEY_PATH + - name: KUBECONFIG_DIR_PATH + value: /go/release/kubeconfig/ + - name: LOGFILE_PATH + value: /go/release/logfile + - name: LOGGER_LEVEL + value: info + - name: RELEASE_NAMESPACE + value: default + image: ealtedge/helmplugin:latest + imagePullPolicy: "" + name: helmplugin + ports: + - containerPort: 50051 + resources: {} + volumeMounts: + - mountPath: /go/release/kubeconfig/ + name: config-dir + restartPolicy: Always + serviceAccountName: "" + volumes: + - name: config-dir + hostPath: + path: /kubeconfig + type: DirectoryOrCreate +status: {} + +# yamllint enable diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/helm-plugin-service.yaml b/ocd/infra/playbooks/roles/applcm/files/deploy/helm-plugin-service.yaml new file mode 100644 index 0000000..cd9543e --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/helm-plugin-service.yaml @@ -0,0 +1,36 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +# yamllint disable +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + io.kompose.service: helm-plugin + name: helmplugin +spec: + ports: + - name: "50051" + port: 50051 + targetPort: 50051 + selector: + io.kompose.service: helm-plugin +status: + loadBalancer: {} + +# yamllint enable diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/init.sh b/ocd/infra/playbooks/roles/applcm/files/deploy/init.sh new file mode 100755 index 0000000..bb7eed7 --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/init.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +echo "applcm-db preconfig step" diff --git a/ocd/infra/playbooks/roles/applcm/files/deploy/my-db-persistentvolumeclaim.yaml b/ocd/infra/playbooks/roles/applcm/files/deploy/my-db-persistentvolumeclaim.yaml new file mode 100644 index 0000000..a0e6cfc --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/files/deploy/my-db-persistentvolumeclaim.yaml @@ -0,0 +1,31 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +# yamllint disable +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + creationTimestamp: null + labels: + io.kompose.service: my-db + name: my-db +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi +status: {} + +# yamllint enable diff --git a/ocd/infra/playbooks/roles/applcm/tasks/install.yml b/ocd/infra/playbooks/roles/applcm/tasks/install.yml new file mode 100644 index 0000000..ad1d0da --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/tasks/install.yml @@ -0,0 +1,79 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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: copy deploy folder to mecm host for installing APPLCM + copy: + src: deploy + dest: /tmp/applcm/ + +- name: Install applcm - pvc + shell: + cmd: kubectl apply -f /tmp/applcm/deploy/my-db-persistentvolumeclaim.yaml + +- name: Install applcm - db + shell: + cmd: kubectl apply -f /tmp/applcm/deploy/db-deployment.yaml + +- name: Install applcm - db-service + shell: + cmd: kubectl apply -f /tmp/applcm/deploy/db-service.yaml + + +- name: Install applcm - db-init-config + shell: +# yamllint disable rule:line-length + cmd: kubectl exec -it $(kubectl get pod -l io.kompose.service=db | awk 'FNR==2 {print $1}') -- /bin/bash < /tmp/applcm/deploy/init.sh + ignore_errors: yes + failed_when: false + no_log: True + +- name: Install applcm - db-init-config + shell: +# yamllint disable rule:line-length + cmd: kubectl exec -it $(kubectl get pod -l io.kompose.service=db | awk 'FNR==2 {print $1}') -- /bin/bash < /tmp/applcm/deploy/config.sh + ignore_errors: yes + failed_when: false + no_log: True + + +- name: Install applcm - helmplugin + shell: + cmd: sleep 10 + +- name: Install applcm - helmplugin + shell: + cmd: kubectl apply -f /tmp/applcm/deploy/helm-plugin-deployment.yaml + + +- name: Install applcm - helmplugin + shell: + cmd: sleep 10 + +- name: Install applcm - helmplugin + shell: + cmd: kubectl apply -f /tmp/applcm/deploy/helm-plugin-service.yaml + + +- name: Install applcm - helmplugin + shell: + cmd: sleep 10 + +- name: Install applcm - broker + shell: + cmd: kubectl apply -f /tmp/applcm/deploy/applcm-broker-deployment.yaml + +- name: Install applcm - broker + shell: + cmd: kubectl apply -f /tmp/applcm/deploy/applcm-broker-service.yaml diff --git a/ocd/infra/playbooks/roles/applcm/tasks/main.yml b/ocd/infra/playbooks/roles/applcm/tasks/main.yml new file mode 100644 index 0000000..8051228 --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/tasks/main.yml @@ -0,0 +1,20 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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. + +--- +- include: "install.yml" + when: operation == 'install' + + #- include: "uninstall.yml" + #when: operation == 'uninstall' diff --git a/ocd/infra/playbooks/roles/applcm/tasks/uninstall.yml b/ocd/infra/playbooks/roles/applcm/tasks/uninstall.yml new file mode 100644 index 0000000..24f63eb --- /dev/null +++ b/ocd/infra/playbooks/roles/applcm/tasks/uninstall.yml @@ -0,0 +1,22 @@ +# Copyright 2020 Huawei Technologies Co., Ltd. +# +# 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: Uninstalling APPLCM + shell: + cmd: echo "Reseting the appclm environment" + +- name: Deleting the Deployment and Services of APPLCM + shell: + cmd: kubectl delete -f /tmp/applcm/deploy -- 2.16.6