Run pods as non-root user
[sdc.git] / sdc-os-chef / scripts / docker_run.sh
index 959c1cc..e51f499 100755 (executable)
@@ -18,10 +18,10 @@ SDC_CERT_DIR="onap/cert"
 RELEASE=latest
 
 LOCAL=false
-RUNTESTS=false
 BE_DEBUG_PORT="--publish 4000:4000"
 FE_DEBUG_PORT="--publish 6000:6000"
 ONBOARD_DEBUG_PORT="--publish 4001:4001"
+CS_PORT=${CS_PORT:-9042}
 
 
 # Java Options:
@@ -78,7 +78,6 @@ function cleanup {
 function dir_perms {
     mkdir -p ${WORKSPACE}/data/logs/BE/SDC/SDC-BE
     mkdir -p ${WORKSPACE}/data/logs/FE/SDC/SDC-FE
-
     mkdir -p ${WORKSPACE}/data/logs/sdc-api-tests/ExtentReport
     mkdir -p ${WORKSPACE}/data/logs/ONBOARD/SDC/ONBOARD-BE
     mkdir -p ${WORKSPACE}/data/logs/sdc-api-tests/target
@@ -86,8 +85,7 @@ function dir_perms {
     mkdir -p ${WORKSPACE}/data/logs/sdc-ui-tests/target
     mkdir -p ${WORKSPACE}/data/logs/docker_logs
     mkdir -p ${WORKSPACE}/data/logs/WS
-    echo "create dir"
-    echo "${WORKSPACE}/data/${SDC_CERT_DIR}"
+    echo "Creating dir '${WORKSPACE}/data/${SDC_CERT_DIR}'"
     mkdir -p ${WORKSPACE}/data/${SDC_CERT_DIR}
     chmod -R 777 ${WORKSPACE}/data/logs
 }
@@ -115,6 +113,16 @@ function ready_probe {
 }
 #
 
+function ready_probe_jetty {
+    docker exec $1 /var/lib/jetty/ready-probe.sh > /dev/null 2>&1
+    rc=$?
+    if [[ ${rc} == 0 ]]; then
+        echo DOCKER $1 start finished in $2 seconds
+        return ${SUCCESS}
+    fi
+    return ${FAILURE}
+}
+#
 
 function probe_docker {
     MATCH=`docker logs --tail 30 $1 | grep "DOCKER STARTED"`
@@ -182,20 +190,16 @@ function monitor_docker {
                 ready_probe ${DOCKER_NAME} ${TIME} ;
                 status=$? ;
             ;;
-            sdc-es)
-                probe_es ${TIME} ;
-                status=$? ;
-            ;;
             sdc-BE)
-                ready_probe ${DOCKER_NAME} ${TIME} ;
+                ready_probe_jetty ${DOCKER_NAME} ${TIME} ;
                 status=$? ;
             ;;
             sdc-FE)
-                ready_probe ${DOCKER_NAME} ${TIME} ;
+                ready_probe_jetty ${DOCKER_NAME} ${TIME} ;
                 status=$? ;
             ;;
             sdc-onboard-BE)
-                ready_probe ${DOCKER_NAME} ${TIME} ;
+                ready_probe_jetty ${DOCKER_NAME} ${TIME} ;
                 status=$? ;
             ;;
             sdc-api-tests)
