feat : repertorie bug (WIP)

This commit is contained in:
2026-03-17 15:49:44 +01:00
parent fbefe3fb03
commit 12bbe6b1d9
3 changed files with 64 additions and 49 deletions

View File

@@ -318,28 +318,28 @@ ssh "${SSH_OPTS[@]}" "$REMOTE" "$REMOTE_SETUP_CMD" \
TMP_ENV_FILE="$(mktemp)" TMP_ENV_FILE="$(mktemp)"
cat >"$TMP_ENV_FILE" <<EOF cat >"$TMP_ENV_FILE" <<EOF
ENV_NAME=$(printf '%s\n' "$TARGET_ENV_NAME_VALUE") ENV_NAME=$(shell_quote "$TARGET_ENV_NAME_VALUE")
PGHOST=$(printf '%s\n' "$TARGET_PGHOST_VALUE") PGHOST=$(shell_quote "$TARGET_PGHOST_VALUE")
PGPORT=$(printf '%s\n' "$TARGET_PGPORT_VALUE") PGPORT=$(shell_quote "$TARGET_PGPORT_VALUE")
PGUSER=$(printf '%s\n' "$TARGET_PGUSER_VALUE") PGUSER=$(shell_quote "$TARGET_PGUSER_VALUE")
PGPASSWORD=$(printf '%s\n' "$TARGET_PGPASSWORD_VALUE") PGPASSWORD=$(shell_quote "$TARGET_PGPASSWORD_VALUE")
DBS=$(printf '%s\n' "$TARGET_DBS_VALUE") DBS=$(shell_quote "$TARGET_DBS_VALUE")
BACKUP_REMOTE_USER=$(printf '%s\n' "$TARGET_BACKUP_REMOTE_USER_VALUE") BACKUP_REMOTE_USER=$(shell_quote "$TARGET_BACKUP_REMOTE_USER_VALUE")
BACKUP_REMOTE_HOST=$(printf '%s\n' "$TARGET_BACKUP_REMOTE_HOST_VALUE") BACKUP_REMOTE_HOST=$(shell_quote "$TARGET_BACKUP_REMOTE_HOST_VALUE")
BACKUP_REMOTE_DIR=$(printf '%s\n' "$TARGET_BACKUP_REMOTE_DIR_VALUE") BACKUP_REMOTE_DIR=$(shell_quote "$TARGET_BACKUP_REMOTE_DIR_VALUE")
BACKUP_REMOTE_SSH_PORT=$(printf '%s\n' "$TARGET_BACKUP_REMOTE_SSH_PORT_VALUE") BACKUP_REMOTE_SSH_PORT=$(shell_quote "$TARGET_BACKUP_REMOTE_SSH_PORT_VALUE")
BACKUP_LOG_DIR=$(printf '%s\n' "$TARGET_BACKUP_LOG_DIR_VALUE") BACKUP_LOG_DIR=$(shell_quote "$TARGET_BACKUP_LOG_DIR_VALUE")
LOCAL_RESTORE_BASE_DIR=$(printf '%s\n' "$TARGET_LOCAL_RESTORE_BASE_DIR_VALUE") LOCAL_RESTORE_BASE_DIR=$(shell_quote "$TARGET_LOCAL_RESTORE_BASE_DIR_VALUE")
REMOTE_ROLES_DIR_NAME=$(printf '%s\n' "$TARGET_REMOTE_ROLES_DIR_NAME_VALUE") REMOTE_ROLES_DIR_NAME=$(shell_quote "$TARGET_REMOTE_ROLES_DIR_NAME_VALUE")
SSH_KEY=$(printf '%s\n' "$TARGET_SSH_KEY_VALUE") SSH_KEY=$(shell_quote "$TARGET_SSH_KEY_VALUE")
AUTO_INSTALL_POSTGRES=$(printf '%s\n' "$TARGET_AUTO_INSTALL_POSTGRES_VALUE") AUTO_INSTALL_POSTGRES=$(shell_quote "$TARGET_AUTO_INSTALL_POSTGRES_VALUE")
AUTO_CREATE_PGUSER=$(printf '%s\n' "$TARGET_AUTO_CREATE_PGUSER_VALUE") AUTO_CREATE_PGUSER=$(shell_quote "$TARGET_AUTO_CREATE_PGUSER_VALUE")
PGUSER_SUPERUSER=$(printf '%s\n' "$TARGET_PGUSER_SUPERUSER_VALUE") PGUSER_SUPERUSER=$(shell_quote "$TARGET_PGUSER_SUPERUSER_VALUE")
AUTO_CONFIGURE_SUDOERS=$(printf '%s\n' "$TARGET_AUTO_CONFIGURE_SUDOERS_VALUE") AUTO_CONFIGURE_SUDOERS=$(shell_quote "$TARGET_AUTO_CONFIGURE_SUDOERS_VALUE")
EXCLUDED_RESTORE_ROLES=$(printf '%s\n' "$TARGET_EXCLUDED_RESTORE_ROLES_VALUE") EXCLUDED_RESTORE_ROLES=$(shell_quote "$TARGET_EXCLUDED_RESTORE_ROLES_VALUE")
EOF EOF
log "Copie du .env cible" log "Copie du .env cible"

