101 lines
3.9 KiB
YAML
101 lines
3.9 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: repo-sources
|
|
namespace: repo
|
|
data:
|
|
# Lista de orígenes a espejar
|
|
# Formato por línea: NAME|URL|SUBDIR
|
|
# SUBDIR cuelga de /mirror/repos (asegúrate de que tu Deployment monta el PVC en /usr/local/apache2/htdocs con subPath repos)
|
|
sources.txt: |
|
|
# openSUSE Leap 15.6 (básicos + updates)
|
|
repo-oss|http://download.opensuse.org/distribution/leap/15.6/repo/oss/|opensuse/leap/15.6/oss
|
|
repo-non-oss|http://download.opensuse.org/distribution/leap/15.6/repo/non-oss/|opensuse/leap/15.6/non-oss
|
|
update-oss|http://download.opensuse.org/update/leap/15.6/oss/|opensuse/leap/15.6/update/oss
|
|
update-non-oss|http://download.opensuse.org/update/leap/15.6/non-oss/|opensuse/leap/15.6/update/non-oss
|
|
update-sle|http://download.opensuse.org/update/leap/15.6/sle/|opensuse/leap/15.6/update/sle
|
|
backports|http://download.opensuse.org/update/leap/15.6/backports/|opensuse/leap/15.6/update/backports
|
|
|
|
# Codecs openh264
|
|
openh264|http://codecs.opensuse.org/openh264/openSUSE_Leap/|opensuse/openh264
|
|
|
|
# Terceros (opcional)
|
|
nvidia|https://download.nvidia.com/opensuse/leap/15.6/|thirdparty/nvidia/leap/15.6
|
|
k8s-stable|https://pkgs.k8s.io/core:/stable:/v1.33/rpm/|thirdparty/kubernetes/core/stable/v1.33/rpm
|
|
|
|
# Claves públicas a publicar en /mirror/keys
|
|
# Formato por línea: NAME|URL|FILENAME
|
|
# Ajusta las URLs si prefieres otras fuentes/ubicaciones oficiales
|
|
keys.txt: |
|
|
opensuse|https://download.opensuse.org/repositories/openSUSE:/Leap:/15.6:/Update/standard/repodata/repomd.xml.key|RPM-GPG-KEY-openSUSE
|
|
nvidia|https://download.nvidia.com/opensuse/repodata/repomd.xml.key|RPM-GPG-KEY-NVIDIA
|
|
k8s|https://pkgs.k8s.io/core:/stable:/v1.33/rpm/repodata/repomd.xml.key|RPM-GPG-KEY-k8s
|
|
|
|
# Script de sincronización diario (CronJob)
|
|
# - Sincroniza repos a /mirror/repos/...
|
|
# - Publica claves GPG en /mirror/keys
|
|
sync.sh: |
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SRC_LIST="/config/sources.txt"
|
|
KEYS_LIST="/config/keys.txt"
|
|
|
|
DEST_ROOT="/mirror/repos"
|
|
DEST_KEYS="/mirror/keys"
|
|
|
|
mkdir -p "$DEST_ROOT" "$DEST_KEYS"
|
|
|
|
# Requisitos
|
|
command -v wget >/dev/null 2>&1 || { echo "ERROR: wget requerido"; exit 1; }
|
|
if ! command -v rsync >/dev/null 2>&1; then
|
|
echo "Aviso: rsync no disponible; usaré wget para HTTP/HTTPS"
|
|
fi
|
|
|
|
echo "===== SYNC REPOS ====="
|
|
while IFS='|' read -r NAME URL SUBDIR; do
|
|
[[ -z "${NAME:-}" || "${NAME:0:1}" == "#" ]] && continue
|
|
|
|
DEST="${DEST_ROOT}/${SUBDIR}"
|
|
mkdir -p "$DEST"
|
|
|
|
echo "==> Sync ${NAME} (${URL}) -> ${DEST}"
|
|
|
|
if [[ "$URL" == rsync://* ]]; then
|
|
# Sincronización eficiente por rsync (si el mirror lo soporta)
|
|
rsync -aH --delete --partial --info=stats1,progress2 "${URL}" "${DEST}/"
|
|
else
|
|
# Mirror vía HTTP/HTTPS con wget
|
|
TMP="${DEST}.tmp"
|
|
mkdir -p "$TMP"
|
|
|
|
# -m (mirror), -np (no subir), -nH (sin host en ruta), robots=off
|
|
wget -m -np -nH -e robots=off -P "$TMP" --no-verbose --show-progress "$URL"
|
|
|
|
# Mover contenido espeljado a DEST (limpiando y dejando estructura limpia)
|
|
shopt -s dotglob nullglob
|
|
if compgen -G "$TMP/*" >/dev/null; then
|
|
rsync -a --delete "$TMP"/ "$DEST"/
|
|
fi
|
|
rm -rf "$TMP"
|
|
fi
|
|
|
|
# Permisos legibles por httpd y Samba
|
|
chmod -R a+rX "$DEST"
|
|
done < "$SRC_LIST"
|
|
|
|
echo "===== SYNC KEYS ====="
|
|
if [[ -f "$KEYS_LIST" ]]; then
|
|
while IFS='|' read -r KNAME KURL KFILE; do
|
|
[[ -z "${KNAME:-}" || "${KNAME:0:1}" == "#" ]] && continue
|
|
echo "==> Key ${KNAME} (${KURL}) -> ${DEST_KEYS}/${KFILE}"
|
|
wget -q -O "${DEST_KEYS}/${KFILE}.tmp" "$KURL"
|
|
mv "${DEST_KEYS}/${KFILE}.tmp" "${DEST_KEYS}/${KFILE}"
|
|
chmod a+r "${DEST_KEYS}/${KFILE}"
|
|
done < "$KEYS_LIST"
|
|
else
|
|
echo "No hay KEYS_LIST ($KEYS_LIST), omitido."
|
|
fi
|
|
|
|
echo "===== DONE ====="
|