grafana-loki-minio/manage-old.sh
2025-06-15 18:16:05 +02:00

192 lines
5.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
############################################################
# Decription: Script to manage stack docker
#
# Author: Gilles Mouchet (gilles.mouchet@gmail.com)
# Creation Date: 12-06-2025
# Version: 1.0
# Usage: ./manage.sh
# Changelog:
# V1.0 - dd-Mmm-2025 - GMo
# Added
# - Creation of script from scratch
#
############################################################
#-----------------------------------------------------------------
# Doesn't change anything from here
#-----------------------------------------------------------------
version="1.0-rc1"
prog_name="./$(/bin/basename $0)"
containers_to_start=(init minio minio-cli grafana loki promtail prometheus node-exporter proxy)
containers_all=("${containers_to_start[@]}" log-generator dns-tools)
# Couleurs
VERT="\e[32m"
ROUGE="\e[31m"
NORMAL="\e[0m"
#-----------------------------------------------------------------
# Functions
#-----------------------------------------------------------------
# display help
function print_usage {
/bin/cat << EOF
Usage: $prog_name [options]
Options:
config Create folder for persit. vol. and copy conf files
param Display all vars defined in .env file
list Display container (servie) list define in docker compose file
create Create container
start Start stack '${COMPOSE_PROJECT_NAME}'
stop Stop stack '${COMPOSE_PROJECT_NAME}'
down Stop stack '${COMPOSE_PROJECT_NAME}' and delete containers
restart Restart stack '${COMPOSE_PROJECT_NAME}'
version,-v,--version Display script version
help,-h,--help Display this help
Examples:
To start stack '${COMPOSE_PROJECT_NAME}'
$prog_name start
To stop stack '${COMPOSE_PROJECT_NAME}'
$prog_name stop
To start a specific container and his depend
docker compose up <container_name> -d
Ex:
docker compose up minio-cli -d
To create a new stack
$prog_name config
$prog_name create
$prog_name start
EOF
}
# create all containers
function create_container {
for cont_item in "${containers_all[@]}"; do
# check if container exist. If not create it
if [ $(docker ps -a | grep ${COMPOSE_PROJECT_NAME}-$cont_item | wc -l) -eq 0 ]; then
echo -n "Create container $cont_item: "
if docker compose create $cont_item > /dev/null 2>&1; then
echo -e "${VERT}SUCCESS${NORMAL}"
else
echo -e "${ROUGE}ERROR${NORMAL}"
fi
else
echo "Container $cont_item already exist"
fi
done
}
# start container
function start_container {
for cont_item in "${containers_to_start[@]}"; do
echo -n "Start container $cont_item: "
if docker compose up -d $cont_item > /dev/null 2>&1; then
echo -e "${VERT}SUCCESS${NORMAL}"
else
echo -e "${ROUGE}ERROR${NORMAL}"
fi
done
}
#-----------------------------------------------------------------
# MAIN
#-----------------------------------------------------------------
# read .env if exist
if [ ! -f .env ]; then
echo "file '.env' doesn't exist!"
echo "See README.md"
exit
fi
. .env
#if [ ! -z "$1" ]; then
#print_usage
# exit 0
#fi
case "$1" in
config)
echo "Create folder for persistent volume"
sudo mkdir -p ${PRX_CERTS_DIR}
sudo mkdir -p ${PRX_NGINX_CONF_DIR}
sudo mkdir -p ${MINIO_DATA_ROOT_DIR}
sudo mkdir -p ${MINIO_CONF_CLI_DIR}
sudo mkdir -p ${GF_DATA_DIR}
sudo mkdir -p ${PROM_CONF_DIR}
sudo mkdir -p ${PROM_DATA_DIR}
sudo mkdir -p ${LOKI_CONF_DIR}
sudo mkdir -p ${LOKI_DATA_DIR}
sudo mkdir -p ${LOKI_GEN_LOG_DIR}
sudo mkdir -p ${PROMTAIL_CONF_DIR}
echo "Copy configs files"
sudo cp ./config/nginx/default.conf ${PRX_NGINX_CONF_DIR}/.
sudo cp ./config/prometheus/prometheus.yml ${PROM_CONF_DIR}/.
sudo cp ./config/loki/local-config.yaml ${LOKI_CONF_DIR}/.
sudo cp ./config/promtail/config.yml ${PROMTAIL_CONF_DIR}/.
;;
param)
cat << EOF
COMPOSE_PROJECT_NAME = ${COMPOSE_PROJECT_NAME}
PRX_CERTS_DIR = ${PRX_CERTS_DIR}
PRX_NGINX_CONF_DIR = ${PRX_NGINX_CONF_DIR}
MINIO_DATA_ROOT_DIR = ${MINIO_DATA_ROOT_DIR}
MINIO_CONF_CLI_DIR = ${MINIO_CONF_CLI_DIR}
MINIO_ACCESS_KEY = ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY = ${MINIO_SECRET_KEY}
MINIO_REDIRECT_URL = ${MINIO_REDIRECT_URL}
GF_ADMIN_USER = ${GF_ADMIN_USER}
GF_ADMIN_PASS = ${GF_ADMIN_PASS}
GF_DATA_DIR = ${GF_DATA_DIR}
GF_ROOT_URL = ${GF_ROOT_URL}
PROM_CONF_DIR = ${PROM_CONF_DIR}
PROM_DATA_DIR = ${PROM_DATA_DIR}
LOKI_CONF_DIR = ${LOKI_CONF_DIR}
LOKI_DATA_DIR = ${LOKI_DATA_DIR}
LOKI_GEN_LOG_DIR = ${LOKI_GEN_LOG_DIR}
PROMTAIL_CONF_DIR = ${PROMTAIL_CONF_DIR}
EOF
;;
create)
create_container
;;
start)
create_container
start_container
;;
stop)
docker compose stop
;;
down)
docker compose down
;;
list)
echo "-------------------------------------"
echo " Container list"
echo "-------------------------------------"
docker compose config --services | sort
#for cont_item in "${containers_all[@]}"; do
# echo "- $cont_item"
#done
;;
-h|--help|help)
print_usage
exit 0
;;
-v|--version|version)
cat << EOF
$(basename "$0") v$version (c) 1990 - $(date +%Y) by Gilles Mouchet
Non-Commercial Use License See LICENSE for details
EOF
exit 0
;;
*)
print_usage
exit 0
;;
esac