onboard: niente piu' esiti verdi su passi falliti, git e AWS verificati davvero

- configura.sh e progetti.sh escono 1 se un passo non riesce (scrittura di
  ~/.ssh/config, chiave SSH, clone, chiave AWS), e lo dicono in rosso;
- git: per l'indirizzo di Gitea si usa solo il gestore "store", e un token
  vecchio rimasto in ~/.git-credentials si sostituisce (prima si aggiungeva
  solo se mancava: API buona e git clone rotto). verifica.sh chiede a git la
  credenziale che userebbe davvero, invece di accontentarsi di un gestore
  qualsiasi;
- AWS: la chiave si controlla PRIMA di salvarla, e deve essere l'utente della
  persona nell'account di OTO (ARN completo, non solo il nome). Senza Gitea il
  passo si salta e verifica.sh non da' piu' verde a una chiave qualsiasi.
  Avviso se AWS_PROFILE o AWS_ACCESS_KEY_ID... fanno usare un'altra chiave;
- API di Gitea: codice HTTP controllato, "Gitea non risponde" distinto da
  "token non valido", elenco dei progetti interrotto solo su una pagina vuota
  vera; token passato a curl da stdin; JSON letto anche con gli spazi;
- progetti.sh: nomi confrontati in modo esatto, accetta organizzazione/nome
  e dice quando un nome corto e' ambiguo;
- la chiave ~/.ssh/oto_ed25519 viene collegata anche ai nomi che cercano i
  deploy dei progetti (oto_staging_ed25519, oto_production_ed25519): su un
  PC preparato da qui il primo deploy si fermava con "Chiave privata non
  trovata";
- verifica.sh --senza-vpn, per chi non ha la VPN: staging giallo e non rosso.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Fabio
2026-10-11 10:27:17 +02:00
co-authored by Claude Opus 5.5
parent e544e90661
commit eb68d8930e
5 changed files with 326 additions and 105 deletions
+11 -5
View File
@@ -81,8 +81,8 @@ mail, le servono tutti i passi; se su LastPass ha anche la scheda `OTO > VPN HK
serve anche la VPN. Chi lavora solo dal pannello del sito non riceve la mail
e non arriva qui. Alla VPN (passo 5) le chiedi soltanto se fra le schede
LastPass condivise con lei c'è `OTO > VPN HK nome.cognome`: se no, salti il
passo, e `verifica.sh` segnerà rossi VPN e staging: dille che per lei è
normale.
passo, e lanci `./verifica.sh --senza-vpn`: staging non raggiungibile
diventa giallo invece che rosso, e il risultato può essere tutto a posto.
Niente gergo: se una parola tecnica serve (terminale, token, push),
spiegala in una riga la prima volta.
@@ -120,7 +120,11 @@ spiegala in una riga la prima volta.
Gitea, configura git, genera la chiave SSH e la carica sul suo profilo
Gitea (da lì la prende l'amministratore: **non va mandata a nessuno**),
scrive i nomi dei server in `~/.ssh/config` e le loro chiavi in
`~/.ssh/known_hosts` (da `server.known_hosts`). Gitea viene prima apposta: è lui a dire chi è la persona. Se sul PC
`~/.ssh/known_hosts` (da `server.known_hosts`). La chiave la crea come
`~/.ssh/oto_ed25519` e la collega anche ai due nomi con cui la cercano i
deploy dei progetti, `oto_staging_ed25519` e `oto_production_ed25519`
(un file che c'è già con quel nome non lo tocca). Esce con errore se un
passo non è riuscito, e lo dice in rosso: allora non si va avanti. Gitea viene prima apposta: è lui a dire chi è la persona. Se sul PC
c'è già una chiave AWS **di un altro** (rimasta da chi lo usava, o copiata
da un collega), lo script lo dice e chiede la sua: dille di avvisare
l'amministratore, perché quella chiave va disattivata. Una chiave altrui
@@ -138,8 +142,10 @@ spiegala in una riga la prima volta.
scrivendo «ho finito la configurazione». È il segnale
per mettere la sua chiave SSH sui server; finché non lo fa, staging resta
rosso.
7. **`./verifica.sh`**: tutto verde, o un elenco preciso di cosa manca e a chi
chiederlo.
7. **`./verifica.sh`** (`--senza-vpn` se non ha la VPN): tutto verde, o un
elenco preciso di cosa manca e a chi chiederlo. Controlla anche che git
entri su Gitea con il token giusto e che la chiave AWS sia la sua
nell'account di OTO, non solo un utente con lo stesso nome.
8. **`./progetti.sh`**: scarica i progetti che la persona vede su Gitea (lo
lanci tu con i nomi: `./progetti.sh nome1 nome2`). Poi, in ogni progetto:
`./start.sh` per i progetti con pannello, `bin/local-init.sh` per Drupal e