167 lines
4.7 KiB
Bash
Executable File
167 lines
4.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script will help you running the different services needed
|
|
# in the open cloud stack :
|
|
# - checks if directories containing the core services are present
|
|
# - allows you to build or not each service image
|
|
# - launch the containerized service
|
|
|
|
# TODO :
|
|
# - Provide a list of all directories wich contain a dockerfile and choose which to build
|
|
# - Parallelize building
|
|
# - Flag building errors without stoping the other and flooding the stdout
|
|
# - Provide a list of directories with a docker-compose and choose which to launch
|
|
|
|
# Define the required directories
|
|
REQUIRED_DIRECTORIES=("oc-auth" "oc-catalog" "oc-schedulerd")
|
|
oc_root=""
|
|
|
|
check_directory() {
|
|
for dir in "${REQUIRED_DIRECTORIES[@]}"; do
|
|
if [ ! -d "$dir" ]; then
|
|
return 1 # Return failure if any required directory is missing
|
|
fi
|
|
done
|
|
return 0
|
|
}
|
|
|
|
check_path() {
|
|
local path="$1"
|
|
|
|
if [ -e "$PWD/$path" ]; then
|
|
cd "$PWD/$path"
|
|
echo "$PWD"
|
|
elif [ -e "$path" ]; then
|
|
echo "$path"
|
|
else
|
|
|
|
echo "$path does not exist"
|
|
return 1 # Return a non-zero exit status to indicate failure
|
|
fi
|
|
}
|
|
|
|
|
|
create_oc_root_env() {
|
|
if [ -z ${OC_ROOT} ]; then
|
|
echo "export OC_ROOT='$1'" >> ~/.bashrc
|
|
echo "OC_ROOT has been added to your ~/.bashrc file for next executions."
|
|
echo "Please run 'source ~/.bashrc' or restart your terminal to apply the changes."
|
|
fi
|
|
}
|
|
|
|
# Main script
|
|
echo "Verifying the script is being run in the correct directory..."
|
|
sleep 1.1
|
|
echo
|
|
|
|
if [ ! -z ${OC_ROOT} ]; then
|
|
echo "la variable env existe : $OC_ROOT"
|
|
cd $OC_ROOT
|
|
oc_root=${OC_ROOT}
|
|
fi
|
|
|
|
if ! check_directory; then
|
|
echo "The current directory ($(pwd)) does not contain all required directories:"
|
|
for dir in "${REQUIRED_DIRECTORIES[@]}"; do
|
|
echo " - $dir"
|
|
done
|
|
echo
|
|
|
|
echo "Please ensure the script is run from the correct root directory."
|
|
read -p "Would you like to specify the path to the correct directory? (y/n): " choice
|
|
|
|
if [[ "$choice" =~ ^[Yy]$ ]]; then
|
|
read -p "Enter the relative or absolute path to the correct directory: " target_path
|
|
target_path=$(eval echo "$target_path")
|
|
target_path=$(check_path "$target_path")
|
|
echo
|
|
echo "updated path : $target_path"
|
|
echo
|
|
|
|
cd "$target_path" || { echo "Failed to change directory. Exiting."; exit 1; }
|
|
if check_directory; then
|
|
oc_root="$(pwd)"
|
|
echo "Directory verified successfully. All required directories are present."
|
|
echo
|
|
create_oc_root_env "$oc_root"
|
|
sleep 2.5
|
|
else
|
|
echo "The specified directory does not contain all required directories. Exiting."
|
|
exit 1
|
|
fi
|
|
|
|
else
|
|
echo "Please rerun the script from the correct directory. Exiting."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Directory verification passed. All required directories are present."
|
|
create_oc_root_env "$(pwd)"
|
|
fi
|
|
|
|
arr=("oc-catalog" "oc-datacenter" "oc-peer" "oc-scheduler" "oc-shared" "oc-workflow" "oc-workspace" "oc-auth")
|
|
oc_directories=($(find . -maxdepth 1 -type d -name "oc-*" -exec basename {} \;))
|
|
|
|
# Check for directories in 'arr' that are missing from 'oc_directories'
|
|
missing_directories=()
|
|
for dir in "${arr[@]}"; do
|
|
if [[ ! " ${oc_directories[@]} " =~ " $dir " ]]; then
|
|
missing_directories+=("$dir")
|
|
fi
|
|
done
|
|
|
|
if [ ${#missing_directories[@]} -gt 0 ]; then
|
|
echo "Warning: The following directories are missing and won't be built:"
|
|
for missing in "${missing_directories[@]}"; do
|
|
echo "- $missing"
|
|
done
|
|
|
|
read -p "Do you want to proceede with deploy, without these missing components ?[Y/n]: " choice
|
|
if [[ ! "$choice" =~ ^[Yy]$ ]]; then
|
|
echo "Exiting the Open Cloud deployment process"
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
|
|
# Continue with the rest of your script
|
|
echo "Executing the main script..."
|
|
|
|
docker create networks catalog | true
|
|
|
|
docker kill mongo | true
|
|
docker rm mongo | true
|
|
|
|
docker kill nats | true
|
|
docker rm nats | true
|
|
|
|
docker kill loki | true
|
|
docker rm loki | true
|
|
|
|
docker kill graphana | true
|
|
docker rm graphana | true
|
|
|
|
cd ./oc-auth/ldap-hydra && docker compose up -d
|
|
cd ../keto && docker compose up -d
|
|
cd ../../oc-catalog && docker compose -f docker-compose.base.yml up -d
|
|
cd ../oc-schedulerd && docker compose -f docker-compose.tools.yml up -d
|
|
|
|
|
|
for i in "${oc_directories[@]}"
|
|
do
|
|
cd ../$i
|
|
if [ -e "$PWD/Dockerfile" ];then
|
|
read -p "Do you want to build the image for $i [y/n] : " build
|
|
if [[ "$build" =~ ^[Yy]$ ]];then
|
|
docker build . -t $i
|
|
fi
|
|
|
|
if [ -e "$PWD/docker-compose.yml" ];then
|
|
docker compose up -d
|
|
fi
|
|
fi
|
|
|
|
done
|
|
|
|
cd ../oc-schedulerd && go build . && ./oc-schedulerd
|