From ec9906058fd977947b970af72725dc00c591587b Mon Sep 17 00:00:00 2001 From: Jack Lucas Date: Wed, 13 Jan 2021 12:50:10 -0500 Subject: Move bootstrap container to python 3 Move to an Alpine python base image and install a Python 3 version of the Cloudify CLI. Also remove loading of k8s plugin configurations. (Will move to CM via an init container.) Issue-ID: DCAEGEN2-2543 Issue-ID: DCAEGEN2-2582 Signed-off-by: Jack Lucas Change-Id: I6d147bbbce863ee8e04d2bd70d7189dc63fa9950 --- Dockerfile | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Dockerfile-template | 53 ---------------------------------------------- pom.xml | 2 +- scripts/bootstrap.sh | 16 ++------------ 4 files changed, 62 insertions(+), 68 deletions(-) create mode 100644 Dockerfile delete mode 100644 Dockerfile-template diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..51c704c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,59 @@ +# ============LICENSE_START======================================================= +# org.onap.dcae +# ================================================================================ +# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved. +# Copyright (c) 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. +# 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. +# ============LICENSE_END========================================================= + +# cloudify CLI requires python 3.6 +# won't work with 3.7 or later, hence won't work +# with the ONAP integration-python base images +FROM python:3.6-alpine +LABEL maintainer="ONAP DCAE Team" +LABEL Description="DCAE bootstrap image" + +ARG user=onap +ARG group=onap + +# Install packages needed for cloudify and for running bootstrap script +RUN apk --no-cache add build-base libffi-dev openssl-dev curl bash + +# Install jq +RUN curl -Ssf -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" > /bin/jq \ +&& chmod +x /bin/jq + +# Install pip and Cloudify CLI +RUN pip install cloudify==5.1.1 + +# Copy scripts +RUN mkdir scripts +COPY scripts/ /scripts + +# Load blueprints and input templates +COPY blueprints/ /blueprints + +# Set up runtime script +ENTRYPOINT exec "/scripts/bootstrap.sh" + +# Make scripts executable & set up a non-root user +RUN chmod +x /scripts/*.sh \ + && mkdir -p /opt/bootstrap \ + && addgroup -S $group \ + && adduser -S -D -h /opt/bootstrap -s /bin/bash $user $group \ + && chown -R $user:$group /opt/bootstrap \ + && chown -R $user:$group /scripts \ + && chown -R $user:$group /blueprints + +USER $user diff --git a/Dockerfile-template b/Dockerfile-template deleted file mode 100644 index 6bf6bfb..0000000 --- a/Dockerfile-template +++ /dev/null @@ -1,53 +0,0 @@ -# ============LICENSE_START======================================================= -# org.onap.dcae -# ================================================================================ -# Copyright (c) 2018-2020 AT&T Intellectual Property. 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. -# ============LICENSE_END========================================================= - -FROM centos:7.4.1708 -LABEL maintainer="maintainer" - -# Install gcc -RUN yum install -y gcc python-devel - -# Install jq -RUN curl -Ssf -L "https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64" > /bin/jq \ -&& chmod +x /bin/jq - -# Install pip and Cloudify CLI -RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \ - && python get-pip.py \ - && rm get-pip.py \ - && pip install cloudify==20.03.03 - -# Copy scripts -RUN mkdir scripts -COPY scripts/ /scripts - -# Load blueprints and input templates -COPY blueprints/ /blueprints - -# Set up runtime script -ENTRYPOINT exec "/scripts/bootstrap.sh" - -# Make scripts executable & set up a non-root user -RUN chmod +x /scripts/*.sh \ - && mkdir -p /opt/bootstrap \ - && useradd -d /opt/bootstrap bootstrap \ - && chown -R bootstrap:bootstrap /opt/bootstrap \ - && chown -R bootstrap:bootstrap /scripts \ - && chown -R bootstrap:bootstrap /blueprints - -USER bootstrap diff --git a/pom.xml b/pom.xml index a3958ff..c3ad56f 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. org.onap.dcaegen2.deployments k8s-bootstrap-container dcaegen2-deployments-k8s-bootstrap-container - 2.2.4-SNAPSHOT + 3.0.0-SNAPSHOT http://maven.apache.org pom diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 9cd69c8..8089439 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -1,6 +1,7 @@ #!/bin/bash # ================================================================================ # Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved. +# Copyright (c) 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. @@ -21,11 +22,8 @@ # CM password in CMPASS environment variable (assumes user is "admin") # ONAP common Kubernetes namespace in ONAP_NAMESPACE environment variable # If DCAE components are deployed in a separate Kubernetes namespace, that namespace in DCAE_NAMESPACE variable. -# Consul address with port in CONSUL variable -# Blueprints for components to be installed in /blueprints +# Blueprints for components to be installed in /blueprints # Input files for components to be installed in /inputs -# Configuration JSON files that need to be loaded into Consul in /dcae-configs -# Consul is installed in /opt/consul/bin/consul, with base config in /opt/consul/config/00consul.json # Optionally, allows: # CM protocol in CMPROTO environment variable (defaults to HTTP) # CM port in CMPORT environment variable (defaults to 80) @@ -137,16 +135,6 @@ cfy status # Store the CM password into a Cloudify secret cfy secret create -s ${CMPASS} cmpass -# Load configurations into Consul KV store -for config in /dcae-configs/*.json -do - # The basename of the file is the Consul key - key=$(basename ${config} .json) - # Strip out comments, empty lines - egrep -v "^#|^$" ${config} > /tmp/dcae-upload - curl -v -X PUT -H "Content-Type: application/json" --data-binary @/tmp/dcae-upload ${CONSUL}/v1/kv/${key} -done - # After this point, failures should not stop the script or block later commands trap - ERR set +e -- cgit 1.2.3-korg