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
|
||||
# ============================================================
|
||||
DOMAIN="deb.legaragenumerique.fr" # adresse du dépôt
|
||||
GPG_KEY_NAME="gn-depot"
|
||||
EMAIL="admin@lgn.dev"
|
||||
|
||||
DIST_NAME="stable" # Nom de la distribution : stable, focal, bookworm, etc.
|
||||
COMPONENT="main" # Composante : main, contrib, non-free, etc.
|
||||
ARCH="amd64" # Architecture : amd64, arm64, all, etc.
|
||||
DIST_NAME="stable" # Nom de la distribution : stable, focal, bookworm, etc.
|
||||
COMPONENT="main" # Composante : main, contrib, non-free, etc.
|
||||
ARCH="amd64" # Architecture : amd64, arm64, all, etc.
|
||||
|
||||
REPO_ORIGIN="GN-depot" # Nom affiché dans le fichier Release
|
||||
REPO_LABEL="GN-depot" # Label 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_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)
|
||||
@ -50,8 +51,8 @@ make_keys() {
|
||||
echo "🔐 Génération des clés GPG"
|
||||
|
||||
# S'assurer que le dossier destination existe
|
||||
mkdir -p "$(dirname "$KEY_PUBLIC")" # ← ligne ajoutée
|
||||
mkdir -p "$(dirname "$KEY_PRIVATE")" # ← ligne ajoutée
|
||||
mkdir -p "$(dirname "$KEY_PUBLIC")"
|
||||
mkdir -p "$(dirname "$KEY_PRIVATE")"
|
||||
|
||||
cat > example-pgp-key.batch <<EOF
|
||||
Key-Type: RSA
|
||||
@ -68,7 +69,6 @@ EOF
|
||||
gpg --armor --export "$GPG_KEY_NAME" > "$KEY_PUBLIC"
|
||||
gpg --armor --export-secret-keys "$GPG_KEY_NAME" > "$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
|
||||
|
||||
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"
|
||||
|
||||
echo "🔏 Signature du Release"
|
||||
@ -149,7 +148,7 @@ sign_packages() {
|
||||
# Génération du fichier de priorité pour les clients
|
||||
# ------------------------------------------------------------
|
||||
generate_client_pref() {
|
||||
local pref_file="./apt-repo/mon-depot.pref"
|
||||
local pref_file="./apt-repo/gn-depot.pref"
|
||||
cat > "$pref_file" <<EOF
|
||||
# Copiez ce fichier dans /etc/apt/preferences.d/ sur vos machines clientes
|
||||
# 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
|
||||
|
||||
Package: *
|
||||
Pin: origin $(hostname -f 2>/dev/null || echo "votre-domaine.tld")
|
||||
Pin: origin $DOMAIN
|
||||
Pin-Priority: $REPO_PRIORITY
|
||||
EOF
|
||||
echo "📄 Fichier de priorité client généré : $pref_file"
|
||||
@ -172,17 +171,58 @@ EOF
|
||||
# Génération du sources.list pour les clients
|
||||
# ------------------------------------------------------------
|
||||
generate_client_sources() {
|
||||
local sources_file="./apt-repo/mon-depot.list"
|
||||
local domain
|
||||
domain=$(hostname -f 2>/dev/null || echo "votre-domaine.tld")
|
||||
local sources_file="./apt-repo/gn-depot.list"
|
||||
|
||||
cat > "$sources_file" <<EOF
|
||||
# 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
|
||||
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
|
||||
# ============================================================
|
||||
@ -199,6 +239,7 @@ cp ./depot/* "$POOL_DIR/" 2>/dev/null || true
|
||||
sign_packages
|
||||
generate_client_pref
|
||||
generate_client_sources
|
||||
generate_install_script
|
||||
|
||||
echo "🚀 Lancement du serveur Gunicorn"
|
||||
cd /workspace
|
||||
@ -207,7 +248,7 @@ gunicorn -b 0.0.0.0:8000 server:app
|
||||
|
||||
echo ""
|
||||
echo "✅ Dépôt APT disponible"
|
||||
echo " 📡 URL : https://votre-domaine.tld"
|
||||
echo " 🔑 Clé pub : https://votre-domaine.tld/pgp-key.public"
|
||||
echo " 📋 Sources : https://votre-domaine.tld/mon-depot.list"
|
||||
echo " ⚙️ Priorité : https://votre-domaine.tld/mon-depot.pref"
|
||||
echo " 📡 URL : https://${DOMAIN}"
|
||||
echo " 🔑 Clé pub : https://${DOMAIN}/pgp-key.public"
|
||||
echo " 📋 Sources : https://${DOMAIN}/gn-depot.list"
|
||||
echo " ⚙️ Priorité : https://${DOMAIN}/gn-depot.pref"
|
||||
Loading…
x
Reference in New Issue
Block a user