Feature 11071: Modular OSM installation
Change-Id: Ia9aa75afdce98d061b1b18b6efa6f33e19045d86
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
diff --git a/installers/00-default-install-options.rc b/installers/00-default-install-options.rc
new file mode 100644
index 0000000..fa1fb0a
--- /dev/null
+++ b/installers/00-default-install-options.rc
@@ -0,0 +1,46 @@
+#######################################################################################
+# Copyright ETSI Contributors and Others.
+#
+# 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.
+#######################################################################################
+
+export ASSUME_YES=""
+export APT_PROXY_URL=""
+export K8S_CLUSTER_ENGINE="k3s"
+export DEBUG_INSTALL=""
+export RELEASE="testing-daily"
+export REPOSITORY="testing"
+export REPOSITORY_KEY="OSM%20ETSI%20Release%20Key.gpg"
+export REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/debian"
+export INSTALL_AUX_CLUSTER="y"
+export INSTALL_MGMT_CLUSTER="y"
+export OSM_NAMESPACE=osm
+export OSM_HELM_RELEASE=osm
+export OSM_DOCKER_TAG="testing-daily"
+export DOCKER_USER="opensourcemano"
+export DOCKER_REGISTRY_USER=
+export DOCKER_REGISTRY_PASSWORD=
+export DOCKER_REGISTRY_URL=
+export DOCKER_PROXY_URL=
+export MODULE_DOCKER_TAG=
+export OSM_CLIENT_VERSION="master"
+export OSM_IM_VERSION="master"
+export OSM_HOME_DIR=${OSM_HOME_DIR:-"$HOME/.osm"}
+export CREDENTIALS_DIR="${OSM_HOME_DIR}/.credentials"
+export WORK_REPOS_DIR="${OSM_HOME_DIR}/repos"
+export INSTALL_MINIO=${INSTALL_MINIO:-"y"}
+export KUBECONFIG_AUX_CLUSTER=
+export KUBECONFIG_MGMT_CLUSTER=
+export KUBECONFIG_OSM_CLUSTER=
+export OSM_BEHIND_PROXY=
diff --git a/installers/01-export-osm-install-options.sh b/installers/01-export-osm-install-options.sh
new file mode 100755
index 0000000..4f2ed18
--- /dev/null
+++ b/installers/01-export-osm-install-options.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+#######################################################################################
+# Copyright ETSI Contributors and Others.
+#
+# 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.
+#######################################################################################
+
+set -e
+
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../library/functions.sh"
+source "${HERE}/../library/trap.sh"
+source "${HERE}/../library/logging"
+source "${HERE}/../library/track"
+
+# Saves locally to local environment at OSM home dir folder
+m "Saving local enviroment to OSM_HOME_DIR folder..."
+
+OSM_HOME_DIR=${OSM_HOME_DIR:-"$HOME/.osm"}
+mkdir -p "${OSM_HOME_DIR}"
+
+cat << EOF > "${OSM_HOME_DIR}/user-install-options.rc"
+export ASSUME_YES=${ASSUME_YES}
+export APT_PROXY_URL=${APT_PROXY_URL}
+export K8S_CLUSTER_ENGINE=${K8S_CLUSTER_ENGINE}
+export DEBUG_INSTALL=${DEBUG_INSTALL}
+export RELEASE=${RELEASE}
+export REPOSITORY=${REPOSITORY}
+export REPOSITORY_KEY=${REPOSITORY_KEY}
+export REPOSITORY_BASE=${REPOSITORY_BASE}
+export INSTALL_AUX_CLUSTER=${INSTALL_AUX_CLUSTER}
+export INSTALL_MGMT_CLUSTER=${INSTALL_MGMT_CLUSTER}
+export OSM_NAMESPACE=${OSM_NAMESPACE}
+export OSM_HELM_RELEASE=${OSM_HELM_RELEASE}
+export OSM_DOCKER_TAG=${OSM_DOCKER_TAG}
+export DOCKER_USER=${DOCKER_USER}
+export DOCKER_REGISTRY_USER=${DOCKER_REGISTRY_USER}
+export DOCKER_REGISTRY_PASSWORD=${DOCKER_REGISTRY_PASSWORD}
+export DOCKER_REGISTRY_URL=${DOCKER_REGISTRY_URL}
+export DOCKER_PROXY_URL=${DOCKER_PROXY_URL}
+export MODULE_DOCKER_TAG=${MODULE_DOCKER_TAG}
+export OSM_CLIENT_VERSION=${OSM_CLIENT_VERSION}
+export OSM_IM_VERSION=${OSM_IM_VERSION}
+export OSM_HOME_DIR=${OSM_HOME_DIR}
+export CREDENTIALS_DIR="${OSM_HOME_DIR}/.credentials"
+export WORK_REPOS_DIR="${OSM_HOME_DIR}/repos"
+export INSTALL_MINIO=${INSTALL_MINIO}
+export KUBECONFIG_AUX_CLUSTER=${KUBECONFIG_AUX_CLUSTER}
+export KUBECONFIG_MGMT_CLUSTER=${KUBECONFIG_MGMT_CLUSTER}
+export KUBECONFIG_OSM_CLUSTER=${KUBECONFIG_OSM_CLUSTER}
+export OSM_BEHIND_PROXY=${OSM_BEHIND_PROXY}
+EOF
+
+m "Done."
+echo
diff --git a/installers/10-install-client-tools.sh b/installers/10-install-client-tools.sh
new file mode 100755
index 0000000..1d8c86f
--- /dev/null
+++ b/installers/10-install-client-tools.sh
@@ -0,0 +1,146 @@
+#!/bin/bash
+#
+# 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.
+#
+
+set -e -o pipefail
+
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../library/functions.sh"
+source "${HERE}/../library/trap.sh"
+source "${HERE}/../library/logging"
+source "${HERE}/../library/track"
+
+INSTALL_MINIO=${INSTALL_MINIO:-"y"}
+echo "INSTALL_MINIO=$INSTALL_MINIO"
+
+pushd $HOME
+
+export DEBIAN_FRONTEND=noninteractive
+sudo apt-get update
+
+# Install git, curl, tar
+sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl tar
+
+# Helm
+HELM_VERSION="v3.15.1"
+# Helm releases can be found here: https://github.com/helm/helm/releases
+if ! [[ "$(helm version --short 2>/dev/null)" =~ ^v3.* ]]; then
+ # Helm is not installed. Install helm
+ echo "Helm3 is not installed, installing ..."
+ curl https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz -o helm-${HELM_VERSION}.tar.gz
+ tar -zxvf helm-${HELM_VERSION}.tar.gz
+ sudo mv linux-amd64/helm /usr/local/bin/helm
+ rm -r linux-amd64
+ rm helm-${HELM_VERSION}.tar.gz
+else
+ echo "Helm3 is already installed. Skipping installation..."
+fi
+helm version || FATAL_TRACK k8scluster "Could not obtain helm version. Maybe helm client was not installed"
+helm repo add stable https://charts.helm.sh/stable || FATAL_TRACK k8scluster "Helm repo stable could not be added"
+helm repo update || FATAL_TRACK k8scluster "Helm repo stable could not be updated"
+echo "helm installed"
+
+# Install kubectl client
+K8S_CLIENT_VERSION="v1.29.3"
+curl -LO "https://dl.k8s.io/release/${K8S_CLIENT_VERSION}/bin/linux/amd64/kubectl"
+sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
+rm kubectl
+echo "kubectl installed"
+
+# Install `gnupg` and `gpg` - Typically pre-installed in Ubuntu
+sudo DEBIAN_FRONTEND=noninteractive apt-get install gnupg gpg -y
+echo "gnupg and gpg installed"
+
+# Install `sops`
+curl -LO https://github.com/getsops/sops/releases/download/v3.8.1/sops-v3.8.1.linux.amd64
+sudo mv sops-v3.8.1.linux.amd64 /usr/local/bin/sops
+sudo chmod +x /usr/local/bin/sops
+echo "sops client installed"
+
+# Install `envsubst`
+sudo DEBIAN_FRONTEND=noninteractive apt-get install gettext-base -y
+echo "envsubst installed"
+
+# Install `age`
+AGE_VERSION="v1.1.0"
+curl -LO https://github.com/FiloSottile/age/releases/download/${AGE_VERSION}/age-${AGE_VERSION}-linux-amd64.tar.gz
+tar xvfz age-${AGE_VERSION}-linux-amd64.tar.gz
+sudo mv age/age age/age-keygen /usr/local/bin/
+sudo chmod +x /usr/local/bin/age*
+rm -rf age age-${AGE_VERSION}-linux-amd64.tar.gz
+echo "age installed"
+
+# (Only for Gitea) Install `apg`
+sudo DEBIAN_FRONTEND=noninteractive apt-get install apg -y
+echo "apg installed"
+
+# # (Only for Minio) `kubectl minio` plugin and Minio Client
+MINIO_CLIENT_VERSION="5.0.12"
+if [ -n "${INSTALL_MINIO}" ]; then
+ curl https://github.com/minio/operator/releases/download/v${MINIO_CLIENT_VERSION}/kubectl-minio_${MINIO_CLIENT_VERSION}_linux_amd64 -Lo kubectl-minio
+ curl https://dl.min.io/client/mc/release/linux-amd64/mc -o minioc
+ chmod +x kubectl-minio minioc
+ sudo mv kubectl-minio minioc /usr/local/bin/
+ # (Only for HTTPS Ingress for Minio tenant) Install `openssl`
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install openssl -y
+fi
+echo "minio client installed"
+
+# Flux client
+FLUX_CLI_VERSION="2.4.0"
+curl -s https://fluxcd.io/install.sh | sudo FLUX_VERSION=${FLUX_CLI_VERSION} bash
+# Autocompletion
+. <(flux completion bash)
+echo "flux client installed"
+
+# Argo client
+ARGO_VERSION="v3.5.7"
+curl -sLO https://github.com/argoproj/argo-workflows/releases/download/${ARGO_VERSION}/argo-linux-amd64.gz
+gunzip argo-linux-amd64.gz
+chmod +x argo-linux-amd64
+sudo mv ./argo-linux-amd64 /usr/local/bin/argo
+echo "argo client installed"
+
+# Kustomize
+KUSTOMIZE_VERSION="5.4.3"
+curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash -s -- ${KUSTOMIZE_VERSION}
+sudo install -o root -g root -m 0755 kustomize /usr/local/bin/kustomize
+rm kustomize
+echo "kustomized installed"
+
+# yq
+VERSION=v4.33.3
+BINARY=yq_linux_amd64
+curl -L https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -o yq
+sudo mv yq /usr/local/bin/yq
+sudo chmod +x /usr/local/bin/yq
+echo "yq installed"
+
+# OSM client
+OSM_CLIENT_VERSION=${OSM_CLIENT_VERSION:-"master"}
+OSM_IM_VERSION=${OSM_IM_VERSION:-"master"}
+sudo DEBIAN_FRONTEND=noninteractive apt-get install -y python3 python3-setuptools python3-dev python3-pip
+sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libmagic1
+sudo DEBIAN_FRONTEND=noninteractive apt-get install -y make
+sudo -H python3 -m pip install -U pip
+# Install OSM IM and its dependencies via pip
+python3 -m pip install -r "https://osm.etsi.org/gitweb/?p=osm/IM.git;a=blob_plain;f=requirements.txt;hb=${OSM_IM_VERSION}"
+# Path needs to include $HOME/.local/bin in order to use pyang
+[ "$(which pyang)" = "$HOME/.local/bin/pyang" ] || export PATH=$HOME/.local/bin:${PATH}
+python3 -m pip install "git+https://osm.etsi.org/gerrit/osm/IM.git@${OSM_IM_VERSION}#egg=osm-im" --upgrade
+python3 -m pip install -r "https://osm.etsi.org/gitweb/?p=osm/osmclient.git;a=blob_plain;f=requirements.txt;hb=${OSM_CLIENT_VERSION}"
+python3 -m pip install git+https://osm.etsi.org/gerrit/osm/osmclient.git@${OSM_CLIENT_VERSION}#egg=osmclient
+echo "OSM client installed"
+
+popd
diff --git a/installers/15-install-k8s-cluster.sh b/installers/15-install-k8s-cluster.sh
new file mode 100755
index 0000000..d0f2c4b
--- /dev/null
+++ b/installers/15-install-k8s-cluster.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+#
+# 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.
+#
+
+set -e -o pipefail
+
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../library/functions.sh"
+source "${HERE}/../library/trap.sh"
+source "${HERE}/../library/logging"
+source "${HERE}/../library/track"
+
+source "${HERE}/00-default-install-options.rc"
+[ ! -f "${OSM_HOME_DIR}/user-install-options.rc" ] || source "${OSM_HOME_DIR}/user-install-options.rc"
+
+export K8SCLUSTER_CONFIG_FOLDER=${K8SCLUSTER_CONFIG_FOLDER:-"/etc/osm"}
+export DEFAULT_IP=${OSM_DEFAULT_IP:-"127.0.0.1"}
+
+echo "K8S_CLUSTER_ENGINE=$K8S_CLUSTER_ENGINE"
+if [ "${K8S_CLUSTER_ENGINE}" == "kubeadm" ]; then
+ KUBEADM_INSTALL_OPTS="--debug"
+ ${HERE}/cluster/kubeadm/install_kubeadm_cluster.sh ${KUBEADM_INSTALL_OPTS} || \
+ FATAL_TRACK k8scluster "install_kubeadm_cluster.sh failed"
+ K8SCLUSTER_ADDONS_INSTALL_OPTS="--all"
+ ${HERE}/cluster/addons/install_cluster_addons.sh ${K8SCLUSTER_ADDONS_INSTALL_OPTS} || \
+ FATAL_TRACK k8scluster "install_cluster_addons.sh failed for kubeadm cluster"
+elif [ "${K8S_CLUSTER_ENGINE}" == "k3s" ]; then
+ export K3S_PUBLIC_IP=
+ [ "${OSM_K8S_EXTERNAL_IP}" != "${OSM_DEFAULT_IP}" ] && K3S_PUBLIC_IP=${OSM_K8S_EXTERNAL_IP}
+ # The K3s installation script will automatically take the HTTP_PROXY, HTTPS_PROXY and NO_PROXY,
+ # as well as the CONTAINERD_HTTP_PROXY, CONTAINERD_HTTPS_PROXY and CONTAINERD_NO_PROXY variables
+ # from the shell, if they are present, and write them to the environment file of k3s systemd service,
+ ${HERE}/cluster/k3s/install_k3s_cluster.sh || \
+ FATAL_TRACK k8scluster "install_k3s_cluster.sh failed"
+ K8SCLUSTER_ADDONS_INSTALL_OPTS="--certmgr --nginx"
+ ${HERE}/cluster/addons/install_cluster_addons.sh ${K8SCLUSTER_ADDONS_INSTALL_OPTS} || \
+ FATAL_TRACK k8scluster "install_cluster_addons.sh failed for k3s cluster"
+fi
+echo "Updating fsnotify settings of the system kernel"
+sudo bash -c "sysctl -w fs.inotify.max_user_watches=699050 > /etc/sysctl.d/99-custom-osm-sysctl.conf"
+sudo bash -c "sysctl -w fs.inotify.max_user_instances=10922 >> /etc/sysctl.d/99-custom-osm-sysctl.conf"
+sudo bash -c "sysctl -w fs.inotify.max_queued_events=1398101 >> /etc/sysctl.d/99-custom-osm-sysctl.conf"
+
+echo "K8s cluster installed"
diff --git a/installers/mgmt-cluster/00-base-config.rc b/installers/20-base-config.rc
similarity index 87%
rename from installers/mgmt-cluster/00-base-config.rc
rename to installers/20-base-config.rc
index de0d4db..68c9353 100644
--- a/installers/mgmt-cluster/00-base-config.rc
+++ b/installers/20-base-config.rc
@@ -16,10 +16,10 @@
#######################################################################################
# Location where credentials should be saved
-export CREDENTIALS_DIR=${CREDENTIALS_DIR:-../../.credentials}; export CREDENTIALS_DIR=$(readlink -f "${CREDENTIALS_DIR}")
+export CREDENTIALS_DIR=${CREDENTIALS_DIR:-${OSM_HOME_DIR}/.credentials}; export CREDENTIALS_DIR=$(readlink -f "${CREDENTIALS_DIR}")
# Base location where repos are cloned
-export WORK_REPOS_DIR=${WORK_REPOS_DIR:-../../repos}; export WORK_REPOS_DIR=$(readlink -f "${WORK_REPOS_DIR}")
+export WORK_REPOS_DIR=${WORK_REPOS_DIR:-${OSM_HOME_DIR}/repos}; export WORK_REPOS_DIR=$(readlink -f "${WORK_REPOS_DIR}")
# Locations where each relevant repo is cloned
export FLEET_REPO_DIR=${FLEET_REPO_DIR:-"${WORK_REPOS_DIR}/fleet-osm"}
diff --git a/installers/mgmt-cluster/01-provision-aux-svc.sh b/installers/20-deploy-aux-svc-cluster.sh
similarity index 69%
rename from installers/mgmt-cluster/01-provision-aux-svc.sh
rename to installers/20-deploy-aux-svc-cluster.sh
index ddd3cbf..3faca66 100755
--- a/installers/mgmt-cluster/01-provision-aux-svc.sh
+++ b/installers/20-deploy-aux-svc-cluster.sh
@@ -20,10 +20,26 @@
# Warning!!!: Remember to select the desired kubeconfig profile before launching this script
-export HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
-source "${HERE}/library/functions.sh"
-source "${HERE}/library/trap.sh"
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../library/functions.sh"
+source "${HERE}/../library/trap.sh"
+pushd $HERE > /dev/null
+
+source "${HERE}/00-default-install-options.rc"
+[ ! -f "${OSM_HOME_DIR}/user-install-options.rc" ] || source "${OSM_HOME_DIR}/user-install-options.rc"
+echo "Loading env variables from 20-base-config.rc"
+source "${HERE}/20-base-config.rc"
+
+# TODO: move this to a parent script that creates the VM
+mkdir -p "${OSM_HOME_DIR}/clusters"
+if [ -n "${KUBECONFIG_AUX_CLUSTER}" ]; then
+ cp "${KUBECONFIG_AUX_CLUSTER}" "${OSM_HOME_DIR}/clusters/kubeconfig-aux-svc.yaml"
+else
+ cp "${HOME}/.kube/config" "${OSM_HOME_DIR}/clusters/kubeconfig-aux-svc.yaml"
+fi
+
+export KUBECONFIG="${OSM_HOME_DIR}/clusters/kubeconfig-aux-svc.yaml"
############################ NGINX Ingress controller
m "\n#####################################################################" "${CYAN}"
@@ -53,12 +69,17 @@
m "#####################################################################\n" "${CYAN}"
# Enter the Gitea folder
-pushd gitea > /dev/null
+# TODO: Should we use pushd $HERE/gitea instead of pushd gitea?
+pushd "${HERE}/gitea" > /dev/null
# Install Gitea and expose web with Ingress
export GITEA_CHART_VALUES_FILE=${GITEA_CHART_VALUES_FILE:-values-standalone-ingress.yaml}
./ALL-IN-ONE-Gitea-install.sh
+# Setup Git user and SSH keys
+m "\nSetting up Git user and SSH keys..."
+./20-setup-gituser-and-sshkeygen.sh
+
# Provision for OSM
m "\nProvisioning Gitea for OSM use..."
source "${CREDENTIALS_DIR}/gitea_environment.rc"
@@ -75,6 +96,8 @@
m "(3/3) Installing Minio..." "${CYAN}"
m "#####################################################################\n" "${CYAN}"
+INSTALL_MINIO=${INSTALL_MINIO:-"y"}
+echo "INSTALL_MINIO=$INSTALL_MINIO"
if [ -n "${INSTALL_MINIO}" ]; then
# Enter the Minio folder
pushd minio > /dev/null
@@ -84,3 +107,12 @@
popd > /dev/null
fi
#####################################################################
+
+
+# Source tokens
+source "${CREDENTIALS_DIR}/gitea_tokens.rc"
+
+# Add the local Git user to Gitea as a profile, upload the public SSH key (to allow SSH operations), and add the user as "collaborator" to both repos
+"${HERE}/gitea/91-provision-local-git-user.sh"
+
+popd > /dev/null
diff --git a/installers/mgmt-cluster/03-provision-mgmt-cluster.sh b/installers/30-deploy-mgmt-cluster.sh
similarity index 85%
rename from installers/mgmt-cluster/03-provision-mgmt-cluster.sh
rename to installers/30-deploy-mgmt-cluster.sh
index 7b8fbf6..f99c6f9 100755
--- a/installers/mgmt-cluster/03-provision-mgmt-cluster.sh
+++ b/installers/30-deploy-mgmt-cluster.sh
@@ -20,20 +20,32 @@
# Warning!!!: Remember to select the desired kubeconfig profile before launching this script
-export HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
-source "${HERE}/library/functions.sh"
-source "${HERE}/library/trap.sh"
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../library/functions.sh"
+source "${HERE}/../library/trap.sh"
+source "${HERE}/00-default-install-options.rc"
+[ ! -f "${OSM_HOME_DIR}/user-install-options.rc" ] || source "${OSM_HOME_DIR}/user-install-options.rc"
+echo "Loading env variables from 20-base-config.rc"
+source "${HERE}/20-base-config.rc"
+source "${CREDENTIALS_DIR}/git_environment.rc"
+
+# TODO: check git config
+# TODO: move this to a parent script that creates the VM
+mkdir -p "${OSM_HOME_DIR}/clusters"
+if [ -n "${KUBECONFIG_MGMT_CLUSTER}" ]; then
+ cp "${KUBECONFIG_MGMT_CLUSTER}" "${OSM_HOME_DIR}/clusters/kubeconfig-mgmt.yaml"
+else
+ cp "${HOME}/.kube/config" "${OSM_HOME_DIR}/clusters/kubeconfig-mgmt.yaml"
+fi
+
+export KUBECONFIG="${OSM_HOME_DIR}/clusters/kubeconfig-mgmt.yaml"
############################ Clone repos
m "\n#####################################################################" "${CYAN}"
m "(1/8) Cloning relevant repos..." "${CYAN}"
m "#####################################################################\n" "${CYAN}"
-# Load Gitea credentials
-source "${CREDENTIALS_DIR}/gitea_environment.rc"
-source "${CREDENTIALS_DIR}/gitea_tokens.rc"
-
# clone the relevant repos to well-known local folders
"${HERE}/flux/scripts/clone-relevant-repos.sh"
@@ -75,7 +87,7 @@
m "(4/8) Creating base kustomizations and default cluster profiles..." "${CYAN}"
m "#####################################################################\n" "${CYAN}"
-TEMPLATES_DIR="flux/templates/fleet/clusters/_management"
+TEMPLATES_DIR="${HERE}/flux/templates/fleet/clusters/_management"
TEMPLATES_DIR=$(readlink -f "${TEMPLATES_DIR}")
# ARGUMENTS:
@@ -99,7 +111,7 @@
m "(5/8) Populating the SW-Catalogs repo folder..." "${CYAN}"
m "#####################################################################\n" "${CYAN}"
-TEMPLATES_DIR="flux/templates/sw-catalogs"
+TEMPLATES_DIR="${HERE}/flux/templates/sw-catalogs"
TEMPLATES_DIR=$(readlink -f "${TEMPLATES_DIR}")
# rsync -varhP "${TEMPLATES_DIR}" "${SW_CATALOGS_REPO_DIR}/"
cp -r "${TEMPLATES_DIR}"/* "${SW_CATALOGS_REPO_DIR}/"
diff --git a/installers/40-deploy-osm.sh b/installers/40-deploy-osm.sh
new file mode 100755
index 0000000..82dc5d4
--- /dev/null
+++ b/installers/40-deploy-osm.sh
@@ -0,0 +1,124 @@
+#!/bin/bash
+#
+# 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.
+#
+
+set -e -o pipefail
+
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../library/functions.sh"
+source "${HERE}/../library/trap.sh"
+source "${HERE}/../library/logging"
+source "${HERE}/../library/track"
+
+source "${HERE}/00-default-install-options.rc"
+[ ! -f "${OSM_HOME_DIR}/user-install-options.rc" ] || source "${OSM_HOME_DIR}/user-install-options.rc"
+source "${CREDENTIALS_DIR}/git_environment.rc"
+
+OSM_HELM_WORK_DIR="/etc/osm/helm"
+OSM_K8S_EXTERNAL_IP=${OSM_K8S_EXTERNAL_IP:-""}
+KUBECONFIG_AUX_CLUSTER_FILE="${OSM_HOME_DIR}/clusters/kubeconfig-aux-svc.yaml"
+KUBECONFIG_MGMT_CLUSTER_FILE="${OSM_HOME_DIR}/clusters/kubeconfig-mgmt.yaml"
+[ "${HERE}" == "/usr/share/osm-devops/installers" ] || OSM_HELM_UPDATE_DEPENDENCIES="y"
+OSM_GITOPS_ENABLED=${INSTALL_MGMT_CLUSTER:-"y"}
+
+# TODO: move this to a parent script that creates the VM
+mkdir -p "${OSM_HOME_DIR}/clusters"
+if [ -n "${KUBECONFIG_OSM_CLUSTER}" ]; then
+ cp "${KUBECONFIG_OSM_CLUSTER}" "${OSM_HOME_DIR}/clusters/kubeconfig-osm.yaml"
+else
+ cp "${HOME}/.kube/config" "${OSM_HOME_DIR}/clusters/kubeconfig-osm.yaml"
+fi
+
+export KUBECONFIG="${OSM_HOME_DIR}/clusters/kubeconfig-osm.yaml"
+
+# Create folder to store helm values
+sudo mkdir -p ${OSM_HELM_WORK_DIR}
+
+# Saving secrets
+echo "Creating namespace ${OSM_NAMESPACE}"
+kubectl create ns ${OSM_NAMESPACE}
+echo "Saving age keys in OSM cluster"
+kubectl -n ${OSM_NAMESPACE} create secret generic mgmt-cluster-age-keys --from-file=privkey="${CREDENTIALS_DIR}/age.mgmt.key" --from-file=pubkey="${CREDENTIALS_DIR}/age.mgmt.pub"
+echo "Creating secrets with kubeconfig files"
+kubectl -n ${OSM_NAMESPACE} create secret generic auxcluster-secret --from-file=kubeconfig="${KUBECONFIG_AUX_CLUSTER_FILE}"
+kubectl -n ${OSM_NAMESPACE} create secret generic mgmtcluster-secret --from-file=kubeconfig="${KUBECONFIG_MGMT_CLUSTER_FILE}"
+
+# Update helm dependencies
+[ -n "${OSM_HELM_UPDATE_DEPENDENCIES}" ] && \
+ echo "Updating helm dependencies" && \
+ helm dependency update "${HERE}/helm/osm"
+
+# Generate helm values to be passed with --set
+OSM_HELM_OPTS=""
+# OSM_HELM_OPTS="${OSM_HELM_OPTS} --set nbi.useOsmSecret=false"
+
+# TODO: review if next line is really needed or should be conditional to DOCKER_REGISTRY_URL not empty
+# [ -n "${DOCKER_REGISTRY_URL}" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.image.repository=${DOCKER_REGISTRY_URL}${DOCKER_USER}"
+OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.image.repositoryBase=${DOCKER_REGISTRY_URL}${DOCKER_USER}"
+[ ! "$OSM_DOCKER_TAG" == "testing-daily" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set-string global.image.tag=${OSM_DOCKER_TAG}"
+[ ! "$OSM_DOCKER_TAG" == "testing-daily" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.server.sidecarContainers.prometheus-config-sidecar.image=${DOCKER_REGISTRY_URL}${DOCKER_USER}/prometheus:${OSM_DOCKER_TAG}"
+
+OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.hostname=${OSM_K8S_EXTERNAL_IP}.nip.io"
+OSM_HELM_OPTS="${OSM_HELM_OPTS} --set grafana.ingress.hosts={grafana.${OSM_K8S_EXTERNAL_IP}.nip.io}"
+OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.server.ingress.hosts={prometheus.${OSM_K8S_EXTERNAL_IP}.nip.io}"
+# OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.alertmanager.ingress.hosts={alertmanager.${OSM_K8S_EXTERNAL_IP}.nip.io}"
+if [ -z "${OSM_GITOPS_ENABLED}" ]; then
+ OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.enabled=false"
+else
+ OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.fleetRepoUrl=${FLEET_REPO_HTTP_URL}"
+ OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.swcatalogsRepoUrl=${SW_CATALOGS_REPO_HTTP_URL}"
+ # TODO: evaluate if we need to set two git user names, one for fleet and one for sw-catalogs
+ OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.gitUser=${FLEET_REPO_GIT_USERNAME}"
+ AGE_MGMT_PUBKEY=$(tr -d '\n' < ${CREDENTIALS_DIR}/age.mgmt.pub)
+ OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.pubkey=${AGE_MGMT_PUBKEY}"
+fi
+
+if [ -n "${OSM_BEHIND_PROXY}" ]; then
+ OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.behindHttpProxy=true"
+ [ -n "${HTTP_PROXY}" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.httpProxy.HTTP_PROXY=\"${HTTP_PROXY}\""
+ [ -n "${HTTPS_PROXY}" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.httpProxy.HTTPS_PROXY=\"${HTTPS_PROXY}\""
+ if [ -n "${NO_PROXY}" ]; then
+ if [[ ! "${NO_PROXY}" =~ .*".svc".* ]]; then
+ NO_PROXY="${NO_PROXY},.svc"
+ fi
+ if [[ ! "${NO_PROXY}" =~ .*".cluster.local".* ]]; then
+ NO_PROXY="${NO_PROXY},.cluster.local"
+ fi
+ OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.httpProxy.NO_PROXY=\"${NO_PROXY//,/\,}\""
+ fi
+fi
+
+echo "helm upgrade --install -n $OSM_NAMESPACE --create-namespace $OSM_HELM_RELEASE ${HERE}/helm/osm ${OSM_HELM_OPTS}"
+helm upgrade --install -n $OSM_NAMESPACE --create-namespace $OSM_HELM_RELEASE ${HERE}/helm/osm ${OSM_HELM_OPTS}
+# Override existing values.yaml with the final values.yaml used to install OSM
+helm -n $OSM_NAMESPACE get values $OSM_HELM_RELEASE | sudo tee -a ${OSM_HELM_WORK_DIR}/osm-values.yaml
+
+# Check OSM health state
+echo -e "Checking OSM health state..."
+set +e
+${HERE}/45-osm-health.sh || \
+(echo -e "OSM is not healthy, but will probably converge to a healthy state soon." && \
+echo -e "Check OSM status with: kubectl -n ${OSM_NAMESPACE} get all" && \
+track healthchecks osm_unhealthy didnotconverge)
+track healthchecks after_healthcheck_ok
+set -e
+
+echo -e "Saving OSM enviroment to credentials folder..."
+OSM_HOSTNAME=$(kubectl get --namespace osm -o jsonpath="{.spec.rules[0].host}" ingress nbi-ingress)
+# OSM_HOSTNAME="nbi.${OSM_K8S_EXTERNAL_IP}.nip.io:443"
+echo -e "OSM HOSTNAME: ${OSM_HOSTNAME}"
+
+cat << EOF > "${CREDENTIALS_DIR}/osm_environment.rc"
+export OSM_HOSTNAME="${OSM_HOSTNAME}"
+EOF
diff --git a/installers/45-osm-health.sh b/installers/45-osm-health.sh
new file mode 100755
index 0000000..c5d9cd8
--- /dev/null
+++ b/installers/45-osm-health.sh
@@ -0,0 +1,110 @@
+#!/usr/bin/env bash
+
+# Copyright 2020 Telefónica Investigación y Desarrollo S.A.U.
+#
+# 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.
+
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+
+source "${HERE}/00-default-install-options.rc"
+[ ! -f "${OSM_HOME_DIR}/user-install-options.rc" ] || source "${OSM_HOME_DIR}/user-install-options.rc"
+source "${CREDENTIALS_DIR}/git_environment.rc"
+export KUBECONFIG="${OSM_HOME_DIR}/clusters/kubeconfig-osm.yaml"
+
+# Default values
+sampling_period=5 # seconds
+time_for_readiness=1 # minutes ready
+time_for_failure=7 # minutes broken
+
+oks_threshold=$((time_for_readiness*60/${sampling_period})) # No. ok samples to declare the system ready
+failures_threshold=$((time_for_failure*60/${sampling_period})) # No. nok samples to declare the system broken
+failures_in_a_row=0
+oks_in_a_row=0
+
+
+# Show status of the OSM services deployed with helm
+echo "helm -n ${OSM_NAMESPACE} list"
+helm -n ${OSM_NAMESPACE} list
+echo "helm -n ${OSM_NAMESPACE} status ${OSM_HELM_RELEASE}"
+helm -n ${OSM_NAMESPACE} status ${OSM_HELM_RELEASE}
+
+####################################################################################
+# Loop to check system readiness
+####################################################################################
+while [[ (${failures_in_a_row} -lt ${failures_threshold}) && (${oks_in_a_row} -lt ${oks_threshold}) ]]
+do
+
+ # State of Deployments
+ DEPLOYMENTS_STATE=$(kubectl get deployment -n ${OSM_NAMESPACE} --no-headers 2>&1)
+ DEPLOYMENTS_READY=$(echo "${DEPLOYMENTS_STATE}" | awk '$2=="1/1" && $4=="1" {printf ("%20s\t%s\t%s\n", $1, $2, $4)}')
+ DEPLOYMENTS_NOT_READY=$(echo "${DEPLOYMENTS_STATE}" | awk '$2!="1/1" || $4!="1" {printf ("%20s\t%s\t%s\n", $1, $2, $4)}')
+ COUNT_DEPLOYMENTS_READY=$(echo "${DEPLOYMENTS_READY}" | grep -v -e '^$' | wc -l || true)
+ COUNT_DEPLOYMENTS_NOT_READY=$(echo "${DEPLOYMENTS_NOT_READY}" | grep -v -e '^$' | wc -l || true)
+
+ # State of Statefulsets
+ STS_STATE=$(kubectl get statefulset -n ${OSM_NAMESPACE} --no-headers 2>&1)
+ STS_READY=$(echo "${STS_STATE}" | awk '$2=="1/1" || $2=="2/2" || $2=="3/3" {printf ("%20s\t%s\t%s\n", $1, $2, $4)}')
+ STS_NOT_READY=$(echo "${STS_STATE}" | awk '$2!="1/1" && $2!="2/2" && $2!="3/3" {printf ("%20s\t%s\t%s\n", $1, $2, $4)}')
+ COUNT_STS_READY=$(echo "${STS_READY}" | grep -v -e '^$' | wc -l || true)
+ COUNT_STS_NOT_READY=$(echo "${STS_NOT_READY}" | grep -v -e '^$' | wc -l || true)
+
+ # OK sample
+ if [[ $((${COUNT_DEPLOYMENTS_NOT_READY}+${COUNT_STS_NOT_READY})) -eq 0 ]]
+ then
+ ((++oks_in_a_row))
+ failures_in_a_row=0
+ echo -ne ===\> Successful checks: "${oks_in_a_row}"/${oks_threshold}\\r
+ # NOK sample
+ else
+ ((++failures_in_a_row))
+ oks_in_a_row=0
+ echo
+ echo Bootstraping... "${failures_in_a_row}" attempts of ${failures_threshold}
+
+ # Reports failed deployments
+ if [[ "${COUNT_DEPLOYMENTS_NOT_READY}" -ne 0 ]]
+ then
+ echo ${COUNT_DEPLOYMENTS_NOT_READY} of $((${COUNT_DEPLOYMENTS_NOT_READY}+${COUNT_DEPLOYMENTS_READY})) deployments starting:
+ echo "${DEPLOYMENTS_NOT_READY}"
+ echo
+ fi
+
+ # Reports failed statefulsets
+ if [[ "${COUNT_STS_NOT_READY}" -ne 0 ]]
+ then
+ echo ${COUNT_STS_NOT_READY} of $((${COUNT_STS_NOT_READY}+${COUNT_STS_READY})) statefulsets starting:
+ echo "${STS_NOT_READY}"
+ echo
+ fi
+ fi
+
+ #------------ NEXT SAMPLE
+ sleep ${sampling_period}
+
+done
+
+
+####################################################################################
+# OUTCOME
+####################################################################################
+if [[ (${failures_in_a_row} -ge ${failures_threshold}) ]]
+then
+ echo
+ echo SYSTEM IS BROKEN
+ exit 1
+else
+ echo
+ echo SYSTEM IS READY
+fi
+
+exit 0
diff --git a/installers/50-provision-osm.sh b/installers/50-provision-osm.sh
new file mode 100755
index 0000000..2f93b00
--- /dev/null
+++ b/installers/50-provision-osm.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# 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.
+#
+
+set -e -o pipefail
+set -x
+
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../library/functions.sh"
+source "${HERE}/../library/trap.sh"
+source "${HERE}/../library/logging"
+source "${HERE}/../library/track"
+
+source "${HERE}/00-default-install-options.rc"
+[ ! -f "${OSM_HOME_DIR}/user-install-options.rc" ] || source "${OSM_HOME_DIR}/user-install-options.rc"
+source "${CREDENTIALS_DIR}/osm_environment.rc"
+
+KUBECONFIG_OSM_CLUSTER_FILE="${OSM_HOME_DIR}/clusters/kubeconfig-osm.yaml"
+
+[ -n "${OSM_HOSTNAME}" ] || FATAL "OSM_HOSTNAME is not set" "${OSM_HOSTNAME}" \
+ "Please set the OSM_HOSTNAME environment variable to the hostname of your OSM instance."
+[ "$(which osm)" = "$HOME/.local/bin/osm" ] || export PATH=$HOME/.local/bin:${PATH}
+osm --hostname ${OSM_HOSTNAME} --all-projects vim-create \
+ --name _system-osm-vim \
+ --account_type dummy \
+ --auth_url http://dummy \
+ --user osm --password osm --tenant osm \
+ --description "dummy" \
+ --config '{management_network_name: mgmt}'
+osm --hostname ${OSM_HOSTNAME} --all-projects k8scluster-add \
+ --creds ${KUBECONFIG_OSM_CLUSTER_FILE} \
+ --vim _system-osm-vim \
+ --k8s-nets '{"net1": null}' \
+ --version '1.29' \
+ --description "OSM Internal Cluster" \
+ _system-osm-k8s
diff --git a/installers/install_cluster_addons.sh b/installers/cluster/addons/install_cluster_addons.sh
similarity index 92%
rename from installers/install_cluster_addons.sh
rename to installers/cluster/addons/install_cluster_addons.sh
index 8f42c7f..1bb9162 100755
--- a/installers/install_cluster_addons.sh
+++ b/installers/cluster/addons/install_cluster_addons.sh
@@ -63,8 +63,8 @@
function configure_ipaddresspool_metallb() {
[ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- echo "Creating IP address pool manifest: ${OSM_CLUSTER_WORK_DIR}/metallb-ipaddrpool.yaml"
- [ ! -d "$OSM_CLUSTER_WORK_DIR" ] && sudo mkdir -p $OSM_CLUSTER_WORK_DIR
+ echo "Creating IP address pool manifest: ${K8SCLUSTER_CONFIG_FOLDER}/metallb-ipaddrpool.yaml"
+ [ ! -d "$K8SCLUSTER_CONFIG_FOLDER" ] && sudo mkdir -p $K8SCLUSTER_CONFIG_FOLDER
METALLB_IP_RANGE="$DEFAULT_IP/32"
echo "apiVersion: metallb.io/v1beta1
kind: IPAddressPool
@@ -73,9 +73,9 @@
namespace: metallb-system
spec:
addresses:
- - ${METALLB_IP_RANGE}" | sudo tee -a ${OSM_CLUSTER_WORK_DIR}/metallb-ipaddrpool.yaml
- echo "Applying IP address pool manifest: kubectl apply -f ${OSM_CLUSTER_WORK_DIR}/metallb-ipaddrpool.yaml"
- kubectl apply -f ${OSM_CLUSTER_WORK_DIR}/metallb-ipaddrpool.yaml || FATAL_TRACK k8scluster "Cannot create IP address Pool in MetalLB"
+ - ${METALLB_IP_RANGE}" | sudo tee -a ${K8SCLUSTER_CONFIG_FOLDER}/metallb-ipaddrpool.yaml
+ echo "Applying IP address pool manifest: kubectl apply -f ${K8SCLUSTER_CONFIG_FOLDER}/metallb-ipaddrpool.yaml"
+ kubectl apply -f ${K8SCLUSTER_CONFIG_FOLDER}/metallb-ipaddrpool.yaml || FATAL_TRACK k8scluster "Cannot create IP address Pool in MetalLB"
[ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
}
@@ -216,17 +216,8 @@
}
# main
-while getopts ":D:d:i:-: " o; do
+while getopts ":-: " o; do
case "${o}" in
- i)
- DEFAULT_IP="${OPTARG}"
- ;;
- d)
- OSM_CLUSTER_WORK_DIR="${OPTARG}"
- ;;
- D)
- OSM_DEVOPS="${OPTARG}"
- ;;
-)
[ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="y" && continue
[ "${OPTARG}" == "storageclass" ] && INSTALL_STORAGECLASS="y" && continue
@@ -253,19 +244,18 @@
DEBUG_INSTALL=${DEBUG_INSTALL:-}
DEFAULT_IP=${DEFAULT_IP:-}
-OSM_DEVOPS=${OSM_DEVOPS:-}
-OSM_CLUSTER_WORK_DIR=${OSM_CLUSTER_WORK_DIR:-}
+K8SCLUSTER_CONFIG_FOLDER=${K8SCLUSTER_CONFIG_FOLDER:-}
INSTALL_STORAGECLASS=${INSTALL_STORAGECLASS:-}
INSTALL_METALLB=${INSTALL_METALLB:-}
INSTALL_CERTMANAGER=${INSTALL_CERTMANAGER:-}
INSTALL_NGINX=${INSTALL_NGINX:-}
echo "DEBUG_INSTALL=${DEBUG_INSTALL}"
echo "DEFAULT_IP=${DEFAULT_IP}"
-echo "OSM_DEVOPS=${OSM_DEVOPS}"
-echo "OSM_CLUSTER_WORK_DIR=${OSM_CLUSTER_WORK_DIR}"
+echo "K8SCLUSTER_CONFIG_FOLDER=${K8SCLUSTER_CONFIG_FOLDER}"
-source $OSM_DEVOPS/common/logging
-source $OSM_DEVOPS/common/track
+export HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../../../library/logging"
+source "${HERE}/../../../library/track"
if [ -n "${INSTALL_STORAGECLASS}" ]; then
install_k8s_storageclass
diff --git a/installers/install_k3s_cluster.sh b/installers/cluster/k3s/install_k3s_cluster.sh
similarity index 83%
rename from installers/install_k3s_cluster.sh
rename to installers/cluster/k3s/install_k3s_cluster.sh
index 68e61a6..0368b64 100755
--- a/installers/install_k3s_cluster.sh
+++ b/installers/cluster/k3s/install_k3s_cluster.sh
@@ -172,15 +172,6 @@
[ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
}
-# Install kubectl client
-function install_kubectl() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- curl -LO "https://dl.k8s.io/release/${K8S_CLIENT_VERSION}/bin/linux/amd64/kubectl"
- sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- rm kubectl
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
# Initializes kubeconfig file
function save_kubeconfig() {
[ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
@@ -198,52 +189,8 @@
[ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
}
-# main
-while getopts ":D:i:e:p:d:u:P:-: " o; do
- case "${o}" in
- i)
- DEFAULT_IP="${OPTARG}"
- ;;
- e)
- K3S_PUBLIC_IP="${OPTARG}"
- ;;
- D)
- OSM_DEVOPS="${OPTARG}"
- ;;
- p)
- DOCKER_PROXY_URL="${OPTARG}"
- ;;
- d)
- DOCKER_REGISTRY_URL="${OPTARG}"
- ;;
- u)
- DOCKER_REGISTRY_USER="${OPTARG}"
- ;;
- P)
- DOCKER_REGISTRY_PASSWORD="${OPTARG}"
- ;;
- -)
- [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="y" && continue
- echo -e "Invalid option: '--$OPTARG'\n" >&2
- exit 1
- ;;
- :)
- echo "Option -$OPTARG requires an argument" >&2
- exit 1
- ;;
- \?)
- echo -e "Invalid option: '-$OPTARG'\n" >&2
- exit 1
- ;;
- *)
- exit 1
- ;;
- esac
-done
-
DEBUG_INSTALL=${DEBUG_INSTALL:-}
DEFAULT_IP=${DEFAULT_IP:-"127.0.0.1"}
-OSM_DEVOPS=${OSM_DEVOPS:-"/usr/share/osm-devops"}
DOCKER_PROXY_URL=${DOCKER_PROXY_URL:-}
DOCKER_REGISTRY_URL=${DOCKER_REGISTRY_URL:-}
DOCKER_REGISTRY_USER=${DOCKER_REGISTRY_USER:-}
@@ -251,24 +198,21 @@
K3S_PUBLIC_IP=${K3S_PUBLIC_IP:-}
echo "DEBUG_INSTALL=${DEBUG_INSTALL}"
echo "DEFAULT_IP=${DEFAULT_IP}"
-echo "OSM_DEVOPS=${OSM_DEVOPS}"
echo "DOCKER_PROXY_URL=${DOCKER_PROXY_URL}"
echo "DOCKER_REGISTRY_URL=${DOCKER_REGISTRY_URL}"
echo "DOCKER_REGISTRY_USER=${DOCKER_REGISTRY_USER}"
echo "K3S_PUBLIC_IP=${K3S_PUBLIC_IP}"
-echo "HOME=$HOME"
-source $OSM_DEVOPS/common/logging
-source $OSM_DEVOPS/common/track
+export HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../../../library/logging"
+source "${HERE}/../../../library/track"
configure_registry
install_k3s
+save_kubeconfig
track k8scluster k3s_install_ok
check_for_readiness
track k8scluster k3s_node_ready_ok
# update_service_nodeport_range
# check_for_readiness
-# track k8scluster k3s_update_nodeport_range_ok
-install_kubectl
-save_kubeconfig
track k8scluster k3s_creds_ok
diff --git a/installers/install_kubeadm_cluster.sh b/installers/cluster/kubeadm/install_kubeadm_cluster.sh
similarity index 85%
rename from installers/install_kubeadm_cluster.sh
rename to installers/cluster/kubeadm/install_kubeadm_cluster.sh
index be97814..ecca8dc 100755
--- a/installers/install_kubeadm_cluster.sh
+++ b/installers/cluster/kubeadm/install_kubeadm_cluster.sh
@@ -91,7 +91,7 @@
CNI_DIR="$(mktemp -d -q --tmpdir "flannel.XXXXXX")"
trap 'rm -rf "${CNI_DIR}"' EXIT
KUBE_FLANNEL_FILE_URL="https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml"
- wget --retry-on-host-error --retry-on-http-error 404,429,503 --tries=5 "${KUBE_FLANNEL_FILE_URL}" -P $CNI_DIR
+ curl -f --retry 5 --retry-delay 2 --retry-connrefused "${KUBE_FLANNEL_FILE_URL}" -o "$CNI_DIR/$(basename ${KUBE_FLANNEL_FILE_URL})"
[ ! -f $CNI_DIR/kube-flannel.yml ] && FATAL_TRACK k8scluster "Cannot Install Flannel because $CNI_DIR/kube-flannel.yml was not found. Maybe the file ${KUBE_FLANNEL_FILE_URL} is temporarily not accessible"
kubectl apply -f $CNI_DIR
[ $? -ne 0 ] && FATAL_TRACK k8scluster "Cannot Install Flannel"
@@ -133,14 +133,8 @@
}
# main
-while getopts ":D:d:-: " o; do
+while getopts ":-: " o; do
case "${o}" in
- d)
- OSM_CLUSTER_WORK_DIR="${OPTARG}"
- ;;
- D)
- OSM_DEVOPS="${OPTARG}"
- ;;
-)
[ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="y" && continue
echo -e "Invalid option: '--$OPTARG'\n" >&2
@@ -161,25 +155,24 @@
done
DEBUG_INSTALL=${DEBUG_INSTALL:-}
-OSM_DEVOPS=${OSM_DEVOPS:-"/usr/share/osm-devops"}
-OSM_CLUSTER_WORK_DIR=${OSM_CLUSTER_WORK_DIR:-"/etc/osm"}
+K8SCLUSTER_CONFIG_FOLDER=${K8SCLUSTER_CONFIG_FOLDER:-"/etc/osm"}
echo "DEBUG_INSTALL=$DEBUG_INSTALL"
-echo "OSM_DEVOPS=$OSM_DEVOPS"
-echo "OSM_CLUSTER_WORK_DIR=$OSM_CLUSTER_WORK_DIR"
+echo "K8SCLUSTER_CONFIG_FOLDER=$K8SCLUSTER_CONFIG_FOLDER"
echo "HOME=$HOME"
-source $OSM_DEVOPS/common/logging
-source $OSM_DEVOPS/common/track
+export HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+source "${HERE}/../../../library/logging"
+source "${HERE}/../../../library/track"
echo "Creating folders for installation"
-[ ! -d "$OSM_CLUSTER_WORK_DIR" ] && sudo mkdir -p $OSM_CLUSTER_WORK_DIR
-echo "Copying kubeadm-config from $OSM_DEVOPS/installers/kubeadm-config.yaml to $OSM_CLUSTER_WORK_DIR/kubeadm-config.yaml"
-sudo cp -b $OSM_DEVOPS/installers/kubeadm-config.yaml $OSM_CLUSTER_WORK_DIR/kubeadm-config.yaml
+[ ! -d "$K8SCLUSTER_CONFIG_FOLDER" ] && sudo mkdir -p $K8SCLUSTER_CONFIG_FOLDER
+echo "Copying kubeadm-config from ${HERE}/installers/kubeadm-config.yaml to $K8SCLUSTER_CONFIG_FOLDER/kubeadm-config.yaml"
+sudo cp -b "${HERE}/kubeadm-config.yaml" "$K8SCLUSTER_CONFIG_FOLDER/kubeadm-config.yaml"
install_kube
check_and_track_kube_install
-init_kubeadm $OSM_CLUSTER_WORK_DIR/kubeadm-config.yaml
+init_kubeadm "${K8SCLUSTER_CONFIG_FOLDER}/kubeadm-config.yaml"
save_kubeconfig
check_and_track_init_k8s
@@ -192,9 +185,5 @@
# Clean existing namespace (idempotent installation)
remove_k8s_namespace osm
-# install_helm has been moved to install_helm_client.sh, run from full_install_osm.sh,
-# but tracking is still here because the installation analytics still expects it
-track k8scluster install_helm_ok
-
-# Installation of storage class, metallb and cert-manager has been moved
-# to install_cluster_addons.sh, run from full_install_osm.sh
+# Installation of storage class, metallb and cert-manager
+# is done outside this script, by install_cluster_addons.sh
diff --git a/installers/kubeadm-config.yaml b/installers/cluster/kubeadm/kubeadm-config.yaml
similarity index 100%
rename from installers/kubeadm-config.yaml
rename to installers/cluster/kubeadm/kubeadm-config.yaml
diff --git a/installers/install_microk8s_cluster.sh b/installers/cluster/microk8s/install_microk8s_cluster.sh
similarity index 100%
rename from installers/install_microk8s_cluster.sh
rename to installers/cluster/microk8s/install_microk8s_cluster.sh
diff --git a/installers/mgmt-cluster/flux/scripts/add-age-key-to-cluster.sh b/installers/flux/scripts/add-age-key-to-cluster.sh
similarity index 100%
rename from installers/mgmt-cluster/flux/scripts/add-age-key-to-cluster.sh
rename to installers/flux/scripts/add-age-key-to-cluster.sh
diff --git a/installers/mgmt-cluster/flux/scripts/clone-relevant-repos.sh b/installers/flux/scripts/clone-relevant-repos.sh
similarity index 89%
rename from installers/mgmt-cluster/flux/scripts/clone-relevant-repos.sh
rename to installers/flux/scripts/clone-relevant-repos.sh
index 93ffad9..6bf3d93 100755
--- a/installers/mgmt-cluster/flux/scripts/clone-relevant-repos.sh
+++ b/installers/flux/scripts/clone-relevant-repos.sh
@@ -24,15 +24,16 @@
# Creates base dir in case it did not exist
+export WORK_REPOS_DIR="${OSM_HOME_DIR}/repos"
mkdir -p "${WORK_REPOS_DIR}"
# Clones `fleet-osm` repo
[[ "${REMOVE_LOCAL_DIR_BEFORE_CLONING}" == "true" ]] && rm -rf "${FLEET_REPO_DIR}"
-git clone ${GITEA_SSH_URL}/${GITEA_STD_USERNAME}/fleet-osm.git "${FLEET_REPO_DIR}"
+git clone "${FLEET_REPO_SSH_URL}" "${FLEET_REPO_DIR}"
# Clones `sw-catalogs-osm` repo
[[ "${REMOVE_LOCAL_DIR_BEFORE_CLONING}" == "true" ]] && rm -rf "${SW_CATALOGS_REPO_DIR}"
-git clone ${GITEA_SSH_URL}/${GITEA_STD_USERNAME}/sw-catalogs-osm.git "${SW_CATALOGS_REPO_DIR}"
+git clone "${SW_CATALOGS_REPO_SSH_URL}" "${SW_CATALOGS_REPO_DIR}"
# Forces `main` instead of `master` as default branch
pushd "${FLEET_REPO_DIR}" > /dev/null
diff --git a/installers/mgmt-cluster/flux/scripts/create-age-keypair.sh b/installers/flux/scripts/create-age-keypair.sh
similarity index 100%
rename from installers/mgmt-cluster/flux/scripts/create-age-keypair.sh
rename to installers/flux/scripts/create-age-keypair.sh
diff --git a/installers/mgmt-cluster/flux/scripts/create-new-cluster-folder-structure.sh b/installers/flux/scripts/create-new-cluster-folder-structure.sh
similarity index 94%
rename from installers/mgmt-cluster/flux/scripts/create-new-cluster-folder-structure.sh
rename to installers/flux/scripts/create-new-cluster-folder-structure.sh
index 9263d74..ef1b0cb 100755
--- a/installers/mgmt-cluster/flux/scripts/create-new-cluster-folder-structure.sh
+++ b/installers/flux/scripts/create-new-cluster-folder-structure.sh
@@ -97,8 +97,8 @@
cp "${TEMPLATES_DIR}"/* "${CLUSTER_DIR}/"
# Repo URLs
-export FLEET_REPO_URL="${GITEA_HTTP_URL}/${GITEA_STD_USERNAME}/fleet-osm.git"
-export SW_CATALOGS_REPO_URL="${GITEA_HTTP_URL}/${GITEA_STD_USERNAME}/sw-catalogs-osm.git"
+export FLEET_REPO_URL="${FLEET_REPO_HTTP_URL}"
+export SW_CATALOGS_REPO_URL="${SW_CATALOGS_REPO_HTTP_URL}"
export INFRA_CONTROLLERS_PATH="./${MGMT_PROJECT_NAME}/infra-controller-profiles/_management"
export INFRA_CONFIGS_PATH="./${MGMT_PROJECT_NAME}/infra-config-profiles/_management"
export MANAGED_RESOURCES_PATH="./${MGMT_PROJECT_NAME}/managed-resources/_management"
@@ -113,14 +113,14 @@
kubectl delete secret fleet-repo --namespace flux-system 2> /dev/null || true
kubectl create secret generic fleet-repo \
--namespace flux-system \
- --from-literal=username="${GITEA_STD_USERNAME}" \
- --from-literal=password="${GITEA_STD_USER_PASS}"
+ --from-literal=username="${FLEET_REPO_GIT_USERNAME}" \
+ --from-literal=password="${FLEET_REPO_GIT_USER_PASS}"
kubectl delete secret sw-catalogs --namespace flux-system 2> /dev/null || true
kubectl create secret generic sw-catalogs \
--namespace flux-system \
- --from-literal=username="${GITEA_STD_USERNAME}" \
- --from-literal=password="${GITEA_STD_USER_PASS}"
+ --from-literal=username="${SW_CATALOGS_REPO_GIT_USERNAME}" \
+ --from-literal=password="${SW_CATALOGS_REPO_GIT_USER_PASS}"
# Render Flux `Kustomizations` to sync with default profiles
envsubst < "${TEMPLATES_DIR}/infra-controllers.yaml" > "${CLUSTER_DIR}/infra-controllers.yaml"
diff --git a/installers/mgmt-cluster/flux/scripts/helper-functions.rc b/installers/flux/scripts/helper-functions.rc
similarity index 100%
rename from installers/mgmt-cluster/flux/scripts/helper-functions.rc
rename to installers/flux/scripts/helper-functions.rc
diff --git a/installers/mgmt-cluster/flux/scripts/library/functions.sh b/installers/flux/scripts/library/functions.sh
similarity index 100%
rename from installers/mgmt-cluster/flux/scripts/library/functions.sh
rename to installers/flux/scripts/library/functions.sh
diff --git a/installers/mgmt-cluster/flux/scripts/library/trap.sh b/installers/flux/scripts/library/trap.sh
similarity index 100%
rename from installers/mgmt-cluster/flux/scripts/library/trap.sh
rename to installers/flux/scripts/library/trap.sh
diff --git a/installers/mgmt-cluster/flux/scripts/mgmt-cluster-bootstrap.sh b/installers/flux/scripts/mgmt-cluster-bootstrap.sh
similarity index 85%
rename from installers/mgmt-cluster/flux/scripts/mgmt-cluster-bootstrap.sh
rename to installers/flux/scripts/mgmt-cluster-bootstrap.sh
index 9cbda51..c4aa0fc 100755
--- a/installers/mgmt-cluster/flux/scripts/mgmt-cluster-bootstrap.sh
+++ b/installers/flux/scripts/mgmt-cluster-bootstrap.sh
@@ -24,15 +24,13 @@
# Bootstrap
-REPO=fleet-osm
GIT_PATH=./clusters/_management
GIT_BRANCH=main
-GIT_HTTP_URL=${GITEA_HTTP_URL}/${GITEA_STD_USERNAME}/${REPO}.git
flux bootstrap git \
- --url=${GIT_HTTP_URL} \
+ --url=${FLEET_REPO_HTTP_URL} \
--allow-insecure-http=true \
- --username=${GITEA_STD_USERNAME} \
- --password="${GITEA_STD_USER_PASS}" \
+ --username=${FLEET_REPO_GIT_USERNAME} \
+ --password="${FLEET_REPO_GIT_USER_PASS}" \
--token-auth=true \
--branch=${GIT_BRANCH} \
--path=${GIT_PATH}
diff --git a/installers/mgmt-cluster/flux/scripts/watch-mgmt-cluster.sh b/installers/flux/scripts/watch-mgmt-cluster.sh
similarity index 100%
rename from installers/mgmt-cluster/flux/scripts/watch-mgmt-cluster.sh
rename to installers/flux/scripts/watch-mgmt-cluster.sh
diff --git a/installers/mgmt-cluster/flux/templates/fleet/clusters/_management/apps.yaml b/installers/flux/templates/fleet/clusters/_management/apps.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/fleet/clusters/_management/apps.yaml
rename to installers/flux/templates/fleet/clusters/_management/apps.yaml
diff --git a/installers/mgmt-cluster/flux/templates/fleet/clusters/_management/fleet-repo.yaml b/installers/flux/templates/fleet/clusters/_management/fleet-repo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/fleet/clusters/_management/fleet-repo.yaml
rename to installers/flux/templates/fleet/clusters/_management/fleet-repo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/fleet/clusters/_management/infra-configs.yaml b/installers/flux/templates/fleet/clusters/_management/infra-configs.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/fleet/clusters/_management/infra-configs.yaml
rename to installers/flux/templates/fleet/clusters/_management/infra-configs.yaml
diff --git a/installers/mgmt-cluster/flux/templates/fleet/clusters/_management/infra-controllers.yaml b/installers/flux/templates/fleet/clusters/_management/infra-controllers.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/fleet/clusters/_management/infra-controllers.yaml
rename to installers/flux/templates/fleet/clusters/_management/infra-controllers.yaml
diff --git a/installers/mgmt-cluster/flux/templates/fleet/clusters/_management/kustomization.yaml b/installers/flux/templates/fleet/clusters/_management/kustomization.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/fleet/clusters/_management/kustomization.yaml
rename to installers/flux/templates/fleet/clusters/_management/kustomization.yaml
diff --git a/installers/mgmt-cluster/flux/templates/fleet/clusters/_management/managed-resources.yaml b/installers/flux/templates/fleet/clusters/_management/managed-resources.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/fleet/clusters/_management/managed-resources.yaml
rename to installers/flux/templates/fleet/clusters/_management/managed-resources.yaml
diff --git a/installers/mgmt-cluster/flux/templates/fleet/clusters/_management/sw-catalogs-repo.yaml b/installers/flux/templates/fleet/clusters/_management/sw-catalogs-repo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/fleet/clusters/_management/sw-catalogs-repo.yaml
rename to installers/flux/templates/fleet/clusters/_management/sw-catalogs-repo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/apps/jenkins/manifests/bitnamicharts-repo.yaml b/installers/flux/templates/sw-catalogs/apps/jenkins/manifests/bitnamicharts-repo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/apps/jenkins/manifests/bitnamicharts-repo.yaml
rename to installers/flux/templates/sw-catalogs/apps/jenkins/manifests/bitnamicharts-repo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/apps/jenkins/manifests/jenkins-hr.yaml b/installers/flux/templates/sw-catalogs/apps/jenkins/manifests/jenkins-hr.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/apps/jenkins/manifests/jenkins-hr.yaml
rename to installers/flux/templates/sw-catalogs/apps/jenkins/manifests/jenkins-hr.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/apps/jenkins/templates/jenkins-ks.yaml b/installers/flux/templates/sw-catalogs/apps/jenkins/templates/jenkins-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/apps/jenkins/templates/jenkins-ks.yaml
rename to installers/flux/templates/sw-catalogs/apps/jenkins/templates/jenkins-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/apps/namespace/manifests/namespace.yaml b/installers/flux/templates/sw-catalogs/apps/namespace/manifests/namespace.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/apps/namespace/manifests/namespace.yaml
rename to installers/flux/templates/sw-catalogs/apps/namespace/manifests/namespace.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/apps/namespace/templates/namespace-ks.yaml b/installers/flux/templates/sw-catalogs/apps/namespace/templates/namespace-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/apps/namespace/templates/namespace-ks.yaml
rename to installers/flux/templates/sw-catalogs/apps/namespace/templates/namespace-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/apps/testacme/manifests/testacme-deploy.yaml b/installers/flux/templates/sw-catalogs/apps/testacme/manifests/testacme-deploy.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/apps/testacme/manifests/testacme-deploy.yaml
rename to installers/flux/templates/sw-catalogs/apps/testacme/manifests/testacme-deploy.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/apps/testacme/manifests/testacme-svc.yaml b/installers/flux/templates/sw-catalogs/apps/testacme/manifests/testacme-svc.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/apps/testacme/manifests/testacme-svc.yaml
rename to installers/flux/templates/sw-catalogs/apps/testacme/manifests/testacme-svc.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/apps/testacme/templates/testacme-ks.yaml b/installers/flux/templates/sw-catalogs/apps/testacme/templates/testacme-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/apps/testacme/templates/testacme-ks.yaml
rename to installers/flux/templates/sw-catalogs/apps/testacme/templates/testacme-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/aks/manifests/aks.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/aks/manifests/aks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/aks/manifests/aks.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/aks/manifests/aks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/aks/templates/aks01.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/aks/templates/aks01.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/aks/templates/aks01.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/aks/templates/aks01.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/azure-mysql/manifests/dbformysql.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/azure-mysql/manifests/dbformysql.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/azure-mysql/manifests/dbformysql.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/azure-mysql/manifests/dbformysql.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/azure-mysql/templates/azure-mysql01.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/azure-mysql/templates/azure-mysql01.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/azure-mysql/templates/azure-mysql01.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/azure-mysql/templates/azure-mysql01.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/addons/ebs-csi-addon.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/addons/ebs-csi-addon.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/addons/ebs-csi-addon.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/addons/ebs-csi-addon.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/eks-cluster.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/eks-cluster.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/eks-cluster.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/eks-cluster.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/nodegroup.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/nodegroup.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/nodegroup.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/eks-cluster/nodegroup.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/policy.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/policy.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/policy.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/policy.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/role-policy-attachment.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/role-policy-attachment.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/role-policy-attachment.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/role-policy-attachment.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/roles.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/roles.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/roles.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/iam/roles.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/gateways.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/gateways.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/gateways.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/gateways.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/routes.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/routes.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/routes.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/routes.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/subnets.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/subnets.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/subnets.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/subnets.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/vpc.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/vpc.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/vpc.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/manifests/network/vpc.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/templates/eks01.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/eks/templates/eks01.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/eks/templates/eks01.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/eks/templates/eks01.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/manifests/namespaces/namespaces.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/manifests/namespaces/namespaces.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/manifests/namespaces/namespaces.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/manifests/namespaces/namespaces.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/manifests/secret/secret-template.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/manifests/secret/secret-template.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/manifests/secret/secret-template.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/manifests/secret/secret-template.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/templates/remote-cluster-bootstrap.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/templates/remote-cluster-bootstrap.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/templates/remote-cluster-bootstrap.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/bootstrap/templates/remote-cluster-bootstrap.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/apps.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/apps.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/apps.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/apps.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/fleet-repo.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/fleet-repo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/fleet-repo.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/fleet-repo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/gotk-components.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/gotk-components.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/gotk-components.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/gotk-components.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/gotk-sync.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/gotk-sync.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/gotk-sync.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/gotk-sync.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/kustomization.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/kustomization.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/kustomization.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/flux-system/kustomization.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/infra-configs.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/infra-configs.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/infra-configs.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/infra-configs.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/infra-controllers.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/infra-controllers.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/infra-controllers.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/infra-controllers.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/kustomization.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/kustomization.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/kustomization.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/kustomization.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/managed-resources.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/managed-resources.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/managed-resources.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/managed-resources.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/sw-catalogs-repo.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/sw-catalogs-repo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/sw-catalogs-repo.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/cluster-base/templates/sw-catalogs-repo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/empty-kustomization/manifests/configmap/reference-cm.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/empty-kustomization/manifests/configmap/reference-cm.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/empty-kustomization/manifests/configmap/reference-cm.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/empty-kustomization/manifests/configmap/reference-cm.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/empty-kustomization/templates/kustomization-placeholder.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/empty-kustomization/templates/kustomization-placeholder.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/empty-kustomization/templates/kustomization-placeholder.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/flux-remote-bootstrap/empty-kustomization/templates/kustomization-placeholder.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/gke/manifests/gke.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/gke/manifests/gke.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/gke/manifests/gke.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/gke/manifests/gke.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/gke/templates/gke01.yaml b/installers/flux/templates/sw-catalogs/cloud-resources/gke/templates/gke01.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/cloud-resources/gke/templates/gke01.yaml
rename to installers/flux/templates/sw-catalogs/cloud-resources/gke/templates/gke01.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/crossplane/providers/aws/templates/crossplane-providerconfig-aws.yaml b/installers/flux/templates/sw-catalogs/infra-configs/crossplane/providers/aws/templates/crossplane-providerconfig-aws.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/crossplane/providers/aws/templates/crossplane-providerconfig-aws.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/crossplane/providers/aws/templates/crossplane-providerconfig-aws.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/crossplane/providers/azure/templates/crossplane-providerconfig-azure.yaml b/installers/flux/templates/sw-catalogs/infra-configs/crossplane/providers/azure/templates/crossplane-providerconfig-azure.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/crossplane/providers/azure/templates/crossplane-providerconfig-azure.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/crossplane/providers/azure/templates/crossplane-providerconfig-azure.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/crossplane/providers/gcp/templates/crossplane-providerconfig-gcp.yaml b/installers/flux/templates/sw-catalogs/infra-configs/crossplane/providers/gcp/templates/crossplane-providerconfig-gcp.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/crossplane/providers/gcp/templates/crossplane-providerconfig-gcp.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/crossplane/providers/gcp/templates/crossplane-providerconfig-gcp.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/cluster-role-binding-dashboard.yaml b/installers/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/cluster-role-binding-dashboard.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/cluster-role-binding-dashboard.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/cluster-role-binding-dashboard.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/sa-dashboard.yaml b/installers/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/sa-dashboard.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/sa-dashboard.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/sa-dashboard.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/secret-token-dashboard.yaml b/installers/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/secret-token-dashboard.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/secret-token-dashboard.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/kubernetes-dashboard/templates/secret-token-dashboard.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/sa-and-role.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/sa-and-role.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/sa-and-role.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/sa-and-role.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/clone-transform-push-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/clone-transform-push-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/clone-transform-push-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/clone-transform-push-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/cloud-accounts-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/cloud-accounts-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/cloud-accounts-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/cloud-accounts-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/cluster-management-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/cluster-management-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/cluster-management-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/cluster-management-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/debugging-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/debugging-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/debugging-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/debugging-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/git-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/git-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/git-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/git-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/k8s-resources-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/k8s-resources-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/k8s-resources-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/k8s-resources-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/ksu-management-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/ksu-management-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/ksu-management-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/ksu-management-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/oka-management-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/oka-management-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/oka-management-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/oka-management-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/profile-management-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/profile-management-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/profile-management-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/profile-management-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-attach-profile.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-attach-profile.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-attach-profile.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-attach-profile.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-bootstrap-cluster-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-bootstrap-cluster-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-bootstrap-cluster-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-bootstrap-cluster-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-clone-ksu.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-clone-ksu.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-clone-ksu.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-clone-ksu.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-aks-cluster-and-bootstrap-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-aks-cluster-and-bootstrap-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-aks-cluster-and-bootstrap-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-aks-cluster-and-bootstrap-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-crossplane-cluster-and-bootstrap-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-crossplane-cluster-and-bootstrap-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-crossplane-cluster-and-bootstrap-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-crossplane-cluster-and-bootstrap-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-ksu-generated-hr.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-ksu-generated-hr.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-ksu-generated-hr.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-ksu-generated-hr.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-ksu-hr.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-ksu-hr.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-ksu-hr.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-ksu-hr.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-oka.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-oka.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-oka.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-oka.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-profile.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-profile.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-profile.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-profile.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-providerconfig-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-providerconfig-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-providerconfig-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-providerconfig-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-cluster-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-cluster-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-cluster-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-cluster-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-ksu.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-ksu.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-ksu.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-ksu.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-oka.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-oka.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-oka.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-oka.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-profile.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-profile.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-profile.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-profile.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-providerconfig-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-providerconfig-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-providerconfig-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-providerconfig-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-detach-profile.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-detach-profile.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-detach-profile.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-detach-profile.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-disconnect-flux-remote-cluster-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-disconnect-flux-remote-cluster-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-disconnect-flux-remote-cluster-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-disconnect-flux-remote-cluster-wft.yaml
diff --git a/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-uninstall-flux-remote-cluster-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-uninstall-flux-remote-cluster-wft.yaml
new file mode 100644
index 0000000..b3ef1d7
--- /dev/null
+++ b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-uninstall-flux-remote-cluster-wft.yaml
@@ -0,0 +1,140 @@
+#######################################################################################
+# Copyright ETSI Contributors and Others.
+#
+# 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.
+#######################################################################################
+
+apiVersion: argoproj.io/v1alpha1
+kind: WorkflowTemplate
+metadata:
+ name: full-uninstall-flux-remote-cluster-wft
+ namespace: osm-workflows
+
+spec:
+ arguments:
+ parameters:
+
+ # Fleet repo
+ - name: git_fleet_url
+ - name: fleet_destination_folder
+ - name: git_fleet_cred_secret
+
+ # Specific parameters
+ - name: cluster_kustomization_name
+ - name: project_name
+ value: "osm_admin"
+
+ # Debugging
+ - name: dry_run
+ value: false
+
+
+ # # Cleanup policy
+ # ttlStrategy:
+ # secondsAfterCompletion: 100 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished
+ # secondsAfterSuccess: 50 # Time to live after workflow is successful
+ # secondsAfterFailure: 50 # Time to live after workflow fails
+
+ entrypoint: uninstall-flux
+
+ templates:
+
+ # Main template
+ - name: uninstall-flux
+ inputs:
+ parameters:
+ # Git repos
+ - name: git_fleet_url
+ - name: fleet_destination_folder
+ - name: git_fleet_cred_secret
+
+ # Specific parameters
+ - name: cluster_kustomization_name
+ - name: project_name
+
+ # Debugging
+ - name: dry_run
+
+ steps:
+
+ # ------ Preparations for transaction
+ - - name: generate-fleet-volume-repo
+ templateRef:
+ name: k8s-resources-wft
+ template: generate-volume
+ arguments:
+ parameters:
+ - name: pvc-size
+ value: '100Mi'
+ - - name: clone-fleet
+ templateRef:
+ name: git-wft
+ template: git-clone
+ arguments:
+ parameters:
+ - name: mount_path
+ value: "/fleet"
+ - name: repo_url
+ value: "{{inputs.parameters.git_fleet_url}}"
+ - name: destination_folder
+ value: "{{inputs.parameters.fleet_destination_folder}}"
+ - name: git_cred_secret
+ value: "{{inputs.parameters.git_fleet_cred_secret}}"
+ - name: git_volume_name
+ value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
+ # ------ end of preparations for transaction
+
+ # ------ Transformations
+ - - name: delete-cluster
+ templateRef:
+ name: cluster-management-wft
+ template: delete-cluster
+ arguments:
+ parameters:
+ # Volumes with cloned repos
+ - name: fleet_volume_name
+ value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
+ - name: fleet_mount_path
+ value: "/fleet"
+ # Specific parameters
+ - name: cluster_kustomization_name
+ value: "{{inputs.parameters.cluster_kustomization_name}}"
+ - name: project_name
+ value: "{{inputs.parameters.project_name}}"
+ # ------ end of transformations
+
+ # ------ Commit transaction
+ - - name: push-to-fleet
+ templateRef:
+ name: git-wft
+ template: git-commit-merge-push
+ arguments:
+ parameters:
+ - name: mount_path
+ value: "/fleet"
+ - name: repo_folder
+ value: "{{inputs.parameters.fleet_destination_folder}}"
+ - name: git_cred_secret
+ value: "{{inputs.parameters.git_fleet_cred_secret}}"
+ - name: git_volume_name
+ value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
+ - name: commit_message
+ value: "Delete cluster {{inputs.parameters.cluster_kustomization_name}}"
+ - name: main_branch
+ value: main
+ - name: contrib_branch
+ value: osm_contrib
+ - name: dry_run
+ value: "{{inputs.parameters.dry_run}}"
+# ------ end of commit transaction
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-aks-cluster.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-aks-cluster.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-aks-cluster.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-aks-cluster.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-crossplane-cluster-and-bootstrap-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-crossplane-cluster-and-bootstrap-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-crossplane-cluster-and-bootstrap-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-crossplane-cluster-and-bootstrap-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-ksu-generated-hr.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-ksu-generated-hr.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-ksu-generated-hr.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-ksu-generated-hr.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-ksu-hr.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-ksu-hr.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-ksu-hr.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-ksu-hr.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-oka.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-oka.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-oka.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-oka.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-providerconfig-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-providerconfig-wft.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-providerconfig-wft.yaml
rename to installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-providerconfig-wft.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/argo-workflows/manifests/argo-namespace.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/argo-workflows/manifests/argo-namespace.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/argo-workflows/manifests/argo-namespace.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/argo-workflows/manifests/argo-namespace.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/argo-workflows/manifests/argo-wf-controller.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/argo-workflows/manifests/argo-wf-controller.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/argo-workflows/manifests/argo-wf-controller.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/argo-workflows/manifests/argo-wf-controller.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/argo-workflows/templates/argo-workflows.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/argo-workflows/templates/argo-workflows.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/argo-workflows/templates/argo-workflows.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/argo-workflows/templates/argo-workflows.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/cert-manager/manifests/cert-manager-chart.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/cert-manager/manifests/cert-manager-chart.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/cert-manager/manifests/cert-manager-chart.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/cert-manager/manifests/cert-manager-chart.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/cert-manager/templates/cert-manager-ks.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/cert-manager/templates/cert-manager-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/cert-manager/templates/cert-manager-ks.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/cert-manager/templates/cert-manager-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-helmrelease.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-helmrelease.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-helmrelease.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-helmrelease.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-helmrepo.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-helmrepo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-helmrepo.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-helmrepo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-namespace.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-namespace.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-namespace.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/crossplane-namespace.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/kustomization.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/kustomization.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/kustomization.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/manifests/kustomization.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/templates/crossplane.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/templates/crossplane.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/templates/crossplane.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/controller/templates/crossplane.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-ec2.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-ec2.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-ec2.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-ec2.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-eks.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-eks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-eks.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-eks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-iam.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-iam.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-iam.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-iam.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-vpc.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-vpc.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-vpc.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/manifests/provider-vpc.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/templates/crossplane-aws-providers.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/templates/crossplane-aws-providers.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/templates/crossplane-aws-providers.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/aws/templates/crossplane-aws-providers.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/manifests/provider-azure-container.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/manifests/provider-azure-container.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/manifests/provider-azure-container.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/manifests/provider-azure-container.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/manifests/provider-azure-dbformysql.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/manifests/provider-azure-dbformysql.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/manifests/provider-azure-dbformysql.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/manifests/provider-azure-dbformysql.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/templates/crossplane-azure-providers.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/templates/crossplane-azure-providers.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/templates/crossplane-azure-providers.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/azure/templates/crossplane-azure-providers.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/manifests/provider-gcp-cloudplatform.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/manifests/provider-gcp-cloudplatform.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/manifests/provider-gcp-cloudplatform.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/manifests/provider-gcp-cloudplatform.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/manifests/provider-gcp-container.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/manifests/provider-gcp-container.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/manifests/provider-gcp-container.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/manifests/provider-gcp-container.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/templates/crossplane-gcp-providers.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/templates/crossplane-gcp-providers.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/templates/crossplane-gcp-providers.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/crossplane/providers/gcp/templates/crossplane-gcp-providers.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/ingress-nginx/manifests/ingress-nginx.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/ingress-nginx/manifests/ingress-nginx.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/ingress-nginx/manifests/ingress-nginx.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/ingress-nginx/manifests/ingress-nginx.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/ingress-nginx/templates/ingress-nginx-ks.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/ingress-nginx/templates/ingress-nginx-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/ingress-nginx/templates/ingress-nginx-ks.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/ingress-nginx/templates/ingress-nginx-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/grafana.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/grafana.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/grafana.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/grafana.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/jaeger.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/jaeger.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/jaeger.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/jaeger.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/kiali.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/kiali.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/kiali.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/kiali.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/loki.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/loki.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/loki.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/loki.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/prometheus.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/prometheus.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/prometheus.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/addons/prometheus.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-hr.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-hr.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-hr.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-hr.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-namespace.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-namespace.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-namespace.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-namespace.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-repo.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-repo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-repo.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/manifests/core/istio-repo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/templates/istio-addons-ks.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/templates/istio-addons-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/templates/istio-addons-ks.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/templates/istio-addons-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/templates/istio-core-ks.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/istio/templates/istio-core-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/istio/templates/istio-core-ks.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/istio/templates/istio-core-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/komoplane/manifests/komodorio-repo.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/komoplane/manifests/komodorio-repo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/komoplane/manifests/komodorio-repo.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/komoplane/manifests/komodorio-repo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/komoplane/manifests/komoplane-hr.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/komoplane/manifests/komoplane-hr.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/komoplane/manifests/komoplane-hr.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/komoplane/manifests/komoplane-hr.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/komoplane/templates/komoplane-ks.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/komoplane/templates/komoplane-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/komoplane/templates/komoplane-ks.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/komoplane/templates/komoplane-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/manifests/kubernetes-dashboard-hr.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/manifests/kubernetes-dashboard-hr.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/manifests/kubernetes-dashboard-hr.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/manifests/kubernetes-dashboard-hr.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/manifests/kubernetes-dashboard-repo.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/manifests/kubernetes-dashboard-repo.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/manifests/kubernetes-dashboard-repo.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/manifests/kubernetes-dashboard-repo.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/templates/kubernetes-dashboard-ks.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/templates/kubernetes-dashboard-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/templates/kubernetes-dashboard-ks.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/kubernetes-dashboard/templates/kubernetes-dashboard-ks.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/weave-gitops/manifests/weave-gitops-dashboard.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/weave-gitops/manifests/weave-gitops-dashboard.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/weave-gitops/manifests/weave-gitops-dashboard.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/weave-gitops/manifests/weave-gitops-dashboard.yaml
diff --git a/installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/weave-gitops/templates/weave-gitops-ks.yaml b/installers/flux/templates/sw-catalogs/infra-controllers/weave-gitops/templates/weave-gitops-ks.yaml
similarity index 100%
rename from installers/mgmt-cluster/flux/templates/sw-catalogs/infra-controllers/weave-gitops/templates/weave-gitops-ks.yaml
rename to installers/flux/templates/sw-catalogs/infra-controllers/weave-gitops/templates/weave-gitops-ks.yaml
diff --git a/installers/full_install_osm.sh b/installers/full_install_osm.sh
index eaf3bfb..08d4916 100755
--- a/installers/full_install_osm.sh
+++ b/installers/full_install_osm.sh
@@ -29,487 +29,28 @@
echo -e " -t <docker tag> specify osm docker tag (default is latest)"
echo -e " -M <KUBECONFIG_FILE>: Kubeconfig of an existing cluster to be used as mgmt cluster instead of OSM cluster"
echo -e " -G <KUBECONFIG_FILE>: Kubeconfig of an existing cluster to be used as auxiliary cluster instead of OSM cluster"
+ echo -e " -O <KUBECONFIG_FILE>: Kubeconfig of an existing cluster to be used as OSM cluster instead of creating a new one from scratch"
echo -e " --no-mgmt-cluster: Do not provision a mgmt cluster for cloud-native gitops operations in OSM (NEW in Release SIXTEEN) (by default, it is installed)"
echo -e " --no-aux-cluster: Do not provision an auxiliary cluster for cloud-native gitops operations in OSM (NEW in Release SIXTEEN) (by default, it is installed)"
- echo -e " -D <devops path>: use local devops installation path"
- echo -e " -s <namespace> namespace when installed using k8s, default is osm"
- echo -e " -w <work dir>: Location to store runtime installation"
- echo -e " -K: Specifies the name of the controller to use - The controller must be already bootstrapped"
+ echo -e " -s <namespace> namespace where OSM helm chart will be deployed (default is osm)"
echo -e " -d <docker registry URL> use docker registry URL instead of dockerhub"
echo -e " -p <docker proxy URL> set docker proxy URL as part of docker CE configuration"
echo -e " -T <docker tag> specify docker tag for the modules specified with option -m"
+ echo -e " -U <docker user>: specify docker user to use when pulling images from a private registry"
+ echo -e " -D <devops path>: use particular devops installation path"
+ echo -e " -e <external IP>: set the external IP address of the OSM cluster (default is empty, which means autodetect)"
echo -e " --debug: debug mode"
- echo -e " --nodocker: do not install docker, do not initialize a swarm (assumes docker is already installed and a swarm has been initialized)"
- echo -e " --nohostclient: do not install the osmclient"
- echo -e " --uninstall: uninstall OSM: remove the containers and delete NAT rules"
- echo -e " --showopts: print chosen options and exit (only for debugging)"
[ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
}
-function generate_secret() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
+HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
+OSM_DEVOPS="${OSM_DEVOPS:-"${HERE}/.."}"
+source $OSM_DEVOPS/library/all_funcs
+source $OSM_DEVOPS/installers/00-default-install-options.rc
-function check_packages() {
- NEEDED_PACKAGES="$1"
- echo -e "Checking required packages: ${NEEDED_PACKAGES}"
- for PACKAGE in ${NEEDED_PACKAGES} ; do
- dpkg -L ${PACKAGE}
- if [ $? -ne 0 ]; then
- echo -e "Package ${PACKAGE} is not installed."
- echo -e "Updating apt-cache ..."
- sudo apt-get update
- echo -e "Installing ${PACKAGE} ..."
- sudo apt-get install -y ${PACKAGE} || FATAL "failed to install ${PACKAGE}"
- fi
- done
- echo -e "Required packages are present: ${NEEDED_PACKAGES}"
-}
-function ask_user(){
- # ask to the user and parse a response among 'y', 'yes', 'n' or 'no'. Case insensitive
- # Params: $1 text to ask; $2 Action by default, can be 'y' for yes, 'n' for no, other or empty for not allowed
- # Return: true(0) if user type 'yes'; false (1) if user type 'no'
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- read -e -p "$1" USER_CONFIRMATION
- while true ; do
- [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'y' ] && return 0
- [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'n' ] && return 1
- [ "${USER_CONFIRMATION,,}" == "yes" ] || [ "${USER_CONFIRMATION,,}" == "y" ] && return 0
- [ "${USER_CONFIRMATION,,}" == "no" ] || [ "${USER_CONFIRMATION,,}" == "n" ] && return 1
- read -e -p "Please type 'yes' or 'no': " USER_CONFIRMATION
- done
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function install_osmclient(){
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- CLIENT_RELEASE=${RELEASE#"-R "}
- CLIENT_REPOSITORY_KEY="OSM%20ETSI%20Release%20Key.gpg"
- CLIENT_REPOSITORY=${REPOSITORY#"-r "}
- CLIENT_REPOSITORY_BASE=${REPOSITORY_BASE#"-u "}
- key_location=$CLIENT_REPOSITORY_BASE/$CLIENT_RELEASE/$CLIENT_REPOSITORY_KEY
- curl $key_location | sudo APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
- sudo add-apt-repository -y "deb [arch=amd64] $CLIENT_REPOSITORY_BASE/$CLIENT_RELEASE $CLIENT_REPOSITORY osmclient IM"
- sudo apt-get -y update
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pip
- sudo -H LC_ALL=C python3 -m pip install -U pip
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y python3-osm-im python3-osmclient
- if [ -f /usr/lib/python3/dist-packages/osm_im/requirements.txt ]; then
- python3 -m pip install -r /usr/lib/python3/dist-packages/osm_im/requirements.txt
- fi
- if [ -f /usr/lib/python3/dist-packages/osmclient/requirements.txt ]; then
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libmagic1
- python3 -m pip install -r /usr/lib/python3/dist-packages/osmclient/requirements.txt
- fi
- echo -e "\nOSM client installed"
- echo "You can get the OSM NBI endpoint using the following command"
- echo ' kubectl -n osm get ingress nbi-ingress -o jsonpath="{.spec.rules[0].host}"'
- echo "You will have to configure this env variable in your .bashrc file:"
- echo " export OSM_HOSTNAME=nbi.${OSM_K8S_EXTERNAL_IP}.nip.io"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
- return 0
-}
-
-function docker_login() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- echo "Docker login"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG "Docker registry user: ${DOCKER_REGISTRY_USER}"
- sg docker -c "docker login -u ${DOCKER_REGISTRY_USER} -p ${DOCKER_REGISTRY_PASSWORD} --password-stdin"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-#deploys osm pods and services
-function deploy_osm_helm_chart() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- # Generate helm values to be passed with -f osm-values.yaml
- sudo mkdir -p ${OSM_HELM_WORK_DIR}
-
- # Generate helm values to be passed with --set
- OSM_HELM_OPTS=""
- # OSM_HELM_OPTS="${OSM_HELM_OPTS} --set nbi.useOsmSecret=false"
-
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.image.repositoryBase=${DOCKER_REGISTRY_URL}${DOCKER_USER}"
- [ ! "$OSM_DOCKER_TAG" == "testing-daily" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set-string global.image.tag=${OSM_DOCKER_TAG}"
- [ ! "$OSM_DOCKER_TAG" == "testing-daily" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.server.sidecarContainers.prometheus-config-sidecar.image=${DOCKER_REGISTRY_URL}${DOCKER_USER}/prometheus:${OSM_DOCKER_TAG}"
-
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.hostname=${OSM_K8S_EXTERNAL_IP}.nip.io"
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set grafana.ingress.hosts={grafana.${OSM_K8S_EXTERNAL_IP}.nip.io}"
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.server.ingress.hosts={prometheus.${OSM_K8S_EXTERNAL_IP}.nip.io}"
- # OSM_HELM_OPTS="${OSM_HELM_OPTS} --set prometheus.alertmanager.ingress.hosts={alertmanager.${OSM_K8S_EXTERNAL_IP}.nip.io}"
- if [ -z "${INSTALL_MGMT_CLUSTER}" ]; then
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.enabled=false"
- else
- source "${HOME}/.osm/.credentials/gitea_environment.rc"
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.gitBaseUrl=${GITEA_HTTP_URL}"
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.gitUser=${GITEA_STD_USERNAME}"
- AGE_MGMT_PUBKEY=$(tr -d '\n' < ${HOME}/.osm/.credentials/age.mgmt.pub)
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.gitops.pubkey=${AGE_MGMT_PUBKEY}"
- fi
-
- if [ -n "${OSM_BEHIND_PROXY}" ]; then
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.behindHttpProxy=true"
- [ -n "${HTTP_PROXY}" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.httpProxy.HTTP_PROXY=\"${HTTP_PROXY}\""
- [ -n "${HTTPS_PROXY}" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.httpProxy.HTTPS_PROXY=\"${HTTPS_PROXY}\""
- if [ -n "${NO_PROXY}" ]; then
- if [[ ! "${NO_PROXY}" =~ .*".svc".* ]]; then
- NO_PROXY="${NO_PROXY},.svc"
- fi
- if [[ ! "${NO_PROXY}" =~ .*".cluster.local".* ]]; then
- NO_PROXY="${NO_PROXY},.cluster.local"
- fi
- OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.httpProxy.NO_PROXY=\"${NO_PROXY//,/\,}\""
- fi
- fi
-
- echo "helm upgrade --install -n $OSM_NAMESPACE --create-namespace $OSM_NAMESPACE $OSM_DEVOPS/installers/helm/osm ${OSM_HELM_OPTS}"
- helm upgrade --install -n $OSM_NAMESPACE --create-namespace $OSM_NAMESPACE $OSM_DEVOPS/installers/helm/osm ${OSM_HELM_OPTS}
- # Override existing values.yaml with the final values.yaml used to install OSM
- helm -n $OSM_NAMESPACE get values $OSM_NAMESPACE | sudo tee -a ${OSM_HELM_WORK_DIR}/osm-values.yaml
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function add_local_k8scluster() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- # OSM_HOSTNAME=$(kubectl get --namespace osm -o jsonpath="{.spec.rules[0].host}" ingress nbi-ingress)
- OSM_HOSTNAME="nbi.${OSM_K8S_EXTERNAL_IP}.nip.io:443"
- /usr/bin/osm --hostname ${OSM_HOSTNAME} --all-projects vim-create \
- --name _system-osm-vim \
- --account_type dummy \
- --auth_url http://dummy \
- --user osm --password osm --tenant osm \
- --description "dummy" \
- --config '{management_network_name: mgmt}'
- /usr/bin/osm --hostname ${OSM_HOSTNAME} --all-projects k8scluster-add \
- --creds ${HOME}/.kube/config \
- --vim _system-osm-vim \
- --k8s-nets '{"net1": null}' \
- --version '1.29' \
- --description "OSM Internal Cluster" \
- _system-osm-k8s
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function configure_apt_proxy() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- OSM_APT_PROXY=$1
- OSM_APT_PROXY_FILE="/etc/apt/apt.conf.d/osm-apt"
- echo "Configuring apt proxy in file ${OSM_APT_PROXY_FILE}"
- if [ ! -f ${OSM_APT_PROXY_FILE} ]; then
- sudo bash -c "cat <<EOF > ${OSM_APT_PROXY}
-Acquire::http { Proxy \"${OSM_APT_PROXY}\"; }
-EOF"
- else
- sudo sed -i "s|Proxy.*|Proxy \"${OSM_APT_PROXY}\"; }|" ${OSM_APT_PROXY_FILE}
- fi
- sudo apt-get update || FATAL "Configured apt proxy, but couldn't run 'apt-get update'. Check ${OSM_APT_PROXY_FILE}"
- track prereq apt_proxy_configured_ok
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function ask_proceed() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-
- [ -z "$ASSUME_YES" ] && ! ask_user "The installation will do the following
- 1. Install required packages
- 2. Install docker CE
- 3. Disable swap space
- 4. Install and initialize Kubernetes
- as pre-requirements.
- Do you want to proceed (Y/n)? " y && echo "Cancelled!" && exit 1
-
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function check_osm_behind_proxy() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-
- export OSM_BEHIND_PROXY=""
- export OSM_PROXY_ENV_VARIABLES=""
- [ -n "${http_proxy}" ] && OSM_BEHIND_PROXY="y" && echo "http_proxy=${http_proxy}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} http_proxy"
- [ -n "${https_proxy}" ] && OSM_BEHIND_PROXY="y" && echo "https_proxy=${https_proxy}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} https_proxy"
- [ -n "${HTTP_PROXY}" ] && OSM_BEHIND_PROXY="y" && echo "HTTP_PROXY=${HTTP_PROXY}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} HTTP_PROXY"
- [ -n "${HTTPS_PROXY}" ] && OSM_BEHIND_PROXY="y" && echo "https_proxy=${HTTPS_PROXY}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} HTTPS_PROXY"
- [ -n "${no_proxy}" ] && echo "no_proxy=${no_proxy}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} no_proxy"
- [ -n "${NO_PROXY}" ] && echo "NO_PROXY=${NO_PROXY}" && OSM_PROXY_ENV_VARIABLES="${OSM_PROXY_ENV_VARIABLES} NO_PROXY"
-
- echo "OSM_BEHIND_PROXY=${OSM_BEHIND_PROXY}"
- echo "OSM_PROXY_ENV_VARIABLES=${OSM_PROXY_ENV_VARIABLES}"
-
- if [ -n "${OSM_BEHIND_PROXY}" ]; then
- [ -z "$ASSUME_YES" ] && ! ask_user "
-The following env variables have been found for the current user:
-${OSM_PROXY_ENV_VARIABLES}.
-
-This suggests that this machine is behind a proxy and a special configuration is required.
-The installer will install Docker CE and a Kubernetes to work behind a proxy using those
-env variables.
-
-Take into account that the installer uses apt, curl, wget and docker.
-Depending on the program, the env variables to work behind a proxy might be different
-(e.g. http_proxy vs HTTP_PROXY).
-
-For that reason, it is strongly recommended that at least http_proxy, https_proxy, HTTP_PROXY
-and HTTPS_PROXY are defined.
-
-Finally, some of the programs (apt) are run as sudoer, requiring that those env variables
-are also set for root user. If you are not sure whether those variables are configured for
-the root user, you can stop the installation now.
-
-Do you want to proceed with the installation (Y/n)? " y && echo "Cancelled!" && exit 1
- else
- echo "This machine is not behind a proxy"
- fi
-
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function find_devops_folder() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- if [ -z "$OSM_DEVOPS" ]; then
- echo -e "\nCreating temporary dir for OSM installation"
- OSM_DEVOPS="$(mktemp -d -q --tmpdir "installosm.XXXXXX")"
- trap 'rm -rf "$OSM_DEVOPS"' EXIT
- git clone https://osm.etsi.org/gerrit/osm/devops.git $OSM_DEVOPS
- fi
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function install_docker_ce() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- DOCKER_CE_OPTS="-D ${OSM_DEVOPS} ${DEBUG_INSTALL}"
- [ -n "${DOCKER_PROXY_URL}" ] && DOCKER_CE_OPTS="${DOCKER_CE_OPTS} -p ${DOCKER_PROXY_URL}"
- [ -n "${OSM_BEHIND_PROXY}" ] && DOCKER_CE_OPTS="${DOCKER_CE_OPTS} -P"
- $OSM_DEVOPS/installers/install_docker_ce.sh ${DOCKER_CE_OPTS} || FATAL_TRACK docker_ce "install_docker_ce.sh failed"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function install_k8s_cluster() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- if [ "${K8S_CLUSTER_ENGINE}" == "kubeadm" ]; then
- KUBEADM_INSTALL_OPTS="-d ${OSM_WORK_DIR} -D ${OSM_DEVOPS} ${DEBUG_INSTALL}"
- $OSM_DEVOPS/installers/install_kubeadm_cluster.sh ${KUBEADM_INSTALL_OPTS} || \
- FATAL_TRACK k8scluster "install_kubeadm_cluster.sh failed"
- K8SCLUSTER_ADDONS_INSTALL_OPTS="-i ${OSM_DEFAULT_IP} -d ${OSM_WORK_DIR} -D ${OSM_DEVOPS} ${DEBUG_INSTALL} --all"
- $OSM_DEVOPS/installers/install_cluster_addons.sh ${K8SCLUSTER_ADDONS_INSTALL_OPTS} || \
- FATAL_TRACK k8scluster "install_cluster_addons.sh failed for kubeadm cluster"
- elif [ "${K8S_CLUSTER_ENGINE}" == "k3s" ]; then
- K3S_INSTALL_OPTS="-i ${OSM_DEFAULT_IP} -D ${OSM_DEVOPS} ${DEBUG_INSTALL}"
- [ "${OSM_K8S_EXTERNAL_IP}" != "${OSM_DEFAULT_IP}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -e ${OSM_K8S_EXTERNAL_IP}"
- [ -n "${DOCKER_PROXY_URL}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -p ${DOCKER_PROXY_URL}"
- [ -n "${DOCKER_REGISTRY_URL}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -d ${DOCKER_REGISTRY_URL}"
- [ -n "${DOCKER_REGISTRY_USER}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -u ${DOCKER_REGISTRY_USER}"
- [ -n "${DOCKER_REGISTRY_PASSWORD}" ] && K3S_INSTALL_OPTS="${K3S_INSTALL_OPTS} -P ${DOCKER_REGISTRY_PASSWORD}"
- # The K3s installation script will automatically take the HTTP_PROXY, HTTPS_PROXY and NO_PROXY,
- # as well as the CONTAINERD_HTTP_PROXY, CONTAINERD_HTTPS_PROXY and CONTAINERD_NO_PROXY variables
- # from the shell, if they are present, and write them to the environment file of k3s systemd service,
- $OSM_DEVOPS/installers/install_k3s_cluster.sh ${K3S_INSTALL_OPTS} || \
- FATAL_TRACK k8scluster "install_k3s_cluster.sh failed"
- K8SCLUSTER_ADDONS_INSTALL_OPTS="-i ${OSM_DEFAULT_IP} -d ${OSM_WORK_DIR} -D ${OSM_DEVOPS} ${DEBUG_INSTALL} --certmgr --nginx"
- $OSM_DEVOPS/installers/install_cluster_addons.sh ${K8SCLUSTER_ADDONS_INSTALL_OPTS} || \
- FATAL_TRACK k8scluster "install_cluster_addons.sh failed for k3s cluster"
- fi
- echo "Updating fsnotify settings of the system kernel"
- sudo bash -c "sysctl -w fs.inotify.max_user_watches=699050 > /etc/sysctl.d/99-custom-osm-sysctl.conf"
- sudo bash -c "sysctl -w fs.inotify.max_user_instances=10922 >> /etc/sysctl.d/99-custom-osm-sysctl.conf"
- sudo bash -c "sysctl -w fs.inotify.max_queued_events=1398101 >> /etc/sysctl.d/99-custom-osm-sysctl.conf"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function deploy_osm() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- deploy_osm_helm_chart
- track deploy_osm deploy_mongodb_ok
- track deploy_osm deploy_osm_services_k8s_ok
- track deploy_osm install_osm_ngsa_ok
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function setup_external_ip() {
- echo "Determining IP address of the interface with the default route"
- [ -z "$OSM_DEFAULT_IF" ] && OSM_DEFAULT_IF=$(ip route list|awk '$1=="default" {print $5; exit}')
- [ -z "$OSM_DEFAULT_IF" ] && OSM_DEFAULT_IF=$(route -n |awk '$1~/^0.0.0.0/ {print $8; exit}')
- [ -z "$OSM_DEFAULT_IF" ] && FATAL "Not possible to determine the interface with the default route 0.0.0.0"
- OSM_DEFAULT_IP=`ip -o -4 a s ${OSM_DEFAULT_IF} |awk '{split($4,a,"/"); print a[1]; exit}'`
- [ -z "$OSM_DEFAULT_IP" ] && FATAL "Not possible to determine the IP address of the interface with the default route"
- OSM_K8S_EXTERNAL_IP=${OSM_K8S_EXTERNAL_IP:-${OSM_DEFAULT_IP}}
-}
-
-function install_osm() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-
- trap ctrl_c INT
-
- check_osm_behind_proxy
- check_packages "git wget curl tar"
- find_devops_folder
-
- track start release $RELEASE none none docker_tag $OSM_DOCKER_TAG none none installation_type $OSM_INSTALLATION_TYPE none none os_info $os_info none none
-
- track checks checkingroot_ok
- [ "$USER" == "root" ] && FATAL "You are running the installer as root. The installer is prepared to be executed as a normal user with sudo privileges."
- track checks noroot_ok
- ask_proceed
- track checks proceed_ok
-
- echo "Installing OSM"
-
- [ -n "$DOCKER_REGISTRY_URL" ] && parse_docker_registry_url
-
- echo "Setting up external IP address"
- setup_external_ip
-
- # configure apt proxy
- [ -n "$APT_PROXY_URL" ] && configure_apt_proxy $APT_PROXY_URL
-
- track prereq prereqok_ok
-
- if [ -n "$INSTALL_DOCKER" ] || [ "${K8S_CLUSTER_ENGINE}" == "kubeadm" ]; then
- if [ "${K8S_CLUSTER_ENGINE}" == "kubeadm" ]; then
- echo "Kubeadm requires docker, so docker will be installed."
- fi
- install_docker_ce
- [ -n "${DOCKER_REGISTRY_URL}" ] && docker_login
- fi
- track docker_ce docker_ce_ok
-
- echo "Installing helm client ..."
- $OSM_DEVOPS/installers/install_helm_client.sh -D ${OSM_DEVOPS} ${DEBUG_INSTALL} || \
- FATAL_TRACK k8scluster "install_helm_client.sh failed"
- track helm_client install_helm_client_ok
-
- echo "Installing K8s cluster ..."
- install_k8s_cluster
- kubectl create namespace ${OSM_NAMESPACE}
- track k8scluster k8scluster_ok
-
- # Install mgmt cluster
- echo "Installing mgmt cluster ..."
- MGMTCLUSTER_INSTALL_OPTS="-D ${OSM_DEVOPS} ${DEBUG_INSTALL}"
- [ -n "${INSTALL_MGMT_CLUSTER}" ] || MGMTCLUSTER_INSTALL_OPTS="${MGMTCLUSTER_INSTALL_OPTS} --no-mgmt-cluster"
- [ -n "${INSTALL_AUX_CLUSTER}" ] || MGMTCLUSTER_INSTALL_OPTS="${MGMTCLUSTER_INSTALL_OPTS} --no-aux-cluster"
- export KUBECONFIG_MGMT_CLUSTER=${KUBECONFIG_MGMT_CLUSTER:-"$HOME/.kube/config"}
- export KUBECONFIG_AUX_CLUSTER=${KUBECONFIG_AUX_CLUSTER:-"$HOME/.kube/config"}
- MGMTCLUSTER_INSTALL_OPTS="${MGMTCLUSTER_INSTALL_OPTS} -M ${KUBECONFIG_MGMT_CLUSTER}"
- MGMTCLUSTER_INSTALL_OPTS="${MGMTCLUSTER_INSTALL_OPTS} -G ${KUBECONFIG_AUX_CLUSTER}"
- echo "Options: ${MGMTCLUSTER_INSTALL_OPTS}"
- $OSM_DEVOPS/installers/mgmt-cluster/install_mgmt_cluster.sh ${MGMTCLUSTER_INSTALL_OPTS} || \
- FATAL_TRACK mgmtcluster "install_mgmt_cluster.sh failed"
- if [ -n "${INSTALL_MGMT_CLUSTER}" ]; then
- echo "Credentials stored under ${HOME}/.osm/.credentials"
- echo "Repos stored under ${HOME}/.osm/repos"
- fi
- track mgmtcluster mgmt_and_aux_cluster_ok
-
- # Deploy OSM (OSM helm chart)
- echo "Deploying OSM in the K8s cluster ..."
- deploy_osm
-
- [ -z "$INSTALL_NOHOSTCLIENT" ] && echo "Installing osmclient ..." && install_osmclient
- track osmclient osmclient_ok
-
- echo -e "Checking OSM health state..."
- $OSM_DEVOPS/installers/osm_health.sh -s ${OSM_NAMESPACE} -k || \
- (echo -e "OSM is not healthy, but will probably converge to a healthy state soon." && \
- echo -e "Check OSM status with: kubectl -n ${OSM_NAMESPACE} get all" && \
- track healthchecks osm_unhealthy didnotconverge)
- track healthchecks after_healthcheck_ok
-
- echo -e "Adding local K8s cluster _system-osm-k8s to OSM ..."
- add_local_k8scluster
- track final_ops add_local_k8scluster_ok
-
- wget -q -O- https://osm-download.etsi.org/ftp/osm-16.0-sixteen/README2.txt &> /dev/null
- track end
- sudo find /etc/osm
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
- return 0
-}
-
-function dump_vars(){
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- echo "APT_PROXY_URL=$APT_PROXY_URL"
- echo "K8S_CLUSTER_ENGINE=$K8S_CLUSTER_ENGINE"
- echo "DEBUG_INSTALL=$DEBUG_INSTALL"
- echo "DOCKER_PROXY_URL=$DOCKER_PROXY_URL"
- echo "DOCKER_REGISTRY_URL=$DOCKER_REGISTRY_URL"
- echo "DOCKER_USER=$DOCKER_USER"
- echo "INSTALL_DOCKER=$INSTALL_DOCKER"
- echo "OSM_DEVOPS=$OSM_DEVOPS"
- echo "OSM_DOCKER_TAG=$OSM_DOCKER_TAG"
- echo "OSM_K8S_EXTERNAL_IP=$OSM_K8S_EXTERNAL_IP"
- echo "OSM_HELM_WORK_DIR=$OSM_HELM_WORK_DIR"
- echo "OSM_NAMESPACE=$OSM_NAMESPACE"
- echo "OSM_WORK_DIR=$OSM_WORK_DIR"
- echo "PULL_IMAGES=$PULL_IMAGES"
- echo "RELEASE=$RELEASE"
- echo "REPOSITORY=$REPOSITORY"
- echo "REPOSITORY_BASE=$REPOSITORY_BASE"
- echo "REPOSITORY_KEY=$REPOSITORY_KEY"
- echo "SHOWOPTS=$SHOWOPTS"
- echo "UNINSTALL=$UNINSTALL"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function parse_docker_registry_url() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- DOCKER_REGISTRY_USER=$(echo "$DOCKER_REGISTRY_URL" | awk '{split($1,a,"@"); split(a[1],b,":"); print b[1]}')
- DOCKER_REGISTRY_PASSWORD=$(echo "$DOCKER_REGISTRY_URL" | awk '{split($1,a,"@"); split(a[1],b,":"); print b[2]}')
- DOCKER_REGISTRY_URL=$(echo "$DOCKER_REGISTRY_URL" | awk '{split($1,a,"@"); print a[2]}')
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function ctrl_c() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- echo "** Trapped CTRL-C"
- FATAL "User stopped the installation"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-UNINSTALL=""
-SHOWOPTS=""
-ASSUME_YES=""
-APT_PROXY_URL=""
-K8S_CLUSTER_ENGINE="k3s"
-DEBUG_INSTALL=""
-RELEASE="testing-daily"
-REPOSITORY="testing"
-INSTALL_DOCKER=""
-INSTALL_NOHOSTCLIENT=""
-INSTALL_AUX_CLUSTER="y"
-INSTALL_MGMT_CLUSTER="y"
-OSM_DEVOPS=
-OSM_NAMESPACE=osm
-REPOSITORY_KEY="OSM%20ETSI%20Release%20Key.gpg"
-REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/debian"
-OSM_WORK_DIR="/etc/osm"
-OSM_HELM_WORK_DIR="${OSM_WORK_DIR}/helm"
-OSM_HOST_VOL="/var/lib/osm"
-OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_NAMESPACE}"
-OSM_DOCKER_TAG="testing-daily"
-DOCKER_USER=opensourcemano
-PULL_IMAGES="y"
-KAFKA_TAG=2.11-1.0.2
-KIWIGRID_K8S_SIDECAR_TAG="1.15.6"
-PROMETHEUS_TAG=v2.28.1
-GRAFANA_TAG=8.1.1
-PROMETHEUS_NODE_EXPORTER_TAG=0.18.1
-PROMETHEUS_CADVISOR_TAG=latest
-KEYSTONEDB_TAG=10
-OSM_DATABASE_COMMONKEY=
-ELASTIC_VERSION=6.4.2
-ELASTIC_CURATOR_VERSION=5.5.4
-POD_NETWORK_CIDR=10.244.0.0/16
-K8S_MANIFEST_DIR="/etc/kubernetes/manifests"
RE_CHECK='^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
-DOCKER_REGISTRY_URL=
-DOCKER_PROXY_URL=
-MODULE_DOCKER_TAG=
-OSM_INSTALLATION_TYPE="Default"
-
-while getopts ":a:c:e:r:n:k:u:R:D:o:O:N:s:t:U:l:L:K:d:p:T:f:F:G:M:-: hy" o; do
+while getopts ":a:c:e:r:k:u:R:D:s:t:U:d:p:T:M:G:O:-: hy" o; do
case "${o}" in
a)
APT_PROXY_URL=${OPTARG}
@@ -553,11 +94,8 @@
U)
DOCKER_USER="${OPTARG}"
;;
- K)
- CONTROLLER_NAME="${OPTARG}"
- ;;
d)
- DOCKER_REGISTRY_URL="${OPTARG}"
+ parse_docker_registry_url "${OPTARG}"
;;
p)
DOCKER_PROXY_URL="${OPTARG}"
@@ -571,16 +109,22 @@
G)
KUBECONFIG_AUX_CLUSTER="${OPTARG}"
;;
+ O)
+ KUBECONFIG_OSM_CLUSTER="${OPTARG}"
+ ;;
-)
[ "${OPTARG}" == "help" ] && usage && exit 0
[ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="--debug" && continue
- [ "${OPTARG}" == "uninstall" ] && UNINSTALL="y" && continue
[ "${OPTARG}" == "no-mgmt-cluster" ] && INSTALL_MGMT_CLUSTER="" && continue
[ "${OPTARG}" == "no-aux-cluster" ] && INSTALL_AUX_CLUSTER="" && continue
- [ "${OPTARG}" == "docker" ] && INSTALL_DOCKER="y" && continue
- [ "${OPTARG}" == "nodocker" ] && INSTALL_DOCKER="" && continue
- [ "${OPTARG}" == "showopts" ] && SHOWOPTS="y" && continue
- [ "${OPTARG}" == "nohostclient" ] && INSTALL_NOHOSTCLIENT="y" && continue
+ if [[ "${OPTARG}" == "client-version" ]]; then
+ OSM_CLIENT_VERSION="${!OPTIND}"; OPTIND=$((OPTIND + 1))
+ continue
+ fi
+ if [[ "${OPTARG}" == "im-version" ]]; then
+ OSM_IM_VERSION="${!OPTIND}"; OPTIND=$((OPTIND + 1))
+ continue
+ fi
echo -e "Invalid option: '--$OPTARG'\n" >&2
usage && exit 1
;;
@@ -604,23 +148,12 @@
esac
done
-source $OSM_DEVOPS/common/all_funcs
[ -z "${DEBUG_INSTALL}" ] || DEBUG Debug is on
-[ -n "$SHOWOPTS" ] && dump_vars && exit 0
-
-# Uninstall if "--uninstall"
-if [ -n "$UNINSTALL" ]; then
- ${OSM_DEVOPS}/installers/uninstall_osm.sh "$@" || \
- FATAL_TRACK community_uninstall "uninstall_osm.sh failed"
- echo -e "\nDONE"
- exit 0
-fi
-
# Installation starts here
# Get README and create OSM_TRACK_INSTALLATION_ID
-wget -q -O- https://osm-download.etsi.org/ftp/osm-16.0-sixteen/README.txt &> /dev/null
+curl -s https://osm-download.etsi.org/ftp/osm-16.0-sixteen/README.txt > /dev/null 2>&1
export OSM_TRACK_INSTALLATION_ID="$(date +%s)-$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)"
# Get OS info to be tracked
@@ -631,8 +164,87 @@
os_info="${os_distro}_${os_release}"
os_info="${os_info// /_}"
-# Community_installer
-# This is where installation starts
-install_osm
+# Initial checks: proxy, root user, proceed
+check_osm_behind_proxy
+track start release $RELEASE none none docker_tag $OSM_DOCKER_TAG none none installation_type Default none none os_info $os_info none none
+track checks checkingroot_ok
+[ "$USER" == "root" ] && FATAL "You are running the installer as root. The installer is prepared to be executed as a normal user with sudo privileges."
+track checks noroot_ok
+ask_proceed
+track checks proceed_ok
+
+# Setup prerequisites
+echo "Setting up external IP address"
+setup_external_ip
+[ -n "$APT_PROXY_URL" ] && echo "Configuring APT proxy" && configure_apt_proxy $APT_PROXY_URL
+track prereq prereqok_ok
+
+# Export installation options
+echo "Load default options and export user installation options"
+source $OSM_DEVOPS/installers/00-default-install-options.rc
+$OSM_DEVOPS/installers/01-export-osm-install-options.sh || FATAL_TRACK exportinstallopts "01-export-osm-install-options.sh failed"
+track exportinstallopts exportinstallopts_ok
+
+# Setup Client tools
+echo "Setup CLI tools for mgmt and aux cluster"
+$OSM_DEVOPS/installers/10-install-client-tools.sh || FATAL_TRACK installclitools "10-install-client-tools.sh failed"
+track installclitools installclitools_ok
+
+# Install K8s cluster where all OSM components will be deployed
+echo "Installing K8s cluster ..."
+source "${HERE}/../library/utils.sh"
+# setup_external_ip
+export OSM_DEFAULT_IP
+export OSM_K8S_EXTERNAL_IP
+$OSM_DEVOPS/installers/15-install-k8s-cluster.sh || FATAL_TRACK k8scluster "15-install-k8s-cluster.sh"
+track k8scluster k8scluster_ok
+
+# Deploy auxiliary services
+if [ -n "${INSTALL_AUX_CLUSTER}" ]; then
+ echo "Deploy auxiliary services (Gitea, S3)"
+ $OSM_DEVOPS/installers/20-deploy-aux-svc-cluster.sh || FATAL_TRACK deployauxsvc "20-deploy-aux-svc-cluster.sh failed"
+else
+ echo "Skipping deployment of auxiliary services."
+ echo "Using existing git credentials and repos defined in ${CREDENTIALS_DIR}/git_environment.rc"
+# cat << EOF > "${CREDENTIALS_DIR}/git_environment.rc"
+# export FLEET_REPO_HTTP_URL="${FLEET_REPO_HTTP_URL}"
+# export FLEET_REPO_SSH_URL="${FLEET_REPO_SSH_URL}"
+# export FLEET_REPO_GIT_USERNAME="${FLEET_REPO_GIT_USERNAME}"
+# export FLEET_REPO_GIT_USER_PASS='${FLEET_REPO_GIT_USER_PASS}'
+# export SW_CATALOGS_REPO_HTTP_URL="${SW_CATALOGS_REPO_HTTP_URL}"
+# export SW_CATALOGS_REPO_SSH_URL="${SW_CATALOGS_REPO_SSH_URL}"
+# export SW_CATALOGS_REPO_GIT_USERNAME="${SW_CATALOGS_REPO_GIT_USERNAME}"
+# export SW_CATALOGS_REPO_GIT_USER_PASS='${SW_CATALOGS_REPO_GIT_USER_PASS}'
+# EOF
+fi
+track deployauxsvc deployauxsvc_ok
+
+# Deploy mgmt services
+if [ -n "${INSTALL_MGMT_CLUSTER}" ]; then
+ echo "Deploy mgmt cluster (Flux, etc.)"
+ $OSM_DEVOPS/installers/30-deploy-mgmt-cluster.sh || FATAL_TRACK mgmtcluster "30-deploy-mgmt-cluster.sh failed"
+else
+ echo "Skipping deployment of mgmt cluster"
+ # TODO: write env variables to files"
+fi
+track mgmtcluster mgmtcluster_ok
+
+# Deploy OSM (OSM helm chart)
+echo "Deploy OSM helm chart"
+export OSM_K8S_EXTERNAL_IP
+$OSM_DEVOPS/installers/40-deploy-osm.sh || FATAL_TRACK deployosm "40-deploy-osm.sh failed"
+track deploy_osm deploy_osm_ok
+
+# Provision OSM
+echo -e "Adding local K8s cluster _system-osm-k8s to OSM ..."
+$OSM_DEVOPS/installers/50-provision-osm.sh || FATAL_TRACK provision-osm "50-provision-osm.sh failed"
+track provisionosm provisionosm_ok
+
+curl -s https://osm-download.etsi.org/ftp/osm-16.0-sixteen/README2.txt > /dev/null 2>&1
+track end
+
+echo "Credentials stored under ${CREDENTIALS_DIR}"
+echo "Git repos for OSM declarative framework stored under ${WORK_REPOS_DIR}"
+echo "Kubeconfigs of the aux-svc cluster, mgmt cluster and OSM cluster stored under ${OSM_HOME_DIR}/clusters"
echo -e "\nDONE"
exit 0
diff --git a/installers/mgmt-cluster/gitea/00-custom-config.rc b/installers/gitea/00-custom-config.rc
similarity index 100%
rename from installers/mgmt-cluster/gitea/00-custom-config.rc
rename to installers/gitea/00-custom-config.rc
diff --git a/installers/mgmt-cluster/gitea/01-base-config.rc b/installers/gitea/01-base-config.rc
similarity index 100%
rename from installers/mgmt-cluster/gitea/01-base-config.rc
rename to installers/gitea/01-base-config.rc
diff --git a/installers/mgmt-cluster/gitea/02-deploy-gitea.sh b/installers/gitea/02-deploy-gitea.sh
similarity index 96%
rename from installers/mgmt-cluster/gitea/02-deploy-gitea.sh
rename to installers/gitea/02-deploy-gitea.sh
index f6e6001..37d7bf3 100755
--- a/installers/mgmt-cluster/gitea/02-deploy-gitea.sh
+++ b/installers/gitea/02-deploy-gitea.sh
@@ -30,7 +30,7 @@
# Deploy Helm chart with required values
helm repo add gitea-charts https://dl.gitea.io/charts/
m "Deploying Gitea's Helm chart..."
-helm install gitea gitea-charts/gitea \
+helm upgrade --install gitea gitea-charts/gitea \
--version=7.0.4 \
--namespace=gitea \
--values "${HERE}/${GITEA_CHART_VALUES_FILE}" \
diff --git a/installers/mgmt-cluster/gitea/03-get-gitea-connection-info.rc b/installers/gitea/03-get-gitea-connection-info.rc
similarity index 100%
rename from installers/mgmt-cluster/gitea/03-get-gitea-connection-info.rc
rename to installers/gitea/03-get-gitea-connection-info.rc
diff --git a/installers/mgmt-cluster/gitea/04-fix-and-use-external-gitea-urls.sh b/installers/gitea/04-fix-and-use-external-gitea-urls.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/04-fix-and-use-external-gitea-urls.sh
rename to installers/gitea/04-fix-and-use-external-gitea-urls.sh
diff --git a/installers/mgmt-cluster/gitea/05-export-connection-info.sh b/installers/gitea/05-export-connection-info.sh
similarity index 82%
rename from installers/mgmt-cluster/gitea/05-export-connection-info.sh
rename to installers/gitea/05-export-connection-info.sh
index 8e903c0..acd9092 100755
--- a/installers/mgmt-cluster/gitea/05-export-connection-info.sh
+++ b/installers/gitea/05-export-connection-info.sh
@@ -32,7 +32,8 @@
# Saves locally to local environment at credentials folder
m "Saving local enviroment to credentials folder..."
-
+export CREDENTIALS_DIR="${OSM_HOME_DIR}/.credentials"
+mkdir -p "${CREDENTIALS_DIR}"
cat << EOF > "${CREDENTIALS_DIR}/gitea_environment.rc"
export GITEA_HTTP_URL=${GITEA_HTTP_URL}
export GITEA_SSH_URL=${GITEA_SSH_URL}
@@ -51,6 +52,17 @@
export GITEA_STD_USER_PASS='${GITEA_STD_USER_PASS}'
EOF
+cat << EOF > "${CREDENTIALS_DIR}/git_environment.rc"
+export FLEET_REPO_HTTP_URL="${GITEA_HTTP_URL}/${GITEA_STD_USERNAME}/fleet-osm.git"
+export FLEET_REPO_SSH_URL="${GITEA_SSH_URL}/${GITEA_STD_USERNAME}/fleet-osm.git"
+export FLEET_REPO_GIT_USERNAME="${GITEA_STD_USERNAME}"
+export FLEET_REPO_GIT_USER_PASS='${GITEA_STD_USER_PASS}'
+export SW_CATALOGS_REPO_HTTP_URL="${GITEA_HTTP_URL}/${GITEA_STD_USERNAME}/sw-catalogs-osm.git"
+export SW_CATALOGS_REPO_SSH_URL="${GITEA_SSH_URL}/${GITEA_STD_USERNAME}/sw-catalogs-osm.git"
+export SW_CATALOGS_REPO_GIT_USERNAME="${GITEA_STD_USERNAME}"
+export SW_CATALOGS_REPO_GIT_USER_PASS='${GITEA_STD_USER_PASS}'
+EOF
+
m "Done."
echo
diff --git a/installers/gitea/20-setup-gituser-and-sshkeygen.sh b/installers/gitea/20-setup-gituser-and-sshkeygen.sh
new file mode 100755
index 0000000..e3046fa
--- /dev/null
+++ b/installers/gitea/20-setup-gituser-and-sshkeygen.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+# 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.
+#
+
+set -e -o pipefail
+
+# Test if the user exists. Otherwise, create a git user
+echo "Test if there is a git user. Otherwise, create it."
+if [ ! -n "$(git config user.name)" ]; then
+ git config --global user.name osm_user
+ git config --global user.email osm_user@mydomain.com
+fi
+
+# Test if the user exists. Otherwise, create a git user
+echo "Checking if the user has an SSH key pair"
+if [ ! -f "$HOME/.ssh/id_rsa" ]; then
+ echo "Generating an SSH key pair for the user"
+ ssh-keygen -t rsa -f "$HOME/.ssh/id_rsa" -N "" -q
+fi
diff --git a/installers/mgmt-cluster/gitea/90-provision-gitea-for-osm.sh b/installers/gitea/90-provision-gitea-for-osm.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/90-provision-gitea-for-osm.sh
rename to installers/gitea/90-provision-gitea-for-osm.sh
diff --git a/installers/mgmt-cluster/gitea/91-provision-local-git-user.sh b/installers/gitea/91-provision-local-git-user.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/91-provision-local-git-user.sh
rename to installers/gitea/91-provision-local-git-user.sh
diff --git a/installers/mgmt-cluster/gitea/ALL-IN-ONE-Gitea-install.sh b/installers/gitea/ALL-IN-ONE-Gitea-install.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/ALL-IN-ONE-Gitea-install.sh
rename to installers/gitea/ALL-IN-ONE-Gitea-install.sh
diff --git a/installers/mgmt-cluster/gitea/README.md b/installers/gitea/README.md
similarity index 100%
rename from installers/mgmt-cluster/gitea/README.md
rename to installers/gitea/README.md
diff --git a/installers/mgmt-cluster/gitea/admin/add-collaborator-to-user-repo.sh b/installers/gitea/admin/add-collaborator-to-user-repo.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/add-collaborator-to-user-repo.sh
rename to installers/gitea/admin/add-collaborator-to-user-repo.sh
diff --git a/installers/mgmt-cluster/gitea/admin/api.sh b/installers/gitea/admin/api.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/api.sh
rename to installers/gitea/admin/api.sh
diff --git a/installers/mgmt-cluster/gitea/admin/create-api-access-token.sh b/installers/gitea/admin/create-api-access-token.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/create-api-access-token.sh
rename to installers/gitea/admin/create-api-access-token.sh
diff --git a/installers/mgmt-cluster/gitea/admin/create-cmd-access-token.sh b/installers/gitea/admin/create-cmd-access-token.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/create-cmd-access-token.sh
rename to installers/gitea/admin/create-cmd-access-token.sh
diff --git a/installers/mgmt-cluster/gitea/admin/create-org-repository.sh b/installers/gitea/admin/create-org-repository.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/create-org-repository.sh
rename to installers/gitea/admin/create-org-repository.sh
diff --git a/installers/mgmt-cluster/gitea/admin/create-org.sh b/installers/gitea/admin/create-org.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/create-org.sh
rename to installers/gitea/admin/create-org.sh
diff --git a/installers/mgmt-cluster/gitea/admin/create-user-repository.sh b/installers/gitea/admin/create-user-repository.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/create-user-repository.sh
rename to installers/gitea/admin/create-user-repository.sh
diff --git a/installers/mgmt-cluster/gitea/admin/create-user-ssh-key.sh b/installers/gitea/admin/create-user-ssh-key.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/create-user-ssh-key.sh
rename to installers/gitea/admin/create-user-ssh-key.sh
diff --git a/installers/mgmt-cluster/gitea/admin/create-user.sh b/installers/gitea/admin/create-user.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/create-user.sh
rename to installers/gitea/admin/create-user.sh
diff --git a/installers/mgmt-cluster/gitea/admin/delete-org-repository.sh b/installers/gitea/admin/delete-org-repository.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/delete-org-repository.sh
rename to installers/gitea/admin/delete-org-repository.sh
diff --git a/installers/mgmt-cluster/gitea/admin/delete-org.sh b/installers/gitea/admin/delete-org.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/delete-org.sh
rename to installers/gitea/admin/delete-org.sh
diff --git a/installers/mgmt-cluster/gitea/admin/delete-user-repository.sh b/installers/gitea/admin/delete-user-repository.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/delete-user-repository.sh
rename to installers/gitea/admin/delete-user-repository.sh
diff --git a/installers/mgmt-cluster/gitea/admin/gitea.sh b/installers/gitea/admin/gitea.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/gitea.sh
rename to installers/gitea/admin/gitea.sh
diff --git a/installers/mgmt-cluster/gitea/admin/shell.sh b/installers/gitea/admin/shell.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/admin/shell.sh
rename to installers/gitea/admin/shell.sh
diff --git a/installers/mgmt-cluster/gitea/library/functions.sh b/installers/gitea/library/functions.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/library/functions.sh
rename to installers/gitea/library/functions.sh
diff --git a/installers/mgmt-cluster/gitea/library/helpers.sh b/installers/gitea/library/helpers.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/library/helpers.sh
rename to installers/gitea/library/helpers.sh
diff --git a/installers/mgmt-cluster/gitea/library/trap.sh b/installers/gitea/library/trap.sh
similarity index 100%
rename from installers/mgmt-cluster/gitea/library/trap.sh
rename to installers/gitea/library/trap.sh
diff --git a/installers/mgmt-cluster/gitea/values-all.yaml b/installers/gitea/values-all.yaml
similarity index 100%
rename from installers/mgmt-cluster/gitea/values-all.yaml
rename to installers/gitea/values-all.yaml
diff --git a/installers/mgmt-cluster/gitea/values-standalone-ingress-ssh2222.yaml b/installers/gitea/values-standalone-ingress-ssh2222.yaml
similarity index 100%
rename from installers/mgmt-cluster/gitea/values-standalone-ingress-ssh2222.yaml
rename to installers/gitea/values-standalone-ingress-ssh2222.yaml
diff --git a/installers/mgmt-cluster/gitea/values-standalone-ingress.yaml b/installers/gitea/values-standalone-ingress.yaml
similarity index 100%
rename from installers/mgmt-cluster/gitea/values-standalone-ingress.yaml
rename to installers/gitea/values-standalone-ingress.yaml
diff --git a/installers/mgmt-cluster/gitea/values-standalone.yaml b/installers/gitea/values-standalone.yaml
similarity index 100%
rename from installers/mgmt-cluster/gitea/values-standalone.yaml
rename to installers/gitea/values-standalone.yaml
diff --git a/installers/helm/osm/templates/osm-gitops-secret.yaml b/installers/helm/osm/templates/osm-gitops-secret.yaml
index 233b74c..ed0e569 100644
--- a/installers/helm/osm/templates/osm-gitops-secret.yaml
+++ b/installers/helm/osm/templates/osm-gitops-secret.yaml
@@ -26,4 +26,10 @@
OSM_GITOPS_GIT_BASE_URL: {{ ( .Values.global.gitops.gitBaseUrl | default "http://git.127.0.0.1.nip.io" ) | b64enc | quote }}
OSM_GITOPS_USER: {{ ( .Values.global.gitops.gitUser | default "osm-developer" ) | b64enc | quote }}
OSM_GITOPS_PUBKEY: {{ ( .Values.global.gitops.pubkey | default ( randAlphaNum 32 ) ) | b64enc | quote }}
+ {{- if .Values.global.gitops.fleetRepoUrl }}
+ OSM_GITOPS_FLEET_REPO_URL: {{ .Values.global.gitops.fleetRepoUrl | b64enc | quote }}
+ {{- end }}
+ {{- if .Values.global.gitops.swcatalogsRepoUrl }}
+ OSM_GITOPS_SW_CATALOGS_REPO_URL: {{ .Values.global.gitops.swcatalogsRepoUrl | b64enc | quote }}
+ {{- end }}
{{- end }}
\ No newline at end of file
diff --git a/installers/helm/osm/values.yaml b/installers/helm/osm/values.yaml
index 2190a51..792e145 100644
--- a/installers/helm/osm/values.yaml
+++ b/installers/helm/osm/values.yaml
@@ -65,6 +65,8 @@
gitUser: osm-developer
# gitBaseUrl: http://git.<IP_ADDRESS>.nip.io
# pubkey: AGEKEY
+ # fleetRepoUrl: http://git.<IP_ADDRESS>.nip.io
+ # swcatalogsRepoUrl: http://git.<IP_ADDRESS>.nip.io
podAnnotations: {}
diff --git a/installers/install_docker_ce.sh b/installers/install_docker_ce.sh
index 16fb817..023a9f9 100755
--- a/installers/install_docker_ce.sh
+++ b/installers/install_docker_ce.sh
@@ -116,44 +116,16 @@
return 0
}
-while getopts ":D:p:-: P" o; do
- case "${o}" in
- D)
- OSM_DEVOPS="${OPTARG}"
- ;;
- p)
- DOCKER_PROXY_URL="${OPTARG}"
- ;;
- P)
- OSM_BEHIND_PROXY="y"
- ;;
- -)
- [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="y" && continue
- echo -e "Invalid option: '--$OPTARG'\n" >&2
- exit 1
- ;;
- :)
- echo "Option -$OPTARG requires an argument" >&2
- exit 1
- ;;
- \?)
- echo -e "Invalid option: '-$OPTARG'\n" >&2
- exit 1
- ;;
- *)
- exit 1
- ;;
- esac
-done
-
DEBUG_INSTALL=${DEBUG_INSTALL:-}
+OSM_DEVOPS=${OSM_DEVOPS:-"/usr/share/osm-devops"}
DOCKER_PROXY_URL=${DOCKER_PROXY_URL:-}
OSM_BEHIND_PROXY=${OSM_BEHIND_PROXY:-}
echo "DEBUG_INSTALL=$DEBUG_INSTALL"
+echo "OSM_DEVOPS=$OSM_DEVOPS"
echo "DOCKER_PROXY_URL=$DOCKER_PROXY_URL"
echo "OSM_BEHIND_PROXY=$OSM_BEHIND_PROXY"
echo "USER=$USER"
-source $OSM_DEVOPS/common/logging
+source $OSM_DEVOPS/library/logging
install_docker_ce
diff --git a/installers/install_helm_client.sh b/installers/install_helm_client.sh
deleted file mode 100755
index 427a2e1..0000000
--- a/installers/install_helm_client.sh
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-set +eux
-
-HELM_VERSION="v3.15.1"
-
-#Install Helm v3
-#Helm releases can be found here: https://github.com/helm/helm/releases
-function install_helm_client() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- if ! [[ "$(helm version --short 2>/dev/null)" =~ ^v3.* ]]; then
- # Helm is not installed. Install helm
- echo "Helm3 is not installed, installing ..."
- curl https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz --output helm-${HELM_VERSION}.tar.gz
- tar -zxvf helm-${HELM_VERSION}.tar.gz
- sudo mv linux-amd64/helm /usr/local/bin/helm
- rm -r linux-amd64
- rm helm-${HELM_VERSION}.tar.gz
- else
- echo "Helm3 is already installed. Skipping installation..."
- fi
- helm version || FATAL_TRACK k8scluster "Could not obtain helm version. Maybe helm client was not installed"
- helm repo add stable https://charts.helm.sh/stable || FATAL_TRACK k8scluster "Helm repo stable could not be added"
- helm repo update || FATAL_TRACK k8scluster "Helm repo stable could not be updated"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-# main
-while getopts ":D:-: " o; do
- case "${o}" in
- D)
- OSM_DEVOPS="${OPTARG}"
- ;;
- -)
- [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="y" && continue
- echo -e "Invalid option: '--$OPTARG'\n" >&2
- exit 1
- ;;
- :)
- echo "Option -$OPTARG requires an argument" >&2
- exit 1
- ;;
- \?)
- echo -e "Invalid option: '-$OPTARG'\n" >&2
- exit 1
- ;;
- *)
- exit 1
- ;;
- esac
-done
-
-DEBUG_INSTALL=${DEBUG_INSTALL:-}
-OSM_DEVOPS=${OSM_DEVOPS:-}
-echo "DEBUG_INSTALL=$DEBUG_INSTALL"
-echo "OSM_DEVOPS=$OSM_DEVOPS"
-
-source $OSM_DEVOPS/common/logging
-source $OSM_DEVOPS/common/track
-
-install_helm_client
diff --git a/installers/install_osm.sh b/installers/install_osm.sh
index 4902357..870de5c 100755
--- a/installers/install_osm.sh
+++ b/installers/install_osm.sh
@@ -33,6 +33,7 @@
echo -e " -t <docker tag> specify osm docker tag (default is latest)"
echo -e " -M <KUBECONFIG_FILE>: Kubeconfig of an existing cluster to be used as mgmt cluster instead of OSM cluster"
echo -e " -G <KUBECONFIG_FILE>: Kubeconfig of an existing cluster to be used as auxiliary cluster instead of OSM cluster"
+ echo -e " -O <KUBECONFIG_FILE>: Kubeconfig of an existing cluster to be used as OSM cluster instead of creating a new one from scratch"
echo -e " --no-mgmt-cluster: Do not provision a mgmt cluster for cloud-native gitops operations in OSM (NEW in Release SIXTEEN) (by default, it is installed)"
echo -e " --no-aux-cluster: Do not provision an auxiliary cluster for cloud-native gitops operations in OSM (NEW in Release SIXTEEN) (by default, it is installed)"
echo -e " -D <devops path>: use local devops installation path"
@@ -43,10 +44,7 @@
echo -e " -p <docker proxy URL> set docker proxy URL as part of docker CE configuration"
echo -e " -T <docker tag> specify docker tag for the modules specified with option -m"
echo -e " --debug: debug mode"
- echo -e " --nodocker: do not install docker, do not initialize a swarm (assumes docker is already installed and a swarm has been initialized)"
- echo -e " --nohostclient: do not install the osmclient"
echo -e " --uninstall: uninstall OSM: remove the containers and delete NAT rules"
- echo -e " --showopts: print chosen options and exit (only for debugging)"
}
add_repo() {
@@ -66,7 +64,7 @@
|| sudo apt-get install -y $need_packages_lw \
|| ! echo "failed to install $need_packages_lw" \
|| exit 1
- wget -q -O OSM-ETSI-Release-key.gpg "$REPOSITORY_BASE/$RELEASE/OSM%20ETSI%20Release%20Key.gpg"
+ curl -s -o OSM-ETSI-Release-key.gpg "$REPOSITORY_BASE/$RELEASE/OSM%20ETSI%20Release%20Key.gpg"
sudo APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add OSM-ETSI-Release-key.gpg \
|| ! echo -e "Could not add GPG key $REPOSITORY_BASE/$RELEASE/OSM%20ETSI%20Release%20Key.gpg" \
|| exit 1
@@ -102,8 +100,7 @@
[ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
}
-while getopts ":a:c:e:r:n:k:u:R:D:o:O:N:s:t:U:l:L:K:d:p:T:f:F:G:M:-: hy" o; do
-
+while getopts ":a:c:e:r:k:u:R:D:s:t:U:d:p:T:M:G:O:-: hy" o; do
case "${o}" in
D)
DEVOPS_PATH="${OPTARG}"
diff --git a/installers/mgmt-cluster/02-provision-local-git-user.sh b/installers/mgmt-cluster/02-provision-local-git-user.sh
deleted file mode 100755
index 12346eb..0000000
--- a/installers/mgmt-cluster/02-provision-local-git-user.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# 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.
-#######################################################################################
-
-set -e -o pipefail
-
-# Warning!!!: Remember to select the desired kubeconfig profile before launching this script
-
-export HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")")
-source "${HERE}/library/functions.sh"
-source "${HERE}/library/trap.sh"
-
-
-# Source credentials
-source "${CREDENTIALS_DIR}/gitea_environment.rc"
-source "${CREDENTIALS_DIR}/gitea_tokens.rc"
-
-# Add the local Git user to Gitea as a profile, upload the public SSH key (to allow SSH operations), and add the user as "collaborator" to both repos
-"${HERE}/gitea/91-provision-local-git-user.sh"
diff --git a/installers/mgmt-cluster/README.md b/installers/mgmt-cluster/README.md
index 7581cda..5513386 100644
--- a/installers/mgmt-cluster/README.md
+++ b/installers/mgmt-cluster/README.md
@@ -38,7 +38,7 @@
First, you should load the environment variables with the key folders and configuration parameters. By default, in case some of them where still undefined, you may load sensible defaults by doing:
```bash
-source 00-base-config.rc
+source 20-base-config.rc
```
Then, you should select the appropriate `kubeconfig` to point to the cluster where you want to install the auxiliary services. For instance:
@@ -64,7 +64,7 @@
```bash
# Load Gitea environment
-source "${CREDENTIALS_DIR}/gitea_environment.rc"
+source "${CREDENTIALS_DIR}/git_environment.rc"
source "${CREDENTIALS_DIR}/gitea_tokens.rc"
# Load Minio environment
@@ -238,7 +238,7 @@
```bash
source 00-base-config.rc
-source "${CREDENTIALS_DIR}/gitea_environment.rc"
+source "${CREDENTIALS_DIR}/git_environment.rc"
source "${CREDENTIALS_DIR}/gitea_tokens.rc"
```
diff --git a/installers/mgmt-cluster/install_mgmt_cluster.sh b/installers/mgmt-cluster/install_mgmt_cluster.sh
deleted file mode 100755
index c719b4b..0000000
--- a/installers/mgmt-cluster/install_mgmt_cluster.sh
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-set -x
-
-# main
-while getopts ":D:d:G:M:-: " o; do
- case "${o}" in
- d)
- OSM_HOME_DIR="${OPTARG}"
- ;;
- D)
- OSM_DEVOPS="${OPTARG}"
- ;;
- M)
- KUBECONFIG_MGMT_CLUSTER="${OPTARG}"
- ;;
- G)
- KUBECONFIG_AUX_CLUSTER="${OPTARG}"
- ;;
- -)
- [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="y" && continue
- [ "${OPTARG}" == "no-mgmt-cluster" ] && INSTALL_MGMT_CLUSTER="" && continue
- [ "${OPTARG}" == "no-aux-cluster" ] && INSTALL_AUX_CLUSTER="" && continue
- [ "${OPTARG}" == "minio" ] && INSTALL_MINIO="y" && continue
- [ "${OPTARG}" == "no-minio" ] && INSTALL_MINIO="" && continue
- echo -e "Invalid option: '--$OPTARG'\n" >&2
- exit 1
- ;;
- :)
- echo "Option -$OPTARG requires an argument" >&2
- exit 1
- ;;
- \?)
- echo -e "Invalid option: '-$OPTARG'\n" >&2
- exit 1
- ;;
- *)
- exit 1
- ;;
- esac
-done
-
-DEBUG_INSTALL=${DEBUG_INSTALL:-}
-OSM_DEVOPS=${OSM_DEVOPS:-"/usr/share/osm-devops"}
-OSM_HOME_DIR=${OSM_HOME_DIR:-"$HOME/.osm"}
-OSM_MGMTCLUSTER_BASE_FOLDER="${OSM_DEVOPS}/installers/mgmt-cluster"
-INSTALL_MGMT_CLUSTER=${INSTALL_MGMT_CLUSTER:-"y"}
-INSTALL_AUX_CLUSTER=${INSTALL_AUX_CLUSTER:-"y"}
-KUBECONFIG_MGMT_CLUSTER=${KUBECONFIG_MGMT_CLUSTER:-"$HOME/.kube/config"}
-KUBECONFIG_AUX_CLUSTER=${KUBECONFIG_AUX_CLUSTER:-"$HOME/.kube/config"}
-KUBECONFIG_OLD=${KUBECONFIG:-"$HOME/.kube/config"}
-export CREDENTIALS_DIR="${OSM_HOME_DIR}/.credentials"
-export WORK_REPOS_DIR="${OSM_HOME_DIR}/repos"
-export INSTALL_MINIO=${INSTALL_MINIO:-"y"}
-echo "DEBUG_INSTALL=$DEBUG_INSTALL"
-echo "OSM_DEVOPS=$OSM_DEVOPS"
-echo "OSM_HOME_DIR=$OSM_HOME_DIR"
-echo "OSM_MGMTCLUSTER_BASE_FOLDER=$OSM_MGMTCLUSTER_BASE_FOLDER"
-echo "INSTALL_MGMT_CLUSTER=$INSTALL_MGMT_CLUSTER"
-echo "INSTALL_AUX_CLUSTER=$INSTALL_AUX_CLUSTER"
-echo "KUBECONFIG_MGMT_CLUSTER=$KUBECONFIG_MGMT_CLUSTER"
-echo "KUBECONFIG_AUX_CLUSTER=$KUBECONFIG_AUX_CLUSTER"
-echo "CREDENTIALS_DIR=$CREDENTIALS_DIR"
-echo "WORK_REPOS_DIR=$WORK_REPOS_DIR"
-
-source $OSM_DEVOPS/common/logging
-source $OSM_DEVOPS/common/track
-
-pushd $OSM_MGMTCLUSTER_BASE_FOLDER
-
-if [ -n "${INSTALL_AUX_CLUSTER}" ] || [ -n "${INSTALL_MGMT_CLUSTER}" ]; then
-
- echo "Setup CLI tools for mgmt and aux cluster"
- ./setup-cli-tools.sh || FATAL_TRACK mgmtcluster "setup-cli-tools.sh failed"
- track mgmtcluster setupclitools_ok
-
- echo "Creating folders under ${OSM_HOME_DIR} for credentials and repos"
- mkdir -p "${CREDENTIALS_DIR}"
- mkdir -p "${WORK_REPOS_DIR}"
- track mgmtcluster folders_ok
-
- # Test if the user exists. Otherwise, create a git user
- echo "Test if there is a git user. Otherwise, create it."
- if [ ! -n "$(git config user.name)" ]; then
- git config --global user.name osm_user
- git config --global user.email osm_user@mydomain.com
- fi
-
- # Test if the user exists. Otherwise, create a git user
- echo "Checking if the user has an SSH key pair"
- if [ ! -f "$HOME/.ssh/id_rsa" ]; then
- echo "Generating an SSH key pair for the user"
- ssh-keygen -t rsa -f "$HOME/.ssh/id_rsa" -N "" -q
- fi
-
- echo "Loading env variables from 00-base-config.rc"
- source 00-base-config.rc
-
-fi
-
-set +x
-
-# "aux-svc" cluster
-if [ -n "${INSTALL_AUX_CLUSTER}" ]; then
- echo "Provisioning auxiliary cluster with Gitea"
- export KUBECONFIG="${KUBECONFIG_AUX_CLUSTER}"
- ./01-provision-aux-svc.sh || FATAL_TRACK mgmtcluster "provision-aux-svc.sh failed"
- track mgmtcluster aux_cluster_ok
-
- ./02-provision-local-git-user.sh || FATAL_TRACK mgmtcluster "provision-local-git-user.sh failed"
- track mgmtcluster local_git_user_ok
-fi
-
-# "mgmt" cluster
-if [ -n "${INSTALL_MGMT_CLUSTER}" ]; then
- echo "Provisioning mgmt cluster"
- export KUBECONFIG="${KUBECONFIG_MGMT_CLUSTER}"
- ./03-provision-mgmt-cluster.sh || FATAL_TRACK mgmtcluster "provision-mgmt-cluster.sh failed"
- track mgmtcluster mgmt_cluster_ok
-fi
-
-export KUBECONFIG=${KUBECONFIG_OLD}
-if [ -n "${INSTALL_MGMT_CLUSTER}" ]; then
- echo "Saving age keys in OSM cluster"
- kubectl -n osm create secret generic mgmt-cluster-age-keys --from-file=privkey="${CREDENTIALS_DIR}/age.mgmt.key" --from-file=pubkey="${CREDENTIALS_DIR}/age.mgmt.pub"
-fi
-
-echo "Creating secrets with kubeconfig files"
-kubectl -n osm create secret generic auxcluster-secret --from-file=kubeconfig="${KUBECONFIG_AUX_CLUSTER}"
-kubectl -n osm create secret generic mgmtcluster-secret --from-file=kubeconfig="${KUBECONFIG_MGMT_CLUSTER}"
-
-popd
-
diff --git a/installers/mgmt-cluster/library/functions.sh b/installers/mgmt-cluster/library/functions.sh
deleted file mode 100755
index 638a1d2..0000000
--- a/installers/mgmt-cluster/library/functions.sh
+++ /dev/null
@@ -1,91 +0,0 @@
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# 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.
-#######################################################################################
-
-
-RED='\033[0;31m'
-GREEN='\033[0;32m'
-BLUE='\033[0;34m'
-CYAN='\033[0;36m'
-RESET='\033[0m'
-
-# Colored messages (blue is the default)
-# Examples:
-# m "hello world"
-# m "hello world" "$GREEN"
-function m() {
- local COLOR=${2:-$BLUE}
- echo -e "$COLOR$1$RESET"
-}
-
-function copy_function() {
- local ORIG_FUNC=$(declare -f $1)
- local NEWNAME_FUNC="$2${ORIG_FUNC#$1}"
- eval "$NEWNAME_FUNC"
-}
-
-function replace_text() {
- local FILE=$1
- local START=$2
- local END=$3
- local NEW=$4
- local T=$(mktemp)
- head -n $((START-1)) "$FILE" > "$T"
- echo "$NEW" >> "$T"
- tail -n +$((END+1)) "$FILE" >> "$T"
- mv "$T" "$FILE"
-}
-
-function insert_text() {
- local FILE=$1
- local START=$2
- local NEW=$3
- local T=$(mktemp)
- head -n $((START-1)) "$FILE" > "$T"
- echo "$NEW" >> "$T"
- tail -n +$START "$FILE" >> "$T"
- mv "$T" "$FILE"
-}
-
-function remove_text() {
- local FILE=$1
- local START=$2
- local END=$3
- local T=$(mktemp)
- head -n $((START-1)) "$FILE" > "$T"
- tail -n +$((END+1)) "$FILE" >> "$T"
- mv "$T" "$FILE"
-}
-
-function envsubst_cp() {
- local FROM_FILE=$1
- local TO_FILE=$2
- mkdir --parents "$(dirname "$TO_FILE")"
- cat "$FROM_FILE" | envsubst > "$TO_FILE"
-}
-
-function envsubst_dir() {
- local FROM_DIR=$1
- local TO_DIR=$2
- rm --recursive --force "$TO_DIR"
- mkdir --parents "$TO_DIR"
- pushd "$FROM_DIR" > /dev/null
- local F
- find . -type f | while read F; do
- envsubst_cp "$F" "$TO_DIR/$F"
- done
- popd > /dev/null
-}
diff --git a/installers/mgmt-cluster/library/trap.sh b/installers/mgmt-cluster/library/trap.sh
deleted file mode 100755
index 2a1156d..0000000
--- a/installers/mgmt-cluster/library/trap.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# 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.
-#######################################################################################
-
-function goodbye() {
- local DURATION=$(date --date=@$(( "$(date +%s)" - "$TRAP_START_TIME" )) --utc +%T)
- local CODE=$1
- cd "$TRAP_DIR"
- if [ "$CODE" == 0 ]; then
- m "$(realpath --relative-to="$HERE" "$0") succeeded! $DURATION" "$GREEN"
- elif [ "$CODE" == abort ]; then
- m "Aborted $(realpath --relative-to="$HERE" "$0")! $DURATION" "$RED"
- else
- m "Oh no! $(realpath --relative-to="$HERE" "$0") failed! $DURATION" "$RED"
- fi
-}
-
-function trap_EXIT() {
- local ERR=$?
- goodbye "$ERR"
- exit "$ERR"
-}
-
-function trap_INT() {
- goodbye abort
- trap - EXIT
- exit 1
-}
-
-TRAP_DIR=$PWD
-TRAP_START_TIME=$(date +%s)
-
-trap trap_INT INT
-
-trap trap_EXIT EXIT
diff --git a/installers/mgmt-cluster/setup-cli-tools.sh b/installers/mgmt-cluster/setup-cli-tools.sh
deleted file mode 100755
index 7eb1551..0000000
--- a/installers/mgmt-cluster/setup-cli-tools.sh
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-pushd $HOME
-
-export DEBIAN_FRONTEND=noninteractive
-
-# Install `gnupg` and `gpg` - Typically pre-installed in Ubuntu
-sudo apt-get install gnupg gpg -y
-
-# Install `sops`
-curl -LO https://github.com/getsops/sops/releases/download/v3.8.1/sops-v3.8.1.linux.amd64
-sudo mv sops-v3.8.1.linux.amd64 /usr/local/bin/sops
-sudo chmod +x /usr/local/bin/sops
-
-# Install `envsubst`
-sudo apt-get install gettext-base -y
-
-# Install `age`
-curl -LO https://github.com/FiloSottile/age/releases/download/v1.1.0/age-v1.1.0-linux-amd64.tar.gz
-tar xvfz age-v1.1.0-linux-amd64.tar.gz
-sudo mv age/age age/age-keygen /usr/local/bin/
-sudo chmod +x /usr/local/bin/age*
-rm -rf age age-v1.1.0-linux-amd64.tar.gz
-
-# (Only for Gitea) Install `apg`
-sudo apt-get install apg -y
-
-# # (Only for Minio) `kubectl minio` plugin and Minio Client
-if [ -n "${INSTALL_MINIO}" ]; then
- curl https://github.com/minio/operator/releases/download/v5.0.12/kubectl-minio_5.0.12_linux_amd64 -Lo kubectl-minio
- curl https://dl.min.io/client/mc/release/linux-amd64/mc -o minioc
- chmod +x kubectl-minio minioc
- sudo mv kubectl-minio minioc /usr/local/bin/
- # (Only for HTTPS Ingress for Minio tenant) Install `openssl`
- sudo apt-get install openssl -y
-fi
-
-# Flux client
-FLUX_CLI_VERSION="2.4.0"
-curl -s https://fluxcd.io/install.sh | sudo FLUX_VERSION=${FLUX_CLI_VERSION} bash
-# Autocompletion
-. <(flux completion bash)
-
-# Argo client
-ARGO_VERSION="v3.5.7"
-curl -sLO https://github.com/argoproj/argo-workflows/releases/download/${ARGO_VERSION}/argo-linux-amd64.gz
-gunzip argo-linux-amd64.gz
-chmod +x argo-linux-amd64
-sudo mv ./argo-linux-amd64 /usr/local/bin/argo
-
-# Kustomize
-KUSTOMIZE_VERSION="5.4.3"
-curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash -s -- ${KUSTOMIZE_VERSION}
-sudo install -o root -g root -m 0755 kustomize /usr/local/bin/kustomize
-rm kustomize
-
-# yq
-VERSION=v4.33.3
-BINARY=yq_linux_amd64
-curl -L https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -o yq
-sudo mv yq /usr/local/bin/yq
-sudo chmod +x /usr/local/bin/yq
-
-popd
diff --git a/installers/mgmt-cluster/mgmt-operators-and-crds/add-operators-and-crds.sh b/installers/mgmt-operators-and-crds/add-operators-and-crds.sh
similarity index 100%
rename from installers/mgmt-cluster/mgmt-operators-and-crds/add-operators-and-crds.sh
rename to installers/mgmt-operators-and-crds/add-operators-and-crds.sh
diff --git a/installers/mgmt-cluster/mgmt-operators-and-crds/configure-workflows.sh b/installers/mgmt-operators-and-crds/configure-workflows.sh
similarity index 100%
rename from installers/mgmt-cluster/mgmt-operators-and-crds/configure-workflows.sh
rename to installers/mgmt-operators-and-crds/configure-workflows.sh
diff --git a/installers/mgmt-cluster/mgmt-operators-and-crds/library/functions.sh b/installers/mgmt-operators-and-crds/library/functions.sh
similarity index 100%
rename from installers/mgmt-cluster/mgmt-operators-and-crds/library/functions.sh
rename to installers/mgmt-operators-and-crds/library/functions.sh
diff --git a/installers/mgmt-cluster/mgmt-operators-and-crds/library/trap.sh b/installers/mgmt-operators-and-crds/library/trap.sh
similarity index 100%
rename from installers/mgmt-cluster/mgmt-operators-and-crds/library/trap.sh
rename to installers/mgmt-operators-and-crds/library/trap.sh
diff --git a/installers/mgmt-cluster/minio/00-base-config.rc b/installers/minio/00-base-config.rc
similarity index 100%
rename from installers/mgmt-cluster/minio/00-base-config.rc
rename to installers/minio/00-base-config.rc
diff --git a/installers/mgmt-cluster/minio/01-deploy-minio-operator.sh b/installers/minio/01-deploy-minio-operator.sh
similarity index 100%
rename from installers/mgmt-cluster/minio/01-deploy-minio-operator.sh
rename to installers/minio/01-deploy-minio-operator.sh
diff --git a/installers/mgmt-cluster/minio/02-create-minio-tenant.sh b/installers/minio/02-create-minio-tenant.sh
similarity index 100%
rename from installers/mgmt-cluster/minio/02-create-minio-tenant.sh
rename to installers/minio/02-create-minio-tenant.sh
diff --git a/installers/mgmt-cluster/minio/03-deploy-ingress-for-minio.sh b/installers/minio/03-deploy-ingress-for-minio.sh
similarity index 100%
rename from installers/mgmt-cluster/minio/03-deploy-ingress-for-minio.sh
rename to installers/minio/03-deploy-ingress-for-minio.sh
diff --git a/installers/mgmt-cluster/minio/04-get-minio-connection-info.rc b/installers/minio/04-get-minio-connection-info.rc
similarity index 100%
rename from installers/mgmt-cluster/minio/04-get-minio-connection-info.rc
rename to installers/minio/04-get-minio-connection-info.rc
diff --git a/installers/mgmt-cluster/minio/05-export-connection-info.sh b/installers/minio/05-export-connection-info.sh
similarity index 100%
rename from installers/mgmt-cluster/minio/05-export-connection-info.sh
rename to installers/minio/05-export-connection-info.sh
diff --git a/installers/mgmt-cluster/minio/ALL-IN-ONE-Minio-install.sh b/installers/minio/ALL-IN-ONE-Minio-install.sh
similarity index 100%
rename from installers/mgmt-cluster/minio/ALL-IN-ONE-Minio-install.sh
rename to installers/minio/ALL-IN-ONE-Minio-install.sh
diff --git a/installers/mgmt-cluster/minio/README.md b/installers/minio/README.md
similarity index 100%
rename from installers/mgmt-cluster/minio/README.md
rename to installers/minio/README.md
diff --git a/installers/mgmt-cluster/minio/ingress-manifests/console/ingress-console.yaml b/installers/minio/ingress-manifests/console/ingress-console.yaml
similarity index 100%
rename from installers/mgmt-cluster/minio/ingress-manifests/console/ingress-console.yaml
rename to installers/minio/ingress-manifests/console/ingress-console.yaml
diff --git a/installers/mgmt-cluster/minio/ingress-manifests/tenant/ingress-tenant.yaml b/installers/minio/ingress-manifests/tenant/ingress-tenant.yaml
similarity index 100%
rename from installers/mgmt-cluster/minio/ingress-manifests/tenant/ingress-tenant.yaml
rename to installers/minio/ingress-manifests/tenant/ingress-tenant.yaml
diff --git a/installers/mgmt-cluster/minio/library/functions.sh b/installers/minio/library/functions.sh
similarity index 100%
rename from installers/mgmt-cluster/minio/library/functions.sh
rename to installers/minio/library/functions.sh
diff --git a/installers/mgmt-cluster/minio/library/trap.sh b/installers/minio/library/trap.sh
similarity index 100%
rename from installers/mgmt-cluster/minio/library/trap.sh
rename to installers/minio/library/trap.sh
diff --git a/installers/openstack/install_to_openstack.sh b/installers/openstack/install_to_openstack.sh
index 30ad10d..1c8d7a8 100755
--- a/installers/openstack/install_to_openstack.sh
+++ b/installers/openstack/install_to_openstack.sh
@@ -34,10 +34,8 @@
echo "OPENSTACK_VM_NAME"="$OPENSTACK_VM_NAME"
echo "OPENSTACK_PYTHON_VENV"="$OPENSTACK_PYTHON_VENV"
-source $OSM_DEVOPS/common/logging
-source $OSM_DEVOPS/common/track
-
-install_to_openstack $OPENSTACK_OPENRC_FILE_OR_CLOUD $OPENSTACK_PUBLIC_NET_NAME $OPENSTACK_ATTACH_VOLUME
+source $OSM_DEVOPS/library/logging
+source $OSM_DEVOPS/library/track
[ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
diff --git a/installers/osm_health.sh b/installers/osm_health.sh
deleted file mode 100755
index 651e9db..0000000
--- a/installers/osm_health.sh
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2020 Telefónica Investigación y Desarrollo S.A.U.
-#
-# 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.
-
-# Default values
-sampling_period=5 # seconds
-time_for_readiness=2 # minutes ready
-time_for_failure=7 # minutes broken
-KUBERNETES= # By default, assumes Docker Swarm installation
-STACK_NAME=osm # By default, "osm"
-
-while getopts "p:r:f:s:k" o; do
- case "${o}" in
- p)
- sampling_period=${OPTARG}
- ;;
- r)
- time_for_readiness=${OPTARG}
- ;;
- f)
- time_for_failure=${OPTARG}
- ;;
- s)
- STACK_NAME=${OPTARG}
- ;;
- k)
- KUBERNETES="y"
- ;;
- esac
-done
-
-oks_threshold=$((time_for_readiness*60/${sampling_period})) # No. ok samples to declare the system ready
-failures_threshold=$((time_for_failure*60/${sampling_period})) # No. nok samples to declare the system broken
-failures_in_a_row=0
-oks_in_a_row=0
-
-
-# Show status of the OSM services deployed with helm
-echo "helm -n ${STACK_NAME} list"
-helm -n ${STACK_NAME} list
-echo "helm -n ${STACK_NAME} status ${STACK_NAME}"
-helm -n ${STACK_NAME} status ${STACK_NAME}
-
-####################################################################################
-# Loop to check system readiness
-####################################################################################
-while [[ (${failures_in_a_row} -lt ${failures_threshold}) && (${oks_in_a_row} -lt ${oks_threshold}) ]]
-do
-
- #------------ CHECKS FOR KUBERNETES INSTALLATION
- if [ -n "$KUBERNETES" ]
- then
-
- # State of Deployments
- DEPLOYMENTS_STATE=$(kubectl get deployment -n ${STACK_NAME} --no-headers 2>&1)
- DEPLOYMENTS_READY=$(echo "${DEPLOYMENTS_STATE}" | awk '$2=="1/1" && $4=="1" {printf ("%20s\t%s\t%s\n", $1, $2, $4)}')
- DEPLOYMENTS_NOT_READY=$(echo "${DEPLOYMENTS_STATE}" | awk '$2!="1/1" || $4!="1" {printf ("%20s\t%s\t%s\n", $1, $2, $4)}')
- COUNT_DEPLOYMENTS_READY=$(echo "${DEPLOYMENTS_READY}"| grep -v -e '^$' | wc -l)
- COUNT_DEPLOYMENTS_NOT_READY=$(echo "${DEPLOYMENTS_NOT_READY}" | grep -v -e '^$' | wc -l)
-
- # State of Statefulsets
- STS_STATE=$(kubectl get statefulset -n ${STACK_NAME} --no-headers 2>&1)
- STS_READY=$(echo "${STS_STATE}" | awk '$2=="1/1" || $2=="2/2" || $2=="3/3" {printf ("%20s\t%s\t%s\n", $1, $2, $4)}')
- STS_NOT_READY=$(echo "${STS_STATE}" | awk '$2!="1/1" && $2!="2/2" && $2!="3/3" {printf ("%20s\t%s\t%s\n", $1, $2, $4)}')
- COUNT_STS_READY=$(echo "${STS_READY}" | grep -v -e '^$' | wc -l)
- COUNT_STS_NOT_READY=$(echo "${STS_NOT_READY}" | grep -v -e '^$' | wc -l)
-
- # OK sample
- if [[ $((${COUNT_DEPLOYMENTS_NOT_READY}+${COUNT_STS_NOT_READY})) -eq 0 ]]
- then
- ((++oks_in_a_row))
- failures_in_a_row=0
- echo -ne ===\> Successful checks: "${oks_in_a_row}"/${oks_threshold}\\r
- # NOK sample
- else
- ((++failures_in_a_row))
- oks_in_a_row=0
- echo
- echo Bootstraping... "${failures_in_a_row}" attempts of ${failures_threshold}
-
- # Reports failed deployments
- if [[ "${COUNT_DEPLOYMENTS_NOT_READY}" -ne 0 ]]
- then
- echo ${COUNT_DEPLOYMENTS_NOT_READY} of $((${COUNT_DEPLOYMENTS_NOT_READY}+${COUNT_DEPLOYMENTS_READY})) deployments starting:
- echo "${DEPLOYMENTS_NOT_READY}"
- echo
- fi
-
- # Reports failed statefulsets
- if [[ "${COUNT_STS_NOT_READY}" -ne 0 ]]
- then
- echo ${COUNT_STS_NOT_READY} of $((${COUNT_STS_NOT_READY}+${COUNT_STS_READY})) statefulsets starting:
- echo "${STS_NOT_READY}"
- echo
- fi
- fi
-
- #------------ CHECKS FOR DOCKER SWARM INSTALLATION
- else
- # State of Docker Services
- SERVICES_STATE=$(sg docker -c "docker service ls" 2>&1 | grep " ${STACK_NAME}_")
- SERVICES_READY=$(echo "${SERVICES_STATE}" | awk '$3=="replicated" && $4=="1/1" {printf ("%20s\t%s\n", $2, $4)}')
- SERVICES_NOT_READY=$(echo "${SERVICES_STATE}" | awk '$3=="replicated" && $4!="1/1" {printf ("%20s\t%s\n", $2, $4)}')
- COUNT_SERVICES_READY=$(echo "${SERVICES_READY}" | grep -v -e '^$' | wc -l)
- COUNT_SERVICES_NOT_READY=$(echo "${SERVICES_NOT_READY}" | grep -v -e '^$' | wc -l)
-
- # OK sample
- if [[ ${COUNT_SERVICES_NOT_READY} -eq 0 ]]
- then
- ((++oks_in_a_row))
- failures_in_a_row=0
- echo -ne ===\> Successful checks: "${oks_in_a_row}"/${oks_threshold}\\r
- # NOK sample
- else
- ((++failures_in_a_row))
- oks_in_a_row=0
- echo
- echo Bootstraping... "${failures_in_a_row}" attempts of ${failures_threshold}
- echo ${COUNT_SERVICES_NOT_READY} of $((${COUNT_SERVICES_NOT_READY}+${COUNT_SERVICES_READY})) services starting:
- echo "${SERVICES_NOT_READY}"
- fi
- fi
-
- #------------ NEXT SAMPLE
- sleep ${sampling_period}
-
-done
-
-
-####################################################################################
-# OUTCOME
-####################################################################################
-if [[ (${failures_in_a_row} -ge ${failures_threshold}) ]]
-then
- echo
- echo SYSTEM IS BROKEN
- exit 1
-else
- echo
- echo SYSTEM IS READY
-fi
diff --git a/installers/test_track.sh b/installers/test_track.sh
index 3655c5e..3f41e1f 100755
--- a/installers/test_track.sh
+++ b/installers/test_track.sh
@@ -13,8 +13,8 @@
# limitations under the License.
#
-source ../common/track
-source ../common/logging
+source ../library/track
+source ../library/logging
RELEASE="test_track"
OSM_DOCKER_TAG=latest
diff --git a/installers/uninstall_osm.sh b/installers/uninstall_osm.sh
deleted file mode 100755
index a57c60f..0000000
--- a/installers/uninstall_osm.sh
+++ /dev/null
@@ -1,331 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-#removes osm deployments and services
-function remove_k8s_namespace() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- kubectl delete ns $1
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function remove_volumes() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- k8_volume=$1
- echo "Removing ${k8_volume}"
- sudo rm -rf ${k8_volume}
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function uninstall_k8s_monitoring() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- # uninstall OSM monitoring
- sudo $OSM_DEVOPS/installers/k8s/uninstall_osm_k8s_monitoring.sh
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-#Uninstall osmclient
-function uninstall_osmclient() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- sudo apt-get remove --purge -y python3-osmclient
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-#Uninstall OSM: remove deployments and services
-function uninstall_osm() {
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- echo -e "\nUninstalling OSM"
- if [ -n "$INSTALL_K8S_MONITOR" ]; then
- # uninstall OSM MONITORING
- uninstall_k8s_monitoring
- fi
- remove_k8s_namespace $OSM_NAMESPACE
- echo "Now osm docker images and volumes will be deleted"
- # TODO: clean-up of images should take into account if other tags were used for specific modules
- newgrp docker << EONG
-for module in ro lcm keystone nbi mon osmclient; do
- docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/${module}:${OSM_DOCKER_TAG}
-done
-EONG
-
- sg docker -c "docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/ng-ui:${OSM_DOCKER_TAG}"
-
- OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_NAMESPACE}"
- remove_volumes $OSM_NAMESPACE_VOL
-
- [ -z "$CONTROLLER_NAME" ] && sg lxd -c "juju kill-controller -t 0 -y $OSM_NAMESPACE"
-
- # Cleanup Openstack installer venv
- if [ -d "$OPENSTACK_PYTHON_VENV" ]; then
- rm -r $OPENSTACK_PYTHON_VENV
- fi
-
- [ -z "$INSTALL_NOHOSTCLIENT" ] && uninstall_osmclient
- echo "Some docker images will be kept in case they are used by other docker stacks"
- echo "To remove them, just run 'docker image prune' in a terminal"
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
- return 0
-}
-
-function ask_user(){
- [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
- # ask to the user and parse a response among 'y', 'yes', 'n' or 'no'. Case insensitive
- # Params: $1 text to ask; $2 Action by default, can be 'y' for yes, 'n' for no, other or empty for not allowed
- # Return: true(0) if user type 'yes'; false (1) if user type 'no'
- read -e -p "$1" USER_CONFIRMATION
- while true ; do
- [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'y' ] && return 0
- [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'n' ] && return 1
- [ "${USER_CONFIRMATION,,}" == "yes" ] || [ "${USER_CONFIRMATION,,}" == "y" ] && return 0
- [ "${USER_CONFIRMATION,,}" == "no" ] || [ "${USER_CONFIRMATION,,}" == "n" ] && return 1
- read -e -p "Please type 'yes' or 'no': " USER_CONFIRMATION
- done
- [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-LXD_VERSION=4.0
-JUJU_VERSION=2.9
-UNINSTALL=""
-DEVELOP=""
-UPDATE=""
-RECONFIGURE=""
-TEST_INSTALLER=""
-INSTALL_LXD=""
-SHOWOPTS=""
-COMMIT_ID=""
-ASSUME_YES=""
-APT_PROXY_URL=""
-INSTALL_FROM_SOURCE=""
-DEBUG_INSTALL=""
-RELEASE="ReleaseTEN"
-REPOSITORY="stable"
-INSTALL_VIMEMU=""
-LXD_REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/lxd"
-LXD_REPOSITORY_PATH=""
-INSTALL_LIGHTWEIGHT="y"
-INSTALL_TO_OPENSTACK=""
-OPENSTACK_OPENRC_FILE_OR_CLOUD=""
-OPENSTACK_PUBLIC_NET_NAME=""
-OPENSTACK_ATTACH_VOLUME="false"
-OPENSTACK_SSH_KEY_FILE=""
-OPENSTACK_USERDATA_FILE=""
-OPENSTACK_VM_NAME="server-osm"
-OPENSTACK_PYTHON_VENV="$HOME/.virtual-envs/osm"
-INSTALL_ONLY=""
-TO_REBUILD=""
-INSTALL_NOLXD=""
-INSTALL_NODOCKER=""
-INSTALL_NOJUJU=""
-INSTALL_K8S_MONITOR=""
-INSTALL_NOHOSTCLIENT=""
-INSTALL_CACHELXDIMAGES=""
-OSM_DEVOPS=
-OSM_VCA_HOST=
-OSM_VCA_SECRET=
-OSM_VCA_PUBKEY=
-OSM_VCA_CLOUDNAME="localhost"
-OSM_VCA_K8S_CLOUDNAME="k8scloud"
-OSM_NAMESPACE=osm
-NO_HOST_PORTS=""
-DOCKER_NOBUILD=""
-REPOSITORY_KEY="OSM%20ETSI%20Release%20Key.gpg"
-REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/debian"
-OSM_WORK_DIR="/etc/osm"
-OSM_HOST_VOL="/var/lib/osm"
-OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_NAMESPACE}"
-OSM_DOCKER_TAG=latest
-DOCKER_USER=opensourcemano
-PULL_IMAGES="y"
-KAFKA_TAG=2.11-1.0.2
-PROMETHEUS_TAG=v2.4.3
-GRAFANA_TAG=latest
-PROMETHEUS_NODE_EXPORTER_TAG=0.18.1
-PROMETHEUS_CADVISOR_TAG=latest
-KEYSTONEDB_TAG=10
-OSM_DATABASE_COMMONKEY=
-ELASTIC_VERSION=6.4.2
-ELASTIC_CURATOR_VERSION=5.5.4
-POD_NETWORK_CIDR=10.244.0.0/16
-K8S_MANIFEST_DIR="/etc/kubernetes/manifests"
-RE_CHECK='^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
-DOCKER_REGISTRY_URL=
-DOCKER_PROXY_URL=
-MODULE_DOCKER_TAG=
-
-while getopts ":a:b:r:n:k:u:R:D:o:O:m:N:H:S:s:t:U:P:A:l:L:K:d:p:T:f:F:-: hy" o; do
- case "${o}" in
- a)
- APT_PROXY_URL=${OPTARG}
- ;;
- b)
- COMMIT_ID=${OPTARG}
- PULL_IMAGES=""
- ;;
- r)
- REPOSITORY="${OPTARG}"
- REPO_ARGS+=(-r "$REPOSITORY")
- ;;
- k)
- REPOSITORY_KEY="${OPTARG}"
- REPO_ARGS+=(-k "$REPOSITORY_KEY")
- ;;
- u)
- REPOSITORY_BASE="${OPTARG}"
- REPO_ARGS+=(-u "$REPOSITORY_BASE")
- ;;
- R)
- RELEASE="${OPTARG}"
- REPO_ARGS+=(-R "$RELEASE")
- ;;
- D)
- OSM_DEVOPS="${OPTARG}"
- ;;
- o)
- INSTALL_ONLY="y"
- [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR="y" && continue
- ;;
- O)
- INSTALL_TO_OPENSTACK="y"
- if [ -n "${OPTARG}" ]; then
- OPENSTACK_OPENRC_FILE_OR_CLOUD="${OPTARG}"
- else
- echo -e "Invalid argument for -O : ' $OPTARG'\n" >&2
- usage && exit 1
- fi
- ;;
- f)
- OPENSTACK_SSH_KEY_FILE="${OPTARG}"
- ;;
- F)
- OPENSTACK_USERDATA_FILE="${OPTARG}"
- ;;
- N)
- OPENSTACK_PUBLIC_NET_NAME="${OPTARG}"
- ;;
- m)
- [ "${OPTARG}" == "NG-UI" ] && TO_REBUILD="$TO_REBUILD NG-UI" && continue
- [ "${OPTARG}" == "NBI" ] && TO_REBUILD="$TO_REBUILD NBI" && continue
- [ "${OPTARG}" == "LCM" ] && TO_REBUILD="$TO_REBUILD LCM" && continue
- [ "${OPTARG}" == "RO" ] && TO_REBUILD="$TO_REBUILD RO" && continue
- [ "${OPTARG}" == "MON" ] && TO_REBUILD="$TO_REBUILD MON" && continue
- [ "${OPTARG}" == "osmclient" ] && TO_REBUILD="$TO_REBUILD osmclient" && continue
- [ "${OPTARG}" == "KAFKA" ] && TO_REBUILD="$TO_REBUILD KAFKA" && continue
- [ "${OPTARG}" == "MONGO" ] && TO_REBUILD="$TO_REBUILD MONGO" && continue
- [ "${OPTARG}" == "PROMETHEUS" ] && TO_REBUILD="$TO_REBUILD PROMETHEUS" && continue
- [ "${OPTARG}" == "PROMETHEUS-CADVISOR" ] && TO_REBUILD="$TO_REBUILD PROMETHEUS-CADVISOR" && continue
- [ "${OPTARG}" == "KEYSTONE-DB" ] && TO_REBUILD="$TO_REBUILD KEYSTONE-DB" && continue
- [ "${OPTARG}" == "GRAFANA" ] && TO_REBUILD="$TO_REBUILD GRAFANA" && continue
- [ "${OPTARG}" == "NONE" ] && TO_REBUILD="$TO_REBUILD NONE" && continue
- ;;
- H)
- OSM_VCA_HOST="${OPTARG}"
- ;;
- S)
- OSM_VCA_SECRET="${OPTARG}"
- ;;
- s)
- OSM_NAMESPACE="${OPTARG}" && [[ ! "${OPTARG}" =~ $RE_CHECK ]] && echo "Namespace $OPTARG is invalid. Regex used for validation is $RE_CHECK" && exit 0
- ;;
- t)
- OSM_DOCKER_TAG="${OPTARG}"
- REPO_ARGS+=(-t "$OSM_DOCKER_TAG")
- ;;
- U)
- DOCKER_USER="${OPTARG}"
- ;;
- P)
- OSM_VCA_PUBKEY=$(cat ${OPTARG})
- ;;
- A)
- OSM_VCA_APIPROXY="${OPTARG}"
- ;;
- l)
- LXD_CLOUD_FILE="${OPTARG}"
- ;;
- L)
- LXD_CRED_FILE="${OPTARG}"
- ;;
- K)
- CONTROLLER_NAME="${OPTARG}"
- ;;
- d)
- DOCKER_REGISTRY_URL="${OPTARG}"
- ;;
- p)
- DOCKER_PROXY_URL="${OPTARG}"
- ;;
- T)
- MODULE_DOCKER_TAG="${OPTARG}"
- ;;
- -)
- [ "${OPTARG}" == "help" ] && usage && exit 0
- [ "${OPTARG}" == "source" ] && INSTALL_FROM_SOURCE="y" && PULL_IMAGES="" && continue
- [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="--debug" && continue
- [ "${OPTARG}" == "develop" ] && DEVELOP="y" && continue
- [ "${OPTARG}" == "uninstall" ] && UNINSTALL="y" && continue
- [ "${OPTARG}" == "update" ] && UPDATE="y" && continue
- [ "${OPTARG}" == "reconfigure" ] && RECONFIGURE="y" && continue
- [ "${OPTARG}" == "test" ] && TEST_INSTALLER="y" && continue
- [ "${OPTARG}" == "lxdinstall" ] && INSTALL_LXD="y" && continue
- [ "${OPTARG}" == "nolxd" ] && INSTALL_NOLXD="y" && continue
- [ "${OPTARG}" == "nodocker" ] && INSTALL_NODOCKER="y" && continue
- [ "${OPTARG}" == "showopts" ] && SHOWOPTS="y" && continue
- [ "${OPTARG}" == "nohostports" ] && NO_HOST_PORTS="y" && continue
- [ "${OPTARG}" == "nojuju" ] && INSTALL_NOJUJU="--nojuju" && continue
- [ "${OPTARG}" == "nodockerbuild" ] && DOCKER_NOBUILD="y" && continue
- [ "${OPTARG}" == "nohostclient" ] && INSTALL_NOHOSTCLIENT="y" && continue
- [ "${OPTARG}" == "pullimages" ] && continue
- [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR="y" && continue
- [ "${OPTARG}" == "charmed" ] && CHARMED="y" && continue
- [ "${OPTARG}" == "bundle" ] && continue
- [ "${OPTARG}" == "k8s" ] && continue
- [ "${OPTARG}" == "lxd" ] && continue
- [ "${OPTARG}" == "lxd-cred" ] && continue
- [ "${OPTARG}" == "microstack" ] && continue
- [ "${OPTARG}" == "overlay" ] && continue
- [ "${OPTARG}" == "only-vca" ] && continue
- [ "${OPTARG}" == "vca" ] && continue
- [ "${OPTARG}" == "ha" ] && continue
- [ "${OPTARG}" == "tag" ] && continue
- [ "${OPTARG}" == "registry" ] && continue
- [ "${OPTARG}" == "volume" ] && OPENSTACK_ATTACH_VOLUME="true" && continue
- [ "${OPTARG}" == "nocachelxdimages" ] && continue
- [ "${OPTARG}" == "cachelxdimages" ] && INSTALL_CACHELXDIMAGES="--cachelxdimages" && continue
- echo -e "Invalid option: '--$OPTARG'\n" >&2
- usage && exit 1
- ;;
- :)
- echo "Option -$OPTARG requires an argument" >&2
- usage && exit 1
- ;;
- \?)
- echo -e "Invalid option: '-$OPTARG'\n" >&2
- usage && exit 1
- ;;
- h)
- usage && exit 0
- ;;
- y)
- ASSUME_YES="y"
- ;;
- *)
- usage && exit 1
- ;;
- esac
-done
-
-source $OSM_DEVOPS/common/all_funcs
-
-uninstall_osm
-