From bc4f7b8493766b757ad6ebc204b48b4dc5a82e82 Mon Sep 17 00:00:00 2001 From: Jack Lucas Date: Fri, 4 Dec 2020 14:27:11 -0500 Subject: [DCAE] Update Cloudify Manager to Python 3.x Issue-ID: DCAEGEN2-2542 Signed-off-by: Jack Lucas Change-Id: I8d3c42fc80290394df4eb3bd724c6e43d60c0a96 --- cm-container/Dockerfile-template | 21 +++++------- cm-container/README.md | 22 ++++++------ cm-container/pom.xml | 3 +- cm-container/reset_admin.py | 54 ------------------------------ cm-container/scripts/configure-tls.sh | 31 ++++++----------- cm-container/scripts/get-plugins.sh | 16 ++++----- cm-container/scripts/load-plugins.sh | 5 ++- cm-container/scripts/set-admin-password.sh | 3 +- 8 files changed, 47 insertions(+), 108 deletions(-) delete mode 100644 cm-container/reset_admin.py (limited to 'cm-container') diff --git a/cm-container/Dockerfile-template b/cm-container/Dockerfile-template index b5ce5ab..c794cff 100644 --- a/cm-container/Dockerfile-template +++ b/cm-container/Dockerfile-template @@ -1,6 +1,6 @@ # ============LICENSE_START======================================================= # Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved. -# Copyright (c) 2020 J. F. Lucas. All rights reserved. +# Copyright (c) 2020-2021 J. F. Lucas. 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. @@ -14,23 +14,20 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============LICENSE_END========================================================= -FROM cloudifyplatform/community-cloudify-manager-aio:20.03.03 +FROM cloudifyplatform/community-cloudify-manager-aio:20.12.15 ENV PLUGIN_REPO {{ ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_releases }} -# Store plugin files locally +# Install openssh-clients to ssh-keygen, used by the sshkeyshare plugin +RUN yum install -y openssh-clients + RUN mkdir scripts COPY scripts/* scripts/ -COPY reset_admin.py /opt/manager/ -# Load plugins, set up TLS configuration, load Cloudify type file -RUN chmod +x /opt/manager/reset_admin.py \ - && chmod +x scripts/*.sh \ - && scripts/get-plugins.sh ${PLUGIN_REPO} \ - && /scripts/configure-tls.sh \ - && mkdir /opt/manager/resources/spec/cloudify/4.5.5 \ - && curl -Ss -L -f https://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml > /opt/manager/resources/spec/cloudify/4.5.5/types.yaml \ - && chown -R cfyuser:cfyuser /opt/manager/resources/spec/cloudify/4.5.5 +# Load plugins and set up TLS configuration + RUN chmod +x scripts/*.sh \ + && scripts/get-plugins.sh ${PLUGIN_REPO} \ + && /scripts/configure-tls.sh # Create mount point for CM config file RUN mkdir -p /opt/onap && chown cfyuser:cfyuser /opt/onap diff --git a/cm-container/README.md b/cm-container/README.md index 03b9634..b929e21 100644 --- a/cm-container/README.md +++ b/cm-container/README.md @@ -1,13 +1,17 @@ -# Cloudify Manager Container Builder +# Cloudify Manager Image Builder ## Purpose The artifacts in this directory build a Docker image based on the -public image from Cloudify (`cloudifyplatform/community`). The -image has the Cloudify Manager software from the base image -and adds our types files. It configures -the import resolver to use our local type files instead -of fetching them over the Internet. It sets up the `/opt/onap` mount point -for our config files. It also sets up the certificate, key and other -configuration for using TLS. +public image from Cloudify (`cloudifyplatform/community`). The image +build process, driven by the Dockerfile: + - retrieves the Cloudify plugins and type files needed to deploy DCAE components. + - edits the Cloudify configuration file (`/etc/cloudify/config.yaml`) to +set up Cloudify Manager to use TLS on its HTTP interfaces. + - sets up the `/opt/onap` mount point for configuration file. + - installs scripts that run when the container is started. These scripts: + - set up persistent storage for the container + - make the credentials for accessing the Kubernetes API available to Cloudify Manager + - set the administrative password to a value generated during the Helm deployment process + - upload the plugins and type files to the Cloudify Manager once it is running ## Running the Container The container is intended to be launched via a Helm chart as part @@ -60,8 +64,6 @@ which then brings up the many other processes needed for a working instance of C ## The `setup-secret.sh` script When Kubernetes starts a container, it mounts a directory containing the credentials that the container needs to access the Kubernetes API on the local Kubernetes cluster. The mountpoint is `/var/run/secrets/kubernetes.io/serviceaccount`. Something about the way that Cloudify Manager is started (possibly because `/sbin/init` is run) causes this mountpoint to be hidden. `setup-secret.sh` will recreate the directory if it's not present and symbolically link it to a copy of the credentials mounted at `/secret` in the container file system. This gives Cloudify Manager the credentials that the Kubernetes plugin needs to deploy Kubernetes-based DCAE components. -`setup-secret.sh` needs to run after '/sbin/init'. The Dockerfile installs it in the `rc.local` script that runs at startup. - ## Cleaning up Kubernetes components deployed by Cloudify Manager Using the `helm undeploy` (or `helm delete`) command will destroy the Kubernetes components deployed via helm. In an ONAP deployment driven by OOM, this includes destroying Cloudify Manager. helm will *not* delete Kubernetes components deployed by Cloudify Manager. diff --git a/cm-container/pom.xml b/cm-container/pom.xml index e676be6..b128ec3 100644 --- a/cm-container/pom.xml +++ b/cm-container/pom.xml @@ -2,6 +2,7 @@