Actualiser recuperation_config.sh

This commit is contained in:
admin-linexos 2024-11-28 11:24:41 +00:00
parent 949fd6e564
commit 61f4ef4997
1 changed files with 34 additions and 36 deletions

View File

@ -2,47 +2,52 @@
# Configuration des variables # Configuration des variables
ORG="CONFIGS" ORG="CONFIGS"
CLIENT="SFR" # Exemple de client CLIENT="SFR" # Le dépôt principal (SFR)
BASE_URL="https://repolake.alc-crm.com" BASE_URL="https://repolake.alc-crm.com"
API_URL="$BASE_URL/api/v1" API_URL="$BASE_URL/api/v1"
REPO_NAME=$(hostname) REPO_NAME="$CLIENT" # Utilisation de SFR comme dépôt principal
REPO_URL="$BASE_URL/$ORG/$REPO_NAME.git" REPO_PATH="/etc/gitea/$ORG/$CLIENT" # Chemin local pour le dépôt principal
REPO_PATH="/etc/gitea/CONFIGS/$REPO_NAME" # Ajusté pour inclure l'organisation correcte BRANCH=$(hostname) # Une branche ou un sous-dossier par machine
BRANCH="main"
TOKEN="434ac97ae9def5ac02024971582e82dd35f89ee0" TOKEN="434ac97ae9def5ac02024971582e82dd35f89ee0"
REPO_URL_TOKEN="https://$TOKEN@repolake.alc-crm.com/$ORG/$REPO_NAME.git" REPO_URL_TOKEN="https://$TOKEN@repolake.alc-crm.com/$ORG/$REPO_NAME.git"
HOSTNAME=$(hostname) HOSTNAME=$(hostname)
echo "Début du script pour $HOSTNAME" echo "Début du script pour $HOSTNAME dans le dépôt principal $CLIENT"
# Vérifie si le dépôt existe déjà via l'API # Vérifie si le dépôt principal (SFR) existe
response=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $TOKEN" "$API_URL/repos/$ORG/$REPO_NAME") response_repo=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $TOKEN" "$API_URL/repos/$ORG/$REPO_NAME")
if [ "$response" -ne 200 ]; then if [ "$response_repo" -ne 200 ]; then
echo "Le dépôt $REPO_NAME n'existe pas. Création du dépôt..." echo "Le dépôt principal $CLIENT n'existe pas. Création du dépôt..."
curl -s -X POST -H "Authorization: token $TOKEN" \ curl -s -X POST -H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d "{\"name\": \"$REPO_NAME\", \"private\": false}" \ -d "{\"name\": \"$REPO_NAME\", \"private\": false}" \
"$API_URL/orgs/$ORG/repos" "$API_URL/orgs/$ORG/repos"
echo "Dépôt $REPO_NAME créé." echo "Dépôt principal $CLIENT créé."
else else
echo "Le dépôt $REPO_NAME existe déjà." echo "Le dépôt principal $CLIENT existe déjà."
fi fi
# Vérifie si le répertoire du dépôt existe localement # Vérifie si le dépôt principal est cloné localement
if [ ! -d "$REPO_PATH/.git" ]; then if [ ! -d "$REPO_PATH/.git" ]; then
echo "Clonage dans $REPO_PATH..." echo "Clonage du dépôt principal dans $REPO_PATH..."
git clone "$REPO_URL_TOKEN" "$REPO_PATH" git clone "$REPO_URL_TOKEN" "$REPO_PATH"
if [ $? -ne 0 ]; then
echo "Erreur : Échec du clonage. Vérifiez l'URL ou les permissions."
exit 1
fi
fi
cd "$REPO_PATH" cd "$REPO_PATH"
git checkout -b $BRANCH
touch .gitkeep # Crée une branche pour la machine si elle n'existe pas
git add .gitkeep if git branch --list | grep -q "$BRANCH"; then
git commit -m "Initial commit" echo "La branche $BRANCH existe déjà."
git push --set-upstream origin $BRANCH git checkout "$BRANCH"
else else
echo "Le dépôt existe localement." echo "Création de la branche $BRANCH pour la machine $HOSTNAME..."
cd "$REPO_PATH" git checkout -b "$BRANCH"
git checkout $BRANCH || git checkout -b $BRANCH git push --set-upstream origin "$BRANCH"
fi fi
# Configurer les informations utilisateur Git # Configurer les informations utilisateur Git
@ -51,14 +56,6 @@ if ! git config user.name &>/dev/null; then
git config user.email "technique@linexos.fr" git config user.email "technique@linexos.fr"
fi fi
# Vérifier et corriger l'URL du dépôt distant
git remote set-url origin "$REPO_URL_TOKEN"
echo "URL distante configurée pour : $REPO_URL_TOKEN"
git remote -v # Afficher l'URL distante configurée
# Pull des mises à jour distantes
git pull --rebase origin $BRANCH
# Lecture des chemins depuis le fichier de configuration # Lecture des chemins depuis le fichier de configuration
CONFIG_FILE="/etc/gitea/path_config" CONFIG_FILE="/etc/gitea/path_config"
@ -67,11 +64,11 @@ if [ ! -f "$CONFIG_FILE" ]; then
exit 1 exit 1
fi fi
echo "Copie des fichiers de configuration en maintenant l'arborescence..." echo "Copie des fichiers de configuration en maintenant l'arborescence dans la branche $BRANCH..."
while IFS= read -r file; do while IFS= read -r file; do
if [ -f "$file" ]; then if [ -f "$file" ]; then
DEST_DIR="$REPO_PATH/$(dirname "$file")" DEST_DIR="$REPO_PATH/$HOSTNAME/$(dirname "$file")"
mkdir -p "$DEST_DIR" mkdir -p "$DEST_DIR"
cp "$file" "$DEST_DIR" cp "$file" "$DEST_DIR"
echo "Copié $file vers $DEST_DIR" echo "Copié $file vers $DEST_DIR"
@ -83,7 +80,8 @@ done < "$CONFIG_FILE"
# Ajout et push des modifications # Ajout et push des modifications
git add -A git add -A
git commit -m "Mise à jour des fichiers de configuration pour $HOSTNAME" git commit -m "Mise à jour des fichiers de configuration pour $HOSTNAME"
git push origin $BRANCH git push origin "$BRANCH" || echo "Erreur lors du push. Vérifiez les permissions ou la connectivité réseau."
echo "Modifications poussées vers le dépôt."
echo "Fin du script." echo "Modifications poussées vers le dépôt principal $CLIENT dans la branche $BRANCH."
echo "Fin du script pour $HOSTNAME dans le dépôt principal $CLIENT."