#! /bin/bash # Read all command line arguments for ARGUMENT in "$@" do KEY=$(echo $ARGUMENT | cut -f1 -d=) VALUE=$(echo $ARGUMENT | cut -f2 -d=) case "$KEY" in cluster_provider) cluster_provider=${VALUE} ;; cluster_region) cluster_region=${VALUE} ;; cluster_type) cluster_type=${VALUE} ;; cluster_name) cluster_name=${VALUE} ;; namespace) namespace=${VALUE} ;; opsverse_repo_username) opsverse_repo_username=${VALUE} ;; opsverse_repo_password) opsverse_repo_password=${VALUE} ;; opsverse_application_sourceRepoURL) opsverse_application_sourceRepoURL=${VALUE} ;; opsverse_registry_username) opsverse_registry_username=${VALUE} ;; opsverse_registry_password) opsverse_registry_password=${VALUE} ;; *) esac done # TODO # print help if needed # Setup some derived variables opsverse_application_sourceRepoPath="$cluster_type/$cluster_provider/$cluster_region/$cluster_name/apps" # # Testing # echo "cluster_name = $cluster_name" # echo "namespace = $namespace" # echo "opsverse_repo_username = $opsverse_repo_username" # echo "opsverse_repo_password = $opsverse_repo_password" # echo "opsverse_application_sourceRepoURL = $opsverse_application_sourceRepoURL" # echo "opsverse_application_sourceRepoPath = $opsverse_application_sourceRepoPath" # echo "opsverse_registry_username = $opsverse_registry_username" # echo "opsverse_registry_password = $opsverse_registry_password" # Validate that all required inputs are provided echo "" echo "Validating input arguments ..." if [[ -n $cluster_name ]] \ && [[ -n $namespace ]] \ && [[ -n $cluster_type ]] \ && [[ -n $cluster_provider ]] \ && [[ -n $cluster_region ]] \ && [[ -n $opsverse_repo_username ]] \ && [[ -n $opsverse_repo_password ]] \ && [[ -n $opsverse_application_sourceRepoURL ]] \ && [[ -n $opsverse_registry_username ]] \ && [[ -n $opsverse_registry_password ]]; # && [[ -n $opsverse_application_sourceRepoPath ]] \ then echo "All required arguments are present. Continuing ..." else echo "Not all required arguments are present. The following arguments are required: " echo " cluster_name" echo " cluster_type" echo " cluster_provider" echo " cluster_region" echo " namespace" echo " opsverse_repo_username" echo " opsverse_repo_password" echo " opsverse_application_sourceRepoURL" echo " opsverse_registry_username" echo " opsverse_registry_password" exit 1 fi # Validate if kubectl and helm are available command -v "kubectl" >/dev/null 2>&1 if [[ $? -ne 0 ]]; then echo "kubectl is not found. Please check if it is installed." echo "Exiting ..." exit 1 fi command -v "helm" >/dev/null 2>&1 if [[ $? -ne 0 ]]; then echo "helm is not found. Please check if it is installed." echo "Exiting ..." exit 1 fi echo "" echo "Installing ArgoCD CRD" kubectl apply -f https://raw.githubusercontent.com/devopsnow-deployments/tools/main/scripts/application-crd.yaml echo "Installing the bootstrap components to the namespace $namespace ..." helm upgrade --install remote-bootstrap-now -n $namespace --create-namespace remote-bootstrap \ --repo https://registry.devopsnow.io/chartrepo/internal \ --username $opsverse_registry_username \ --password $opsverse_registry_password \ --set devopsnow.repo.username=$opsverse_repo_username \ --set devopsnow.repo.password=$opsverse_repo_password \ --set devopsnow.application.sourceRepoURL=$opsverse_application_sourceRepoURL \ --set devopsnow.application.sourceRepoPath=$opsverse_application_sourceRepoPath echo "" echo "Waiting for sealed-secrets component to create the key pair ..." sleep 60 echo "Please send the following public key (base64 encoded) back to OpsVerse..." echo "" echo `kubectl get secret -n ${namespace} -l 'sealedsecrets.bitnami.com/sealed-secrets-key=active' -o jsonpath='{.items[].data.tls\.crt}'`