Document current repo workflows

This commit is contained in:
Fabio Scotto di Santolo
2026-03-18 18:26:39 +01:00
parent 13ed4279ab
commit c5208a3143
2 changed files with 232 additions and 160 deletions

173
README.md
View File

@@ -47,9 +47,14 @@ Il repository è diviso in due componenti principali:
---
# Macchine gestite
Il sistema attualmente gestisce tre tipologie di profilo.
# Macchine gestite
Il repository modella attualmente tre tipologie di profilo.
Nota sullo stato attuale del playbook principale:
- `ansible/site.yml` applica oggi in automatico il profilo desktop su host Void Linux
- i profili workstation e server sono gia presenti in inventory e nei ruoli, ma non sono ancora inclusi nel playbook principale
## Desktop
@@ -66,7 +71,15 @@ Macchine:
- `ikaros`
- `nymph`
Queste macchine condividono la stessa configurazione base desktop e vengono mantenute allineate tramite Ansible.
Queste macchine condividono la stessa configurazione base desktop e vengono mantenute allineate tramite Ansible.
Lo stato attuale del profilo desktop include, tra le altre cose:
- dotfiles comuni e desktop
- sessione i3 e servizi desktop correlati
- pacchetti Void Linux e servizi runit
- Flatpak con remoto Flathub
- GNOME Keyring e bootstrap della posta via script dedicato
---
@@ -84,7 +97,9 @@ Macchina:
- `deadalus`
Questo profilo è pensato per sviluppo e lavoro.
Questo profilo è pensato per sviluppo e lavoro.
Il modello e la struttura dei ruoli sono presenti, ma l'orchestrazione automatica tramite `ansible/site.yml` verra completata in una fase successiva.
---
@@ -102,7 +117,9 @@ Macchina:
- `prometheus`
Profilo minimale orientato a servizi server.
Profilo minimale orientato a servizi server.
Anche questo profilo e gia rappresentato in inventory e nei ruoli, ma non e ancora agganciato al playbook principale.
---
@@ -139,23 +156,38 @@ Questo approccio consente di:
# Ruoli Ansible
I principali ruoli attualmente presenti sono:
I principali ruoli attualmente presenti sono:
| Role | Descrizione |
| ------------------------- | ----------------------------------- |
| base | configurazione base comune |
| packages_void | installazione pacchetti su Void |
| packages_ubuntu | installazione pacchetti su Ubuntu |
| services_runit | gestione servizi runit |
| services_systemd | gestione servizi systemd |
| profile_desktop_i3 | configurazione desktop i3 |
| profile_workstation_gnome | configurazione workstation GNOME |
| profile_server | configurazione server |
| dotfiles | distribuzione configurazioni utente |
---
# Dotfiles
| packages_void | installazione pacchetti su Void |
| packages_ubuntu | installazione pacchetti su Ubuntu |
| services_runit | gestione servizi runit |
| services_systemd | gestione servizi systemd |
| profile_desktop_i3 | configurazione desktop i3 |
| profile_workstation_gnome | configurazione workstation GNOME |
| profile_server | configurazione server |
| dotfiles_common | distribuzione dotfiles comuni |
| dotfiles | distribuzione configurazioni utente |
---
# Stato attuale del playbook principale
Il playbook `ansible/site.yml` e attualmente composto da due blocchi:
```text
all -> dotfiles_common
void -> packages_void + services_runit + profile_desktop_i3
```
Questo significa che, allo stato attuale:
- i desktop Void (`ikaros`, `nymph`) sono il target operativo principale
- inventory, gruppi e ruoli per workstation Ubuntu e server Ubuntu restano nel repository come base per l'estensione futura
# Dotfiles
La directory `dotfiles/` contiene le configurazioni utente versionate.
@@ -180,48 +212,71 @@ Le configurazioni sono applicate tramite Ansible e organizzate per livelli:
# Requisiti
Per utilizzare il repository sono necessari:
- Python 3
- Ansible
- accesso SSH alle macchine target
Installazione Ansible:
```bash
pip install ansible
```
Per utilizzare il repository sono necessari:
- Python 3
- Ansible
- collection `community.general`
- accesso locale o SSH alle macchine target, in base a come e definito l'inventory
Installazione base:
```bash
pip install ansible
ansible-galaxy collection install community.general
```
Gestione segreti:
- il repository supporta il caricamento opzionale di `secrets/vault.yml`
- `secrets/vault.yml.example` funge da template/esempio
- se `secrets/vault.yml` non e presente, il playbook continua comunque senza caricare variabili locali opzionali
---
# Utilizzo
Eseguire il playbook principale:
```bash
ansible-playbook ansible/site.yml
```
Questo comando:
- installa i pacchetti richiesti
- configura i servizi
- applica il profilo macchina
- distribuisce i dotfiles
Eseguire il playbook principale:
```bash
ansible-playbook ansible/site.yml
```
Allo stato attuale questo comando:
- distribuisce i dotfiles comuni a tutti gli host
- per gli host Void applica pacchetti, servizi runit e profilo desktop i3
- carica `secrets/vault.yml` solo se presente
Per validare prima di applicare:
```bash
ansible-playbook ansible/site.yml --syntax-check
ansible-playbook ansible/site.yml --limit ikaros --check --diff
```
---
# Bootstrap di una nuova macchina
Una nuova macchina può essere inizializzata con i seguenti passaggi:
```bash
git clone <repo>
cd infra
ansible-playbook ansible/site.yml
```
Dopo l'esecuzione del playbook la macchina verrà configurata secondo il profilo definito.
Una nuova macchina può essere inizializzata con i seguenti passaggi:
```bash
git clone <repo>
cd infra
ansible-galaxy collection install community.general
ansible-playbook ansible/site.yml
```
Dopo l'esecuzione del playbook la macchina verra configurata secondo il profilo definito e i ruoli attualmente orchestrati.
Per il flusso mail desktop esiste inoltre uno script dedicato:
```bash
scripts/bootstrap_mail.sh
```
Lo script si occupa del bootstrap dei secret nel keyring, del primo sync con `mbsync` e dell'inizializzazione di `mu` usando la configurazione mail generata dai template.
---
@@ -241,14 +296,14 @@ Questo consente di ricreare qualsiasi macchina partendo esclusivamente dal repos
# Roadmap
Possibili evoluzioni future:
- gestione segreti con `ansible-vault`
- hardening sicurezza server
- configurazione backup
- testing automatico playbook
- integrazione CI
- supporto ad altre distribuzioni Linux
Possibili evoluzioni future:
- completamento dell'orchestrazione per workstation Ubuntu e server Ubuntu
- hardening sicurezza server
- configurazione backup
- testing automatico playbook
- integrazione CI
- supporto ad altre distribuzioni Linux
---