View File

@@ -122,39 +122,39 @@ if [[ -f "$TARGET_FILE" && "$FORCE" != "yes" ]]; then
fi fi
cat >"$TARGET_FILE" <<EOF cat >"$TARGET_FILE" <<EOF
TARGET_HOST=${HOST} TARGET_HOST=$(printf '%q' "$HOST")
TARGET_PORT=${PORT} TARGET_PORT=$(printf '%q' "$PORT")
TARGET_BOOTSTRAP_USER=${BOOTSTRAP_USER} TARGET_BOOTSTRAP_USER=$(printf '%q' "$BOOTSTRAP_USER")
TARGET_BOOTSTRAP_SSH_KEY=${BOOTSTRAP_SSH_KEY} TARGET_BOOTSTRAP_SSH_KEY=$(printf '%q' "$BOOTSTRAP_SSH_KEY")
TARGET_RUNTIME_USER=${RUNTIME_USER} TARGET_RUNTIME_USER=$(printf '%q' "$RUNTIME_USER")
TARGET_ENABLE_BOOTSTRAP=${ENABLE_BOOTSTRAP} TARGET_ENABLE_BOOTSTRAP=$(printf '%q' "$ENABLE_BOOTSTRAP")
TARGET_BOOTSTRAP_ALLOW_PASSWORDLESS_SUDO=${ALLOW_PASSWORDLESS_SUDO} TARGET_BOOTSTRAP_ALLOW_PASSWORDLESS_SUDO=$(printf '%q' "$ALLOW_PASSWORDLESS_SUDO")
TARGET_REPO_DIR=${REPO_DIR} TARGET_REPO_DIR=$(printf '%q' "$REPO_DIR")
TARGET_ENV_FILE=${ENV_FILE} TARGET_ENV_FILE=$(printf '%q' "$ENV_FILE")
TARGET_ENV_NAME=${ENV_NAME} TARGET_ENV_NAME=$(printf '%q' "$ENV_NAME")
TARGET_PGHOST=${PGHOST} TARGET_PGHOST=$(printf '%q' "$PGHOST")
TARGET_PGPORT=${PGPORT} TARGET_PGPORT=$(printf '%q' "$PGPORT")
TARGET_PGUSER=${PGUSER} TARGET_PGUSER=$(printf '%q' "$PGUSER")
TARGET_PGPASSWORD=${PGPASSWORD} TARGET_PGPASSWORD=$(printf '%q' "$PGPASSWORD")
TARGET_DBS=${DBS} TARGET_DBS=$(printf '%q' "$DBS")
TARGET_BACKUP_SUBDIR=${BACKUP_SUBDIR} TARGET_BACKUP_SUBDIR=$(printf '%q' "$BACKUP_SUBDIR")
TARGET_BACKUP_LOG_DIR=${BACKUP_LOG_DIR} TARGET_BACKUP_LOG_DIR=$(printf '%q' "$BACKUP_LOG_DIR")
TARGET_LOCAL_RESTORE_BASE_DIR=${LOCAL_RESTORE_BASE_DIR} TARGET_LOCAL_RESTORE_BASE_DIR=$(printf '%q' "$LOCAL_RESTORE_BASE_DIR")
TARGET_SSH_KEY=${SSH_KEY_TARGET_PATH} TARGET_SSH_KEY=$(printf '%q' "$SSH_KEY_TARGET_PATH")
TARGET_REMOTE_ROLES_DIR_NAME=${REMOTE_ROLES_DIR_NAME} TARGET_REMOTE_ROLES_DIR_NAME=$(printf '%q' "$REMOTE_ROLES_DIR_NAME")
TARGET_EXCLUDED_RESTORE_ROLES=${EXCLUDED_RESTORE_ROLES} TARGET_EXCLUDED_RESTORE_ROLES=$(printf '%q' "$EXCLUDED_RESTORE_ROLES")
TARGET_AUTO_INSTALL_POSTGRES=${AUTO_INSTALL_POSTGRES} TARGET_AUTO_INSTALL_POSTGRES=$(printf '%q' "$AUTO_INSTALL_POSTGRES")
TARGET_AUTO_CREATE_PGUSER=${AUTO_CREATE_PGUSER} TARGET_AUTO_CREATE_PGUSER=$(printf '%q' "$AUTO_CREATE_PGUSER")
TARGET_PGUSER_SUPERUSER=${PGUSER_SUPERUSER} TARGET_PGUSER_SUPERUSER=$(printf '%q' "$PGUSER_SUPERUSER")
TARGET_AUTO_CONFIGURE_SUDOERS=${AUTO_CONFIGURE_SUDOERS} TARGET_AUTO_CONFIGURE_SUDOERS=$(printf '%q' "$AUTO_CONFIGURE_SUDOERS")
EOF EOF
chmod 600 "$TARGET_FILE" || fail "chmod impossible sur $TARGET_FILE" chmod 600 "$TARGET_FILE" || fail "chmod impossible sur $TARGET_FILE"
echo "OK: ${TARGET_FILE}" echo "OK: ${TARGET_FILE}"

