Some checks failed
Tests / Backend Tests (Python) (3.10) (push) Has been cancelled
Tests / Backend Tests (Python) (3.11) (push) Has been cancelled
Tests / Backend Tests (Python) (3.12) (push) Has been cancelled
Tests / Frontend Tests (JS) (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / All Tests Passed (push) Has been cancelled
148 lines
5.2 KiB
Bash
148 lines
5.2 KiB
Bash
#!/bin/bash
|
|
|
|
|
|
echo "Initializing environment variables..."
|
|
# general variables for all containers
|
|
HOSTNAME=$(hostname)
|
|
PORT="7070"
|
|
ENV="production"
|
|
TZ="America/Montreal"
|
|
DEFAULT_INTERFACE=$(ip route show default | awk '{print $5}'|head -n 1)
|
|
if [ -f /etc/alpine-release ]; then
|
|
# Alpine Linux
|
|
SERVER_IP=$(ip -o -4 addr show $DEFAULT_INTERFACE | awk '{print $4}' | cut -d/ -f1)
|
|
else
|
|
# Debian-based systems
|
|
SERVER_IP=$(hostname -I | tr ' ' '\n' | grep -E "^$(ip -o -4 addr show $DEFAULT_INTERFACE | awk '{print $4}' | cut -d/ -f1)")
|
|
fi
|
|
# current user name
|
|
CURRENT_USER=$(whoami)
|
|
|
|
# Docker registry variables
|
|
REGISTRY_HOST="docker-registry.dev.home"
|
|
REGISTRY_PORT="5000"
|
|
IMAGE_NAME="homelab-automation-api"
|
|
DOCKER_CONFIG_DIR="/DOCKER_CONFIG"
|
|
APP_NAME="homelab-dashboard"
|
|
|
|
# Application specific variables
|
|
API_KEY=dev-key-12345
|
|
SSH_USER=automation
|
|
SSH_KEY_DIR=/home/$CURRENT_USER/.ssh
|
|
SSH_KEY_PATH=/app/ssh_keys/id_automation_ansible
|
|
HOMELAB_DATA_DIR=${DOCKER_CONFIG_DIR}/${APP_NAME}/data
|
|
HOMELAB_LOG_DIR=${DOCKER_CONFIG_DIR}/${APP_NAME}/logs
|
|
DB_PATH=${DOCKER_CONFIG_DIR}/${APP_NAME}/data/homelab.db
|
|
DATABASE_URL=sqlite+aiosqlite:////app/data/homelab.db
|
|
JWT_SECRET_KEY=dev-key-12345
|
|
JWT_EXPIRE_MINUTES=1440
|
|
|
|
# Ntfy notification variables
|
|
NTFY_BASE_URL=https://ntfy.dracodev.net
|
|
NTFY_DEFAULT_TOPIC=homelab-events
|
|
NTFY_ENABLED=true
|
|
NTFY_MSG_TYPE=ERR
|
|
NTFY_TIMEOUT=5
|
|
|
|
# Ansible variables
|
|
ANSIBLE_HOST_KEY_CHECKING=False
|
|
ANSIBLE_TIMEOUT=30
|
|
ANSIBLE_DIR=/NFS/OBSIDIAN_DOC/SessionsManager/60-📝TACHES📝/ANSIBLE
|
|
ANSIBLE_INVENTORY=/NFS/OBSIDIAN_DOC/SessionsManager/60-📝TACHES📝/ANSIBLE/inventory
|
|
ANSIBLE_PLAYBOOKS=/NFS/OBSIDIAN_DOC/SessionsManager/60-📝TACHES📝/ANSIBLE/playbooks
|
|
ANSIBLE_GROUP_VARS=/NFS/OBSIDIAN_DOC/SessionsManager/60-📝TACHES📝/ANSIBLE/inventory/group_vars
|
|
DIR_LOGS_TASKS=/NFS/OBSIDIAN_DOC/SessionsManager/60-📝TACHES📝/LOGS
|
|
|
|
# Write environment variables to .env file
|
|
echo "creating .env file..."
|
|
# Docker registry variables
|
|
echo "REGISTRY_HOST=$REGISTRY_HOST" >> .env
|
|
echo "REGISTRY_PORT=$REGISTRY_PORT" >> .env
|
|
echo "IMAGE_NAME=$IMAGE_NAME" >> .env
|
|
# general variables
|
|
echo "NGINX_HOSTNAME=$HOSTNAME" > .env
|
|
echo "PORT=$PORT" >> .env
|
|
echo "ENV=$ENV" >> .env
|
|
echo "TZ=$TZ" >> .env
|
|
echo "NGINX_SERVER_IP=$SERVER_IP" >> .env
|
|
# application specific variables
|
|
echo "API_KEY=$API_KEY" >> .env
|
|
echo "SSH_USER=$SSH_USER" >> .env
|
|
echo "SSH_KEY_DIR=$SSH_KEY_DIR" >> .env
|
|
echo "SSH_KEY_PATH=$SSH_KEY_PATH" >> .env
|
|
echo "HOMELAB_DATA_DIR=$HOMELAB_DATA_DIR" >> .env
|
|
echo "HOMELAB_LOG_DIR=$HOMELAB_LOG_DIR" >> .env
|
|
echo "DB_PATH=$DB_PATH" >> .env
|
|
echo "DATABASE_URL=$DATABASE_URL" >> .env
|
|
echo "JWT_SECRET_KEY=$JWT_SECRET_KEY" >> .env
|
|
echo "JWT_EXPIRE_MINUTES=$JWT_EXPIRE_MINUTES" >> .env
|
|
# ntfy notification variables
|
|
echo "NTFY_BASE_URL=$NTFY_BASE_URL" >> .env
|
|
echo "NTFY_DEFAULT_TOPIC=$NTFY_DEFAULT_TOPIC" >> .env
|
|
echo "NTFY_ENABLED=$NTFY_ENABLED" >> .env
|
|
echo "NTFY_MSG_TYPE=$NTFY_MSG_TYPE" >> .env
|
|
echo "NTFY_TIMEOUT=$NTFY_TIMEOUT" >> .env
|
|
# ansible variables
|
|
echo "ANSIBLE_HOST_KEY_CHECKING=$ANSIBLE_HOST_KEY_CHECKING" >> .env
|
|
echo "ANSIBLE_TIMEOUT=$ANSIBLE_TIMEOUT" >> .env
|
|
echo "ANSIBLE_INVENTORY=$ANSIBLE_INVENTORY" >> .env
|
|
echo "ANSIBLE_PLAYBOOKS=$ANSIBLE_PLAYBOOKS" >> .env
|
|
echo "ANSIBLE_GROUP_VARS=$ANSIBLE_GROUP_VARS" >> .env
|
|
echo "DIR_LOGS_TASKS=$DIR_LOGS_TASKS" >> .env
|
|
|
|
# Create directories
|
|
echo "Creating necessary directories..."
|
|
# valider si directory /DOCKER_CONFIG/ exists
|
|
if [ ! -d ${DOCKER_CONFIG_DIR} ]; then
|
|
mkdir ${DOCKER_CONFIG_DIR}
|
|
fi
|
|
if [ ! -d ${DOCKER_CONFIG_DIR}/${APP_NAME} ]; then
|
|
mkdir -p ${DOCKER_CONFIG_DIR}/${APP_NAME}
|
|
fi
|
|
if [ ! -d ${DOCKER_CONFIG_DIR}/${APP_NAME}/ssh_keys ]; then
|
|
mkdir -p ${DOCKER_CONFIG_DIR}/${APP_NAME}/ssh_keys
|
|
fi
|
|
if [ ! -d ${HOMELAB_DATA_DIR} ]; then
|
|
mkdir -p ${HOMELAB_DATA_DIR}
|
|
fi
|
|
if [ ! -d ${HOMELAB_LOG_DIR} ]; then
|
|
mkdir -p ${HOMELAB_LOG_DIR}
|
|
fi
|
|
if [ ! -d ${ANSIBLE_DIR} ]; then
|
|
mkdir ${ANSIBLE_DIR}
|
|
fi
|
|
if [ ! -d ${ANSIBLE_INVENTORY} ]; then
|
|
mkdir ${ANSIBLE_INVENTORY}
|
|
fi
|
|
if [ ! -d ${ANSIBLE_PLAYBOOKS} ]; then
|
|
mkdir ${ANSIBLE_PLAYBOOKS}
|
|
fi
|
|
if [ ! -d ${ANSIBLE_GROUP_VARS} ]; then
|
|
mkdir ${ANSIBLE_GROUP_VARS}
|
|
fi
|
|
if [ ! -d ${DIR_LOGS_TASKS} ]; then
|
|
mkdir ${DIR_LOGS_TASKS}
|
|
fi
|
|
|
|
|
|
# Copier les fichiers et répertoires Ansible ../DOCKER_CONFIG/homelab-dashboard/ vers /DOCKER_CONFIG/homelab-dashboard/ansible/ et les écraser s'ils existent
|
|
echo "Copying Ansible configuration files..."
|
|
cp -r ../DOCKER_CONFIG/homelab-dashboard/ansible.cfg ${ANSIBLE_DIR}/
|
|
cp -r ../DOCKER_CONFIG/homelab-dashboard/inventory/* ${ANSIBLE_INVENTORY}/
|
|
cp -r ../DOCKER_CONFIG/homelab-dashboard/playbooks/* ${ANSIBLE_PLAYBOOKS}/
|
|
cp -r ../DOCKER_CONFIG/homelab-dashboard/inventory/group_vars/* ${ANSIBLE_GROUP_VARS}/
|
|
|
|
# copy ssh keys to the ssh_keys directory
|
|
echo "Copying SSH keys..."
|
|
cp -r ../DOCKER_CONFIG/homelab-dashboard/ssh_keys/known_hosts ${SSH_KEY_DIR}/
|
|
cp -r ../DOCKER_CONFIG/homelab-dashboard/ssh_keys/id_automation_ansible.pub ${SSH_KEY_DIR}/
|
|
cp -r ../DOCKER_CONFIG/homelab-dashboard/ssh_keys/id_automation_ansible ${SSH_KEY_DIR}/
|
|
|
|
# apply correct permissions to ssh keys
|
|
echo "Setting permissions for SSH keys..."
|
|
chmod 600 ${SSH_KEY_DIR}/id_automation_ansible
|
|
chmod 644 ${SSH_KEY_DIR}/id_automation_ansible.pub
|
|
chmod 644 ${SSH_KEY_DIR}/known_hosts
|
|
|
|
echo "Initialization complete. You can now execute bash ./maj.sh to update the Homelab Dashboard."
|