DEV Community

minnogit
minnogit

Posted on

Gestione repo script sul server

Come deployo gli script bash del mio repo git sul server

Ho un repository git con decine di script bash che uso per la gestione del server (backup, restic, virtualhost, slack, deploy, ecc.).

Alcuni script si richiamano tra loro. Devono quindi stare in una directory che sia nel PATH e che corrisponda ai path.

La soluzione che ho adottato è questa:

/opt/scripts/              ← git clone del repo
/usr/local/sbin/script.sh  → symlink → /opt/scripts/script.sh
Enter fullscreen mode Exit fullscreen mode

Perché funziona

  • Il repo sta in /opt/scripts/ — una directory dedicata, separata dai binari di sistema. Non si mescola con altro, non porta .git/ o file di configurazione in mezzo agli eseguibili.
  • I symlink stanno in /usr/local/sbin/ — così gli script sono raggiungibili via PATH ed eventuali path hardcoded continuano a funzionare.
  • Gli aggiornamenti sono semplici — un git pull in /opt/scripts/ aggiorna tutto, e i symlink puntano già ai file aggiornati.

Come si fa

sudo -i
git clone <url-del-repo> /opt/scripts
chmod +x /opt/scripts/*.sh
ln -s /opt/scripts/backup_all.sh /usr/local/sbin/
ln -s /opt/scripts/check_system_health.sh /usr/local/sbin/
# ... e così via per ogni script che serve
Enter fullscreen mode Exit fullscreen mode

Perché non clono direttamente in /usr/local/sbin/

Perché nel repo ci sono anche file non eseguibili: .git/, template .tpl, file .txt, script .bat per Windows. Mettere tutto in /usr/local/sbin/ sporca il PATH e rischia interferenze con git clean o git status.

Con i symlink invece in /usr/local/sbin/ finiscono solo gli script che effettivamente servono, e il repo resta isolato e pulito in /opt/scripts/.

Top comments (0)