GitHunt
FT

ftassi/workstation

Provisioning della Workstation

Questo repository contiene una serie di script per il provisioning automatizzato di una workstation basata su Ubuntu 24.04 LTS.

Setup e provisioning semplificato

Per iniziare il provisioning completo su una nuova macchina, puoi utilizzare uno dei seguenti metodi:

Metodo 1: Ideale per input interattivo (consigliato)

bash <(curl -sSL https://rebrand.ly/ftassi-workstation)

Metodo 2: Alternativa classica (potrebbe richiedere download manuale)

curl -sSL https://rebrand.ly/ftassi-workstation | bash

Se questo metodo non ti consente di inserire la password, usa il Metodo 1 o questo:

curl -sSL https://rebrand.ly/ftassi-workstation -o bootstrap.sh && bash bootstrap.sh

Metodo 3: Esecuzione non interattiva con password

MASTER_PASSWORD='tua_password' curl -sSL https://rebrand.ly/ftassi-workstation | bash

Lo script di bootstrap:

  1. Installa le dipendenze necessarie (git, gpg, git-crypt)
  2. Clona il repository nella directory corrente
  3. Esegue setup.sh per configurare sudo e sbloccare i file crittografati
  4. Avvia il processo di provisioning completo se richiesto

Nota importante: Ti verrà richiesto di inserire la master password. Questa è l'unico secret mnemonico necessario per il provisioning completo.

Esecuzione manuale di moduli specifici

Il provisioning installa i dotfiles, configura il sistema, crea distrobox per vari ambienti e installa applicazioni GUI di base. Se desideri eseguire solo porzioni specifiche del provisioning, puoi invocare direttamente gli script in modules/:

./modules/nome_modulo.sh

Provisioning delle Distrobox

Il provisioning crea due ambienti distrobox:

  • nvim: per avere un ide neovim isolato e pronto all'uso.
  • dev: per l'ambiente di sviluppo.

Dopo la creazione delle distrobox tramite main.sh, è necessario eseguire il provisioning interno manualmente.
Entrare nella distrobox ed eseguire:

distrobox enter nvim -- ./distrobox/nvim.sh
distrobox enter dev -- ./distrobox/dev.sh

Gestione dei Secrets

I file sensibili sono crittografati con git-crypt.
Gli script encrypt.sh e decrypt.sh gestiscono la cifratura e la decifratura tramite gpg dei file prima
che il repository venga inizializzato con git-crypt. Ad esempio la chiave stessa di giy-crypt è cifrata con gpg.
Sono file di utility per la manutenzione del repository e non necessari al provisionig della macchina.

./encrypt.sh   # Per criptare i file
./decrypt.sh   # Per decriptare i file

Lo script di utility repo.sh permette di eseguire lock e unlock del repository git-crypt utilizando la chiave locale.

## Conclusione

Dopo aver completato il provisioning, rimuovere il file dei sudoers temporanei:

```bash
sudo rm /etc/sudoers.d/zz_provisioning_<utente>

Ora la workstation è pronta all'uso.

Testing con Docker

Per testare il processo di provisioning in un ambiente isolato, questo repository include un Dockerfile e Makefile per creare e gestire un container di test.

Comandi Makefile

make help       # Mostra l'elenco di tutti i comandi disponibili
make build      # Crea l'immagine Docker per il testing
make start      # Avvia il container di test
make stop       # Ferma il container di test
make bash       # Apre una shell interattiva nel container
make run-setup  # Esegue lo script setup.sh nel container
make run-main   # Esegue lo script main.sh nel container

Flusso di testing tipico

  1. Crea l'immagine Docker: make build
  2. Avvia il container: make start
  3. Esegui il setup: make run-setup (richiede la master password) o MASTER_PASSWORD=tuapassword make run-setup
  4. Esegui il provisioning: make run-main
  5. Esplora il container: make bash
  6. Quando hai finito: make stop

Questo ambiente di test permette di verificare che il provisioning funzioni correttamente senza modificare il sistema ospitante.

ftassi/workstation | GitHunt