add generate release + client install script
This commit is contained in:
parent
432c1a626f
commit
458f944e61
@ -4,15 +4,16 @@ set -e
|
|||||||
# ============================================================
|
# ============================================================
|
||||||
# CONFIGURATION — modifiez ces variables selon vos besoins
|
# CONFIGURATION — modifiez ces variables selon vos besoins
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
DOMAIN="deb.legaragenumerique.fr" # adresse du dépôt
|
||||||
GPG_KEY_NAME="gn-depot"
|
GPG_KEY_NAME="gn-depot"
|
||||||
EMAIL="admin@lgn.dev"
|
EMAIL="admin@lgn.dev"
|
||||||
|
|
||||||
DIST_NAME="stable" # Nom de la distribution : stable, focal, bookworm, etc.
|
DIST_NAME="stable" # Nom de la distribution : stable, focal, bookworm, etc.
|
||||||
COMPONENT="main" # Composante : main, contrib, non-free, etc.
|
COMPONENT="main" # Composante : main, contrib, non-free, etc.
|
||||||
ARCH="amd64" # Architecture : amd64, arm64, all, etc.
|
ARCH="amd64" # Architecture : amd64, arm64, all, etc.
|
||||||
|
|
||||||
REPO_ORIGIN="GN-depot" # Nom affiché dans le fichier Release
|
REPO_ORIGIN="GN-depot" # Nom affiché dans le fichier Release
|
||||||
REPO_LABEL="GN-depot" # Label affiché dans le fichier Release
|
REPO_LABEL="GN-depot" # Label affiché dans le fichier Release
|
||||||
REPO_DESCRIPTION="Dépôt du garage numérique"
|
REPO_DESCRIPTION="Dépôt du garage numérique"
|
||||||
|
|
||||||
# Priorité du dépôt recommandée pour les clients (générée dans le fichier .pref)
|
# Priorité du dépôt recommandée pour les clients (générée dans le fichier .pref)
|
||||||
@ -50,8 +51,8 @@ make_keys() {
|
|||||||
echo "🔐 Génération des clés GPG"
|
echo "🔐 Génération des clés GPG"
|
||||||
|
|
||||||
# S'assurer que le dossier destination existe
|
# S'assurer que le dossier destination existe
|
||||||
mkdir -p "$(dirname "$KEY_PUBLIC")" # ← ligne ajoutée
|
mkdir -p "$(dirname "$KEY_PUBLIC")"
|
||||||
mkdir -p "$(dirname "$KEY_PRIVATE")" # ← ligne ajoutée
|
mkdir -p "$(dirname "$KEY_PRIVATE")"
|
||||||
|
|
||||||
cat > example-pgp-key.batch <<EOF
|
cat > example-pgp-key.batch <<EOF
|
||||||
Key-Type: RSA
|
Key-Type: RSA
|
||||||
@ -68,7 +69,6 @@ EOF
|
|||||||
gpg --armor --export "$GPG_KEY_NAME" > "$KEY_PUBLIC"
|
gpg --armor --export "$GPG_KEY_NAME" > "$KEY_PUBLIC"
|
||||||
gpg --armor --export-secret-keys "$GPG_KEY_NAME" > "$KEY_PRIVATE"
|
gpg --armor --export-secret-keys "$GPG_KEY_NAME" > "$KEY_PRIVATE"
|
||||||
chmod 600 "$KEY_PRIVATE"
|
chmod 600 "$KEY_PRIVATE"
|
||||||
# Pas besoin du cp : KEY_PUBLIC est déjà dans ./apt-repo/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
@ -130,7 +130,6 @@ sign_packages() {
|
|||||||
gpg --import /workspace/secret/pgp-key.private
|
gpg --import /workspace/secret/pgp-key.private
|
||||||
|
|
||||||
echo "⚙️ Génération de Release"
|
echo "⚙️ Génération de Release"
|
||||||
# Appeler generate_release depuis le bon répertoire (on est déjà dans ./apt-repo)
|
|
||||||
generate_release "$(pwd)" > "dists/$DIST_NAME/Release"
|
generate_release "$(pwd)" > "dists/$DIST_NAME/Release"
|
||||||
|
|
||||||
echo "🔏 Signature du Release"
|
echo "🔏 Signature du Release"
|
||||||
@ -149,7 +148,7 @@ sign_packages() {
|
|||||||
# Génération du fichier de priorité pour les clients
|
# Génération du fichier de priorité pour les clients
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
generate_client_pref() {
|
generate_client_pref() {
|
||||||
local pref_file="./apt-repo/mon-depot.pref"
|
local pref_file="./apt-repo/gn-depot.pref"
|
||||||
cat > "$pref_file" <<EOF
|
cat > "$pref_file" <<EOF
|
||||||
# Copiez ce fichier dans /etc/apt/preferences.d/ sur vos machines clientes
|
# Copiez ce fichier dans /etc/apt/preferences.d/ sur vos machines clientes
|
||||||
# pour définir la priorité de ce dépôt.
|
# pour définir la priorité de ce dépôt.
|
||||||
@ -162,7 +161,7 @@ generate_client_pref() {
|
|||||||
# >1000 → installe même en cas de régression de version
|
# >1000 → installe même en cas de régression de version
|
||||||
|
|
||||||
Package: *
|
Package: *
|
||||||
Pin: origin $(hostname -f 2>/dev/null || echo "votre-domaine.tld")
|
Pin: origin $DOMAIN
|
||||||
Pin-Priority: $REPO_PRIORITY
|
Pin-Priority: $REPO_PRIORITY
|
||||||
EOF
|
EOF
|
||||||
echo "📄 Fichier de priorité client généré : $pref_file"
|
echo "📄 Fichier de priorité client généré : $pref_file"
|
||||||
@ -172,17 +171,58 @@ EOF
|
|||||||
# Génération du sources.list pour les clients
|
# Génération du sources.list pour les clients
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
generate_client_sources() {
|
generate_client_sources() {
|
||||||
local sources_file="./apt-repo/mon-depot.list"
|
local sources_file="./apt-repo/gn-depot.list"
|
||||||
local domain
|
|
||||||
domain=$(hostname -f 2>/dev/null || echo "votre-domaine.tld")
|
|
||||||
|
|
||||||
cat > "$sources_file" <<EOF
|
cat > "$sources_file" <<EOF
|
||||||
# Copiez ce fichier dans /etc/apt/sources.list.d/ sur vos machines clientes
|
# Copiez ce fichier dans /etc/apt/sources.list.d/ sur vos machines clientes
|
||||||
deb [arch=$ARCH signed-by=/usr/share/keyrings/mon-depot.gpg] https://$domain $DIST_NAME $COMPONENT
|
deb [arch=$ARCH signed-by=/usr/share/keyrings/gn-depot.gpg] https://$DOMAIN $DIST_NAME $COMPONENT
|
||||||
EOF
|
EOF
|
||||||
echo "📄 Fichier sources.list client généré : $sources_file"
|
echo "📄 Fichier sources.list client généré : $sources_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Génération du script d'installation du dépôt pour les clients
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
generate_install_script() {
|
||||||
|
|
||||||
|
cat > ./apt-repo/install-repo.sh <<EOF
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
DOMAIN="$DOMAIN"
|
||||||
|
DIST="$DIST_NAME"
|
||||||
|
COMPONENT="$COMPONENT"
|
||||||
|
ARCH="$ARCH"
|
||||||
|
PRIORITY="$REPO_PRIORITY"
|
||||||
|
LABEL="$REPO_LABEL"
|
||||||
|
|
||||||
|
echo "🔑 Ajout de la clé GPG..."
|
||||||
|
wget -qO /etc/apt/trusted.gpg.d/gn-depot.asc "https://\$DOMAIN/pgp-key.public"
|
||||||
|
|
||||||
|
echo "📋 Ajout du dépôt..."
|
||||||
|
echo "deb [arch=\$ARCH signed-by=/etc/apt/trusted.gpg.d/gn-depot.asc] https://\$DOMAIN \$DIST \$COMPONENT" \
|
||||||
|
> /etc/apt/sources.list.d/gn-depot.list
|
||||||
|
|
||||||
|
echo "⚙️ Définition de la priorité (\$PRIORITY)..."
|
||||||
|
cat > /etc/apt/preferences.d/gn-depot.pref <<PREF
|
||||||
|
Package: *
|
||||||
|
Pin: release l=\$LABEL
|
||||||
|
Pin-Priority: \$PRIORITY
|
||||||
|
PREF
|
||||||
|
|
||||||
|
echo "🔄 Mise à jour des dépôts..."
|
||||||
|
apt update
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✅ Dépôt installé avec succès !"
|
||||||
|
echo " Priorité : \$PRIORITY"
|
||||||
|
echo " Utilisez : sudo apt install <paquet>"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x ./apt-repo/install-repo.sh
|
||||||
|
echo "📄 Script d'installation client généré : install-repo.sh"
|
||||||
|
}
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# MAIN
|
# MAIN
|
||||||
# ============================================================
|
# ============================================================
|
||||||
@ -199,6 +239,7 @@ cp ./depot/* "$POOL_DIR/" 2>/dev/null || true
|
|||||||
sign_packages
|
sign_packages
|
||||||
generate_client_pref
|
generate_client_pref
|
||||||
generate_client_sources
|
generate_client_sources
|
||||||
|
generate_install_script
|
||||||
|
|
||||||
echo "🚀 Lancement du serveur Gunicorn"
|
echo "🚀 Lancement du serveur Gunicorn"
|
||||||
cd /workspace
|
cd /workspace
|
||||||
@ -207,7 +248,7 @@ gunicorn -b 0.0.0.0:8000 server:app
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "✅ Dépôt APT disponible"
|
echo "✅ Dépôt APT disponible"
|
||||||
echo " 📡 URL : https://votre-domaine.tld"
|
echo " 📡 URL : https://${DOMAIN}"
|
||||||
echo " 🔑 Clé pub : https://votre-domaine.tld/pgp-key.public"
|
echo " 🔑 Clé pub : https://${DOMAIN}/pgp-key.public"
|
||||||
echo " 📋 Sources : https://votre-domaine.tld/mon-depot.list"
|
echo " 📋 Sources : https://${DOMAIN}/gn-depot.list"
|
||||||
echo " ⚙️ Priorité : https://votre-domaine.tld/mon-depot.pref"
|
echo " ⚙️ Priorité : https://${DOMAIN}/gn-depot.pref"
|
||||||
Loading…
x
Reference in New Issue
Block a user