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
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 pullin/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
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)