@@ -270,38 +274,6 @@ function command_exit_status {
 # Run Containers
 #
 
-#Elastic-Search
-function sdc-es {
-    DOCKER_NAME="sdc-es"
-    echo "docker run sdc-elasticsearch..."
-    if [ ${LOCAL} = false ]; then
-        echo "pulling code"
-        docker pull ${PREFIX}/sdc-elasticsearch:${RELEASE}
-    fi
-    docker run -dit --name ${DOCKER_NAME} --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --env ES_JAVA_OPTS="-Xms512m -Xmx512m" --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --env ES_HEAP_SIZE=1024M --volume ${WORKSPACE}/data/ES:/usr/share/elasticsearch/data --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 9200:9200 --publish 9300:9300 ${PREFIX}/sdc-elasticsearch:${RELEASE} /bin/sh
-    command_exit_status $? ${DOCKER_NAME}
-    echo "please wait while ES is starting..."
-    monitor_docker ${DOCKER_NAME}
-}
-#
-
-
-#Init-Elastic-Search
-function sdc-init-es {
-    DOCKER_NAME="sdc-init-es"
-    echo "docker run sdc-init-elasticsearch..."
-    if [ ${LOCAL} = false ]; then
-        echo "pulling code"
-        docker pull ${PREFIX}/sdc-init-elasticsearch:${RELEASE}
-    fi
-    echo "Running sdc-init-es"
-    docker run --name ${DOCKER_NAME} --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments ${PREFIX}/sdc-init-elasticsearch:${RELEASE} > /dev/null 2>&1
-    rc=$?
-    docker_logs ${DOCKER_NAME}
-    if [[ ${rc} != 0 ]]; then exit ${rc}; fi
-}
-#
-
 
 #Cassandra
 function sdc-cs {
@@ -310,7 +282,7 @@ function sdc-cs {
     if [ ${LOCAL} = false ]; then
         docker pull ${PREFIX}/sdc-cassandra:${RELEASE}
     fi
-    docker run -dit --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --env MAX_HEAP_SIZE="1536M" --env HEAP_NEWSIZE="512M" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 9042:9042 --publish 9160:9160 ${PREFIX}/sdc-cassandra:${RELEASE} /bin/sh
+    docker run -dit --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --env MAX_HEAP_SIZE="1536M" --env HEAP_NEWSIZE="512M" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish ${CS_PORT}:${CS_PORT} ${PREFIX}/sdc-cassandra:${RELEASE} /bin/sh
     command_exit_status $? ${DOCKER_NAME}
     echo "please wait while CS is starting..."
     monitor_docker ${DOCKER_NAME}
@@ -325,7 +297,7 @@ function sdc-cs-init {
     if [ ${LOCAL} = false ]; then
         docker pull ${PREFIX}/sdc-cassandra-init:${RELEASE}
     fi
-    docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/root/chef-solo/cache ${PREFIX}/sdc-cassandra-init:${RELEASE} > /dev/null 2>&1
+    docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --env HOST_IP=${IP} --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/root/chef-solo/cache ${PREFIX}/sdc-cassandra-init:${RELEASE} > /dev/null 2>&1
     rc=$?
     docker_logs ${DOCKER_NAME}
     if [[ ${rc} != 0 ]]; then exit ${rc}; fi
@@ -340,7 +312,7 @@ function sdc-cs-onboard-init {
     if [ ${LOCAL} = false ]; then
         docker pull ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE}
     fi
-    docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_HOST_IP=${IP}  --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/root/chef-solo/cache ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE}
+    docker run --name ${DOCKER_NAME} --env RELEASE="${RELEASE}" --env CS_HOST_IP=${IP} --env CS_HOST_PORT=${CS_PORT} --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env CS_PASSWORD="${CS_PASSWORD}" --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/CS:/var/lib/cassandra --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments --volume ${WORKSPACE}/data/CS-Init:/home/sdc/chef-solo/cache ${PREFIX}/sdc-onboard-cassandra-init:${RELEASE}
     rc=$?
     docker_logs ${DOCKER_NAME}
     if [[ ${rc} != 0 ]]; then exit ${rc}; fi
@@ -348,19 +320,6 @@ function sdc-cs-onboard-init {
 #
 
 
-#Kibana
-function sdc-kbn {
-    DOCKER_NAME="sdc-kbn"
-    echo "docker run sdc-kibana..."
-    if [ ${LOCAL} = false ]; then
-        docker pull ${PREFIX}/sdc-kibana:${RELEASE}
-        docker run --detach --name ${DOCKER_NAME} --env ENVNAME="${DEP_ENV}" --env NODE_OPTIONS="--max-old-space-size=200" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 5601:5601 ${PREFIX}/sdc-kibana:${RELEASE}
-        command_exit_status $? ${DOCKER_NAME}
-    fi
-}
-#
-
-
 #Back-End
 function sdc-BE {
     DOCKER_NAME="sdc-BE"
@@ -370,7 +329,7 @@ function sdc-BE {
     else
         ADDITIONAL_ARGUMENTS=${BE_DEBUG_PORT}
     fi
-    docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env JAVA_OPTIONS="${BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:/var/lib/jetty/logs  --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 8443:8443 --publish 8080:8080 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-backend:${RELEASE}
+    docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env JAVA_OPTIONS="${BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:${JETTY_BASE}/logs  --volume ${WORKSPACE}/data/environments:${JETTY_BASE}/chef-solo/environments --publish 8443:8443 --publish 8080:8080 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-backend:${RELEASE}
     command_exit_status $? ${DOCKER_NAME}
     echo "please wait while BE is starting..."
     monitor_docker ${DOCKER_NAME}
@@ -385,7 +344,7 @@ function sdc-BE-init {
     if [ ${LOCAL} = false ]; then
         docker pull ${PREFIX}/sdc-backend-init:${RELEASE}
     fi
-    docker run --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:/var/lib/jetty/logs  --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments ${PREFIX}/sdc-backend-init:${RELEASE} > /dev/null 2>&1
+    docker run --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/logs/BE/:${JETTY_BASE}/logs  --volume ${WORKSPACE}/data/environments:/home/sdc/chef-solo/environments ${PREFIX}/sdc-backend-init:${RELEASE} > /dev/null 2>&1
     rc=$?
     docker_logs ${DOCKER_NAME}
     if [[ ${rc} != 0 ]]; then exit ${rc}; fi
@@ -404,7 +363,7 @@ function sdc-onboard-BE {
     else
         ADDITIONAL_ARGUMENTS=${ONBOARD_DEBUG_PORT}
     fi
-    docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env SDC_CLUSTER_NAME="SDC-CS-${DEP_ENV}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env SDC_CERT_DIR="${SDC_CERT_DIR}" --env JAVA_OPTIONS="${ONBOARD_BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/${SDC_CERT_DIR}:/var/lib/jetty/onap/cert --volume ${WORKSPACE}/data/logs/ONBOARD:/var/lib/jetty/logs --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --publish 8445:8445 --publish 8081:8081 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-onboard-backend:${RELEASE}
+    docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env cassandra_ssl_enabled="false" --env SDC_CLUSTER_NAME="SDC-CS-${DEP_ENV}" --env SDC_USER="${SDC_USER}" --env SDC_PASSWORD="${SDC_PASSWORD}" --env SDC_CERT_DIR="${SDC_CERT_DIR}" --env JAVA_OPTIONS="${ONBOARD_BE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD} --volume ${WORKSPACE}/data/${SDC_CERT_DIR}:${JETTY_BASE}/onap/cert --volume ${WORKSPACE}/data/logs/ONBOARD:${JETTY_BASE}/logs --volume ${WORKSPACE}/data/environments:/${JETTY_BASE}/chef-solo/environments --publish 8445:8445 --publish 8081:8081 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-onboard-backend:${RELEASE}
     command_exit_status $? ${DOCKER_NAME}
     echo "please wait while sdc-onboard-BE is starting..."
     monitor_docker ${DOCKER_NAME}
@@ -415,15 +374,43 @@ function sdc-onboard-BE {
 # Front-End
 function sdc-FE {
     DOCKER_NAME="sdc-FE"
-    echo "docker run sdc-frontend..."
+    IMAGE_NAME="${PREFIX}/sdc-frontend:${RELEASE}"
+    echo "Running container '${DOCKER_NAME}' based on '${IMAGE_NAME}' image..."
     if [ ${LOCAL} = false ]; then
         docker pull ${PREFIX}/sdc-frontend:${RELEASE}
     else
         ADDITIONAL_ARGUMENTS=${FE_DEBUG_PORT}
     fi
-    docker run --detach --name ${DOCKER_NAME} --env HOST_IP=${IP} --env ENVNAME="${DEP_ENV}" --env JAVA_OPTIONS="${FE_JAVA_OPTIONS}" --log-driver=json-file --log-opt max-size=100m --log-opt max-file=10 --ulimit memlock=-1:-1 --ulimit nofile=4096:100000 ${LOCAL_TIME_MOUNT_CMD}  --volume ${WORKSPACE}/data/logs/FE/:/var/lib/jetty/logs --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments --volume ${WORKSPACE}/data/environments/plugins-configuration.yaml:${JETTY_BASE}/config/catalog-fe/plugins-configuration.yaml --publish 9443:9443 --publish 8181:8181 ${ADDITIONAL_ARGUMENTS} ${PREFIX}/sdc-frontend:${RELEASE}
+
+    PLUGIN_CONFIG_FILE="${WORKSPACE}/data/environments/plugins-configuration.yaml"
+    if [[ -f ${WORKSPACE}/data/environments/plugins-configuration.yaml ]]; then
+        PLUGINS_CONF_VOLUME_MOUNT="--volume ${PLUGIN_CONFIG_FILE}:${JETTY_BASE}/config/catalog-fe/plugins-configuration.yaml"
+    else
+        echo "INFO: '${PLUGIN_CONFIG_FILE}' not provided, ignoring..."
+    fi
+
+    docker run \
+    --detach \
+    --name ${DOCKER_NAME} \
+    --env HOST_IP=${IP} \
+    --env ENVNAME="${DEP_ENV}" \
+    --env JAVA_OPTIONS="${FE_JAVA_OPTIONS}" \
+    --log-driver=json-file \
+    --log-opt max-size=100m \
+    --log-opt max-file=10 \
+    --ulimit memlock=-1:-1 \
+    --ulimit nofile=4096:100000 \
+    --volume ${WORKSPACE}/data/logs/FE/:${JETTY_BASE}/logs \
+    --volume ${WORKSPACE}/data/environments:/${JETTY_BASE}/chef-solo/environments \
+    ${LOCAL_TIME_MOUNT_CMD}  \
+    ${PLUGINS_CONF_VOLUME_MOUNT} \
+    --publish 9443:9443 \
+    --publish 8181:8181 \
+    ${ADDITIONAL_ARGUMENTS} \
+    ${IMAGE_NAME}
+
     command_exit_status $? ${DOCKER_NAME}
-    echo "please wait while FE is starting....."
+    echo "Please wait while '${DOCKER_NAME}' container is starting..."
     monitor_docker ${DOCKER_NAME}
 }
 #
@@ -492,7 +479,7 @@ function sdc-sim {
                 --env JAVA_OPTIONS="${SIM_JAVA_OPTIONS}" \
                 --env ENVNAME="${DEP_ENV}" \
                 ${LOCAL_TIME_MOUNT_CMD} \
-                --volume ${WORKSPACE}/data/logs/WS/:/var/lib/jetty/logs \
+                --volume ${WORKSPACE}/data/logs/WS/:${JETTY_BASE}/logs \
                 --volume ${WORKSPACE}/data/environments:/root/chef-solo/environments \
                 --publish 8285:8080 \
                 --publish 8286:8443 ${PREFIX}/sdc-simulator:${RELEASE}
@@ -612,11 +599,8 @@ echo ""
 if [ -z "${DOCKER}" ]; then
     cleanup all
     dir_perms
-    sdc-es
-    sdc-init-es
     sdc-cs
     sdc-cs-init
-#    sdc-kbn
     sdc-cs-onboard-init
     sdc-onboard-BE
     sdc-BE