View File

@@ -5,6 +5,12 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CONFIG_DIR="${SCRIPT_DIR}/Config" CONFIG_DIR="${SCRIPT_DIR}/Config"
GLOBAL_ENV_FILE_DEFAULT="${CONFIG_DIR}/global.env" GLOBAL_ENV_FILE_DEFAULT="${CONFIG_DIR}/global.env"
TARGETS_DIR_DEFAULT="${CONFIG_DIR}/Targets" TARGETS_DIR_DEFAULT="${CONFIG_DIR}/Targets"
GIT_TOPLEVEL="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || true)"
LOCAL_REPO_SUBDIR_DEFAULT=""
if [[ -n "$GIT_TOPLEVEL" && "$SCRIPT_DIR" == "$GIT_TOPLEVEL"/* ]]; then
LOCAL_REPO_SUBDIR_DEFAULT="${SCRIPT_DIR#"$GIT_TOPLEVEL"/}"
fi
GLOBAL_ENV_FILE="${GLOBAL_ENV_FILE:-$GLOBAL_ENV_FILE_DEFAULT}" GLOBAL_ENV_FILE="${GLOBAL_ENV_FILE:-$GLOBAL_ENV_FILE_DEFAULT}"
TARGETS_DIR="${TARGETS_DIR:-$TARGETS_DIR_DEFAULT}" TARGETS_DIR="${TARGETS_DIR:-$TARGETS_DIR_DEFAULT}"
@@ -160,6 +166,7 @@ TARGET_SSH_KEY="${TARGET_BOOTSTRAP_SSH_KEY:-}"
TARGET_REPO_URL="${TARGET_REPO_URL:-${GLOBAL_REPO_URL:-}}" TARGET_REPO_URL="${TARGET_REPO_URL:-${GLOBAL_REPO_URL:-}}"
TARGET_REPO_BRANCH="${TARGET_REPO_BRANCH:-${GLOBAL_REPO_BRANCH:-main}}" TARGET_REPO_BRANCH="${TARGET_REPO_BRANCH:-${GLOBAL_REPO_BRANCH:-main}}"
TARGET_REPO_DIR="${TARGET_REPO_DIR:-}" TARGET_REPO_DIR="${TARGET_REPO_DIR:-}"
TARGET_REPO_SUBDIR="${TARGET_REPO_SUBDIR:-$LOCAL_REPO_SUBDIR_DEFAULT}"
TARGET_ENV_FILE="${TARGET_ENV_FILE:-}" TARGET_ENV_FILE="${TARGET_ENV_FILE:-}"
TARGET_ENABLE_BOOTSTRAP="${TARGET_ENABLE_BOOTSTRAP:-${GLOBAL_ENABLE_BOOTSTRAP:-yes}}" TARGET_ENABLE_BOOTSTRAP="${TARGET_ENABLE_BOOTSTRAP:-${GLOBAL_ENABLE_BOOTSTRAP:-yes}}"
@@ -175,6 +182,14 @@ TARGET_ENABLE_BOOTSTRAP="${TARGET_ENABLE_BOOTSTRAP:-${GLOBAL_ENABLE_BOOTSTRAP:-y
[[ -n "$TARGET_REPO_DIR" ]] || fail "TARGET_REPO_DIR manquante" [[ -n "$TARGET_REPO_DIR" ]] || fail "TARGET_REPO_DIR manquante"
[[ -n "$TARGET_ENV_FILE" ]] || fail "TARGET_ENV_FILE manquante" [[ -n "$TARGET_ENV_FILE" ]] || fail "TARGET_ENV_FILE manquante"
TARGET_REPO_SUBDIR="${TARGET_REPO_SUBDIR#/}"
TARGET_REPO_SUBDIR="${TARGET_REPO_SUBDIR%/}"
TARGET_SCRIPT_DIR="$TARGET_REPO_DIR"
if [[ -n "$TARGET_REPO_SUBDIR" && "$TARGET_REPO_DIR" != */"$TARGET_REPO_SUBDIR" ]]; then
TARGET_SCRIPT_DIR="${TARGET_REPO_DIR}/${TARGET_REPO_SUBDIR}"
fi
TARGET_ENABLE_BOOTSTRAP="$(to_bool_yes_no "$TARGET_ENABLE_BOOTSTRAP")" || fail "TARGET_ENABLE_BOOTSTRAP invalide" TARGET_ENABLE_BOOTSTRAP="$(to_bool_yes_no "$TARGET_ENABLE_BOOTSTRAP")" || fail "TARGET_ENABLE_BOOTSTRAP invalide"
BOOTSTRAP_SCRIPT_LOCAL="${SCRIPT_DIR}/bootstrap-target-host.sh" BOOTSTRAP_SCRIPT_LOCAL="${SCRIPT_DIR}/bootstrap-target-host.sh"
@@ -248,16 +263,16 @@ SSH_OPTS=(
ssh "${SSH_OPTS[@]}" "${TARGET_USER}@${TARGET_HOST}" "exit 0" >/dev/null 2>&1 \ ssh "${SSH_OPTS[@]}" "${TARGET_USER}@${TARGET_HOST}" "exit 0" >/dev/null 2>&1 \
|| fail "connexion SSH impossible vers la cible ${TARGET_USER}@${TARGET_HOST}" || fail "connexion SSH impossible vers la cible ${TARGET_USER}@${TARGET_HOST}"
TARGET_CORE_SCRIPT="${TARGET_REPO_DIR}/rebuild-bdd-core.sh" TARGET_CORE_SCRIPT="${TARGET_SCRIPT_DIR}/rebuild-bdd-core.sh"
REMOTE_BOOTSTRAP_CMD=" REMOTE_BOOTSTRAP_CMD="
set -euo pipefail set -euo pipefail
REPO_DIR=$(shell_quote "$TARGET_REPO_DIR") REPO_DIR=$(shell_quote "$TARGET_SCRIPT_DIR")
REPO_URL=$(shell_quote "$TARGET_REPO_URL") REPO_URL=$(shell_quote "$TARGET_REPO_URL")
REPO_BRANCH=$(shell_quote "$TARGET_REPO_BRANCH") REPO_BRANCH=$(shell_quote "$TARGET_REPO_BRANCH")
CORE_SCRIPT=$(shell_quote "$TARGET_CORE_SCRIPT") CORE_SCRIPT=$(shell_quote "$TARGET_CORE_SCRIPT")
PRECHECK_SCRIPT=$(shell_quote "${TARGET_REPO_DIR}/Checkup/check-target-readiness.sh") PRECHECK_SCRIPT=$(shell_quote "${TARGET_SCRIPT_DIR}/Checkup/check-target-readiness.sh")
TARGET_ENV_FILE=$(shell_quote "$TARGET_ENV_FILE") TARGET_ENV_FILE=$(shell_quote "$TARGET_ENV_FILE")
REQUESTED_DB=$(shell_quote "$REQUESTED_DB") REQUESTED_DB=$(shell_quote "$REQUESTED_DB")
ALLOW_OVERWRITE=$(shell_quote "$ALLOW_OVERWRITE") ALLOW_OVERWRITE=$(shell_quote "$ALLOW_OVERWRITE")
@@ -319,4 +334,4 @@ exec \"\$CORE_SCRIPT\" \
--json-only --json-only
" "
ssh "${SSH_OPTS[@]}" "${TARGET_USER}@${TARGET_HOST}" "$REMOTE_BOOTSTRAP_CMD" ssh "${SSH_OPTS[@]}" "${TARGET_USER}@${TARGET_HOST}" "$REMOTE_BOOTSTRAP_CMD"