Riferimento CLI Rediacc
Panoramica
La **CLI Rediacc** (`rdc`) è un'interfaccia a riga di comando per la gestione dell'infrastruttura self-hosted: macchine, repository, storage, backup e altro ancora.
Installazione
Scarica l'ultimo binario per la tua piattaforma dalla [pagina delle release Rediacc](https://www.rediacc.com) oppure installa tramite il gestore di pacchetti:
# macOS / Linux
curl -fsSL https://www.rediacc.com | sh
# Or use the packaged binary directly
./rdc --help
Opzioni globali
Ogni comando supporta questi flag globali:
| Flag | Descrizione |
|---|---|
--output | Formato di output (table|json|yaml|csv) |
--config | Usa una config specifica per questo comando |
--lang | Override della lingua ({{languages}}) |
--force | Salta le richieste di conferma |
1. Gestione della config
Gestisci i file di configurazione: crea, cambia, modifica, riconcilia lo stato e le funzionalità trasversali (campi, audit, chiavi SSH, sincronizzazione remota).
I file di config memorizzano i dettagli di connessione (URL API, credenziali, team/regione/bridge predefiniti) in modo da poter passare rapidamente da un ambiente all'altro.
1.1 prune
Rimuove gli elementi superflui dal file di configurazione locale in ~/.config/rediacc/<config>.json. Vengono puliti tre bucket, tutti puramente locali (nessuna chiamata SSH/renet): (1) voci della cache certificati ACME il cui GUID/repo/macchinario di ancoraggio non è più nella configurazione attiva; (2) repository archiviati il cui periodo di grazia è scaduto (predefinito 7 giorni, vedi defaults.pruneGraceDays); (3) riferimenti incrociati non validi (machine→strategy, strategy→repo). Le risorse ancora in uso, le credenziali, i token di storage e gli host conosciuti non vengono mai toccati. Il comportamento predefinito è applicare le modifiche; usa --dry-run per visualizzare un'anteprima.
rdc config prune [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--dry-run | Visualizza un'anteprima di cosa verrebbe rimosso senza modificare il file di configurazione. Specchio della semantica predefinita degli altri comandi prune. | No | - |
--certs-only | Limita al bucket della cache certificati ACME. Ignora l'eliminazione degli archivi e la pulizia dei riferimenti incrociati. Mutuamente esclusivo con --archives-only e --refs-only. | No | - |
--archives-only | Limita all'eliminazione degli archivi scaduti. Ignora la cache certificati e la pulizia dei riferimenti incrociati. Mutuamente esclusivo con --certs-only e --refs-only. | No | - |
--refs-only | Limita ai riferimenti incrociati non validi (machine→strategy, strategy→repo excludes/includes). Ignora la cache certificati e gli archivi. Mutuamente esclusivo con --certs-only e --archives-only. | No | - |
--purge-archived | Elimina TUTTI i repository archiviati indipendentemente dall'età, non solo quelli oltre il periodo di grazia. Equivale a eseguire 'rdc repo admin archive purge' per ogni repository archiviato. Usalo solo quando sei sicuro di non aver bisogno di nessuna delle credenziali archiviate per il ripristino. | No | - |
--orphan-repos | Rimuove le voci di repository non associate a nessuna macchina. Ogni voce contiene la credenziale e la chiave SSH di quel repository, quindi l'operazione è irreversibile. Esegui prima 'rdc config reconcile' in modo che l'associazione rifletta le macchine. | No | - |
--grace-days <days> | Sovrascrive la finestra di grazia degli archivi (in giorni) per questa esecuzione. Usa defaults.pruneGraceDays dalla configurazione, poi 7 se nessuno dei due è impostato. | No | - |
1.2 init
Crea un nuovo file di configurazione con nome
Puoi aggiungere macchine direttamente:
rdc config init [name] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--ssh-key <path> | Percorso della chiave SSH privata (es. ~/.ssh/id_rsa) | No | - |
--renet-path <path> | Percorso del binario renet (predefinito: renet nel PATH) | No | - |
--master-password <password> | Cifra le risorse con una password principale | No | - |
--server <url> | URL del server account | No | - |
1.3 list
Elenca tutti i file di configurazione
rdc config list
1.4 show
Mostra i dettagli della configurazione corrente
rdc config show [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--reveal | Mostra il testo in chiaro per i valori sensibili (solo interattivo) | No | - |
1.5 current
Mostra la configurazione attiva: nome, file, server e canale risolti, stato del token
rdc config current
1.6 delete
Elimina un file di configurazione
rdc config delete <name>
1.7 set
Imposta un valore predefinito (team, regione, bridge)
rdc config set <key> <value>
1.8 clear
Cancella i valori predefiniti (tutti o una chiave specifica)
rdc config clear [key]
1.9 recover
Ripristina la configurazione dal file di backup (.bak)
rdc config recover [name] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-y, --yes | Salta la richiesta di conferma | No | - |
1.10 ssh
Gestisci la configurazione delle chiavi SSH
set
Imposta la chiave SSH per la configurazione corrente
rdc config ssh set [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--key <path> | Percorso del file della chiave privata SSH | Sì | - |
--embed | Incorpora il contenuto della chiave nella configurazione invece di memorizzare il percorso | No | - |
show
Mostra la configurazione della chiave SSH corrente
rdc config ssh show
remove
Rimuovi la chiave SSH dalla configurazione corrente
rdc config ssh remove
1.11 remote
Gestisci la connessione allo storage di configurazione remoto
enable
Collega questa configurazione allo storage cifrato remoto
rdc config remote enable [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--headless | Usa il flusso device code (per server headless) | No | - |
--password | Iscriviti in modalità headless con un password slot pre-provisionato (senza browser) | No | - |
--api-url <url> | URL del server account | No | - |
--force | Sostituisci il contenuto locale differente con la copia del server senza conferma | No | - |
disable
Disconnetti dallo storage remoto e salva la configurazione in locale
rdc config remote disable
status
Mostra lo stato della connessione remota
rdc config remote status
refresh
Forza il recupero della configurazione dallo storage remoto
rdc config remote refresh
1.12 field
Operazioni sui campi di configurazione con indirizzo tramite pointer (get/set/unset/rotate/list). Pointer JSON (RFC 6901) come /credentials/cfDnsApiToken.
get
Leggi un singolo valore di configurazione tramite JSON Pointer. I campi sensibili vengono oscurati a meno che non si usi --reveal (solo per utenti).
rdc config field get [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--pointer <pointer> | JSON Pointer al campo (es. /credentials/cfDnsApiToken) | Sì | - |
--reveal | Mostra il testo in chiaro per i valori sensibili (solo TTY interattivo; registrato) | No | - |
--digest | Stampa il digest SHA-256 invece del valore (sicuro da condividere con gli agenti) | No | - |
set
Scrivi un valore di configurazione su un JSON Pointer. I percorsi sensibili richiedono --current (knowledge-gate).
rdc config field set [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--pointer <pointer> | JSON Pointer al campo (es. /credentials/cfDnsApiToken) | Sì | - |
--new <value> | Nuovo valore (analizzato come JSON se sembra JSON: {, [, ", true/false/null/numero) | Sì | - |
--current <value> | Valore in chiaro corrente -- obbligatorio per le mutazioni su percorsi sensibili (prova per knowledge-gate) | No | - |
unset
Elimina un valore di configurazione su un JSON Pointer. I percorsi sensibili richiedono --current.
rdc config field unset [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--pointer <pointer> | JSON Pointer al campo (es. /credentials/cfDnsApiToken) | Sì | - |
--current <value> | Valore in chiaro corrente -- obbligatorio per le eliminazioni su percorsi sensibili | No | - |
rotate
Ruota un valore sensibile senza --current. Solo TTY interattivo; registrato in modo esplicito.
rdc config field rotate [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--pointer <pointer> | JSON Pointer al campo sensibile (es. /credentials/cfDnsApiToken) | Sì | - |
--new <value> | Nuovo valore | Sì | - |
list
Elenca ogni template di pointer sensibile registrato con il suo tipo e la policy di commit/cifratura.
rdc config field list [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--sensitive | Mostra solo i template sensibili (non pubblici) | No | - |
1.13 edit
Apre la configurazione attiva in $EDITOR come proiezione JSONC oscurata. Solo per utenti; gli agenti vengono rifiutati.
rdc config edit [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--reveal | Mostra il testo in chiaro per i valori sensibili (solo TTY interattivo; registrato) | No | - |
--dump | Stampa la configurazione corrente come JSONC su stdout (sola lettura; sicuro per gli agenti se oscurato) | No | - |
--apply <file> | Applica un file JSONC modificato (ignora l'avvio di $EDITOR) | No | - |
--current-secrets <file> | File JSON che mappa pointer→valore in chiaro precedente per il knowledge-gate su --apply | No | - |
--editor <cmd> | Sovrascrittura del comando dell'editor (segue la precedenza di git: flag > $GIT_EDITOR > git config core.editor > $VISUAL > $EDITOR) | No | - |
1.14 audit
Ispeziona il log di audit della configurazione (JSONL con catena di hash in ~/.config/rediacc/audit.log.jsonl)
log
Stampa le voci di audit recenti come JSON
rdc config audit log [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--since <spec> | Mostra solo le voci più recenti di (es. '24h', '7d', timestamp ISO) | No | - |
--path <glob> | Filtra per glob JSON Pointer (es. /credentials/*) | No | - |
--actor <kind> | Filtra per tipo di attore (human|agent) | No | - |
tail
Trasmette in streaming le nuove voci di audit man mano che vengono scritte (Ctrl+C per fermare)
rdc config audit tail
verify
Verifica l'integrità della catena di hash SHA-256 su tutte le voci di audit
rdc config audit verify
1.15 reconcile
Ricostruisce lo stato di runtime a partire dallo stato reale delle macchine. Corregge dati di collegamento e instradamento obsoleti.
rdc config reconcile [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--machine <m...> | Limita la riconciliazione a queste macchine | No | - |
--dry-run | Mostra cosa verrebbe fatto senza apportare modifiche | No | - |
--accept-observed | Riscrive un posizionamento dichiarato in modo che corrisponda a dove si trova realmente l'immagine, ma solo quando ciò è inequivocabile (osservato su esattamente una macchina). I duplicati restano conflitti. | No | - |
1.16 rotate-cek
Ruota la chiave di cifratura della configurazione dell'organizzazione
rdc config rotate-cek [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--api-url <url> | URL del server account | No | - |
2. Gestione del datastore
Pool di storage con nome che contengono i repository. Un datastore è mobile (collegalo a una macchina, spostalo su un'altra) ed è a montaggio singolo (una sola macchina lo detiene alla volta). Il datastore predefinito implicito di ogni macchina non viene gestito qui.
2.1 resize
Espandi o riduci un datastore. È un'operazione offline: i repository al suo interno devono essere fermati.
rdc datastore resize <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--size <size> | Nuova dimensione (es. 200G) | Sì | - |
--debug | Abilita l'output di debug | No | - |
2.2 fork
Fai il fork copy-on-write di un datastore. Il fork è istantaneo e il suo costo non cresce con la dimensione del pool. Richiede il backend rbd: un datastore local non ha un clone a livello di blocco, quindi i repository al suo interno vengono forkati uno alla volta tramite reflink (rdc repo fork).
rdc datastore fork <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--tag <tag> | Tag per il fork (il risultato è nome:tag) | Sì | - |
--attach-to <machine> | Collega subito il fork a questa macchina (richiede --writes) | No | - |
--writes <disposition> | Dove vanno le scritture del fork: local (istantaneo, effimero) oppure ceph (clone durevole) | No | - |
--cow-size <size> | Dimensione dell'overlay per --writes local | No | - |
--debug | Abilita l'output di debug | No | - |
2.3 status
Mostra un datastore: il suo backend, collegamento, utilizzo, repository e snapshot. Un datastore scollegato riporta comunque il proprio record.
rdc datastore status <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
2.4 create
Crea un datastore aggiuntivo con nome su una macchina. Un backend local è un pool basato su file su quella macchina e vi resta. Un backend rbd risiede in Ceph, quindi può spostarsi su qualsiasi macchina che raggiunga lo stesso cluster. Passa --cluster per renderlo un datastore del mondo kubernetes; questo riferimento viene fissato alla creazione.
rdc datastore create <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Macchina su cui creare il datastore | Sì | - |
--size <size> | Dimensione del datastore (es. 100G) | Sì | - |
--backend <type> | Backend di storage: local (basato su file, resta su questa macchina) oppure rbd (Ceph, spostabile) | No | local |
--pool <name> | Pool Ceph per il backend rbd (predefinito: rbd) | No | - |
--image <name> | Nome dell'immagine RBD per il backend rbd (predefinito: il nome del datastore) | No | - |
--cluster <name> | Cluster Kubernetes a cui appartiene questo datastore. Se impostato, solo repository kubernetes; se non impostato, solo repository docker. Fissato alla creazione. | No | - |
--debug | Abilita l'output di debug | No | - |
2.5 list
Elenca i datastore con nome, dove sono collegati e cosa contengono.
rdc datastore list [place]
2.6 attach
Collega un datastore a una macchina. Un datastore è detenuto da una sola macchina alla volta, quindi collegarlo altrove lo sposta: il vecchio detentore lo rilascia per primo, e un handoff fallito lascia intatto il collegamento originale. Un fork deve indicare dove vanno le sue scritture.
rdc datastore attach <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--to <machine> | Macchina a cui collegare il datastore | Sì | - |
--writes <disposition> | Dove vanno le scritture di un fork: local (istantaneo, effimero, perso allo scollegamento) oppure ceph (clone durevole nel pool). Obbligatorio per un fork. | No | - |
--cow-size <size> | Dimensione dell'overlay per --writes local | No | - |
--no-auto | Non ricollegare automaticamente questo datastore all'avvio | No | - |
--force | Forza il rilascio di un detentore bloccato che non ha ceduto correttamente il datastore | No | - |
--debug | Abilita l'output di debug | No | - |
2.7 detach
Scollega un datastore dalla sua macchina. I repository al suo interno vengono prima fermati. Un fork collegato con --writes local non ha un posto in cui riscrivere il proprio overlay, quindi scollegarlo scarta l'overlay e richiede --discard.
rdc datastore detach <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--discard | Scarta un fork con scritture locali e il suo overlay. I dati non sono recuperabili. | No | - |
-y, --yes | Salta la richiesta di conferma | No | - |
--debug | Abilita l'output di debug | No | - |
2.8 snapshot
Esegue ed elenca gli snapshot puntuali di un datastore. Uno snapshot non costa nulla a riposo ed è ciò da cui un fork viene clonato.
create
Esegue uno snapshot puntuale di un datastore. Niente viene fermato. L'istante è crash-consistent, non application-consistent: se hai bisogno che una scrittura specifica sia inclusa nello snapshot, sincronizzala prima.
rdc datastore snapshot create <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--snapshot <label> | Etichetta dello snapshot (predefinito: un timestamp UTC) | No | - |
--debug | Abilita l'output di debug | No | - |
list
Elenca gli snapshot di un datastore.
rdc datastore snapshot list <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
2.9 delete
Distrugge un datastore e tutto ciò che contiene. Viene prima scollegato; se non si scollega correttamente, l'eliminazione fallisce invece di lasciare orfano un pool montato.
rdc datastore delete <datastore> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-y, --yes | Salta la richiesta di conferma | No | - |
--force | Elimina anche se ci sono ancora repository che vi puntano. I loro dati vengono eliminati insieme ad esso. | No | - |
--debug | Abilita l'output di debug | No | - |
3. Gestione delle macchine
Ispeziona lo stato delle macchine remote: risorse di sistema, container in esecuzione, servizi systemd, repository distribuiti e diagnostica di salute. Query di sola lettura; per modificare i repository usa `repo`. Sottocomandi principali: status (stato completo, filtrabile con --system, --containers, --repositories, --services), health, list, add, remove, setup, prune, provision, deprovision.
3.1 list
Elenca le macchine
rdc machine list [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--search <text> | Cerca nel campo {{field}} | No | - |
--sort <field> | Ordina per campo | No | - |
--desc | Ordina in ordine decrescente | No | - |
3.2 health
Controlla la salute della macchina per pipeline CI/CD
Il comando health restituisce metriche di sistema, stato dei container, stabilità dei servizi e informazioni sullo storage, utile per i gate nelle pipeline CI/CD.
rdc machine health <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-t, --team <name> | Nome del team | No | - |
3.3 provision
Provvisiona una nuova macchina su un provider cloud usando OpenTofu
rdc machine provision <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--provider <name> | Nome del provider cloud (da machine provider add) | Sì | - |
--region <region> | Sostituisci la regione predefinita | No | - |
--type <type> | Sostituisci il tipo di istanza predefinito | No | - |
--image <image> | Sostituisci l'immagine OS predefinita | No | - |
--ssh-user <user> | Nome utente SSH per la nuova VM (predefinito: root) | No | - |
--base-domain <domain> | Dominio base per l'infrastruttura (es. example.com). Implica --infra | No | - |
--no-infra | Salta la configurazione dell'infrastruttura (proxy + DNS) | No | - |
--debug | Abilita l'output di debug | No | - |
3.4 deprovision
Distruggi una macchina provisioned nel cloud e rimuovila dalla configurazione
rdc machine deprovision <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--force | Salta la richiesta di conferma | No | - |
--debug | Abilita l'output di debug | No | - |
3.5 prune
Rimuovi risorse del datastore orfane e snapshot obsoleti da una macchina. L'esecuzione base pulisce gli artefatti interni del datastore renet (sottovolumi BTRFS, file di lock, tmpfile). Le opzioni seguenti abilitano pulizie più precise dei repository: --orphaned-repos usa solo la configurazione CLI locale come segnale, mentre --prune-unknown consulta anche il mirror di stato .interim/renet affinché i fork legittimi creati da altri strumenti sopravvivano anche se assenti dalla configurazione locale. Entrambi i percorsi di eliminazione eseguono un controllo di sicurezza del montaggio; usa --force-delete-mounted per ignorarlo.
rdc machine prune <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--dry-run | Mostra cosa verrebbe rimosso senza apportare modifiche | No | - |
--orphaned-repos | Elimina tutte le immagini repository sulla macchina non presenti nella configurazione CLI locale. Grossolano: rimuove anche i fork creati da altri strumenti senza voce nella configurazione locale, anche se il mirror renet li identifica correttamente come fork. Usa --prune-unknown per il comportamento più ristretto che rispetta il mirror. | No | - |
--prune-unknown | Elimina solo i repository che il mirror di stato .interim/renet non riesce a classificare (non presenti nella configurazione locale E senza mirror con marcatura fork). Strettamente più ristretto di --orphaned-repos: i fork senza configurazione sono preservati quando il mirror li identifica. In questo bucket rientrano gli orfani legacy pre-mirror e i grand il cui record di configurazione è stato eliminato. | No | - |
--force-delete-mounted | Ignora il controllo di sicurezza del montaggio ed elimina i repository anche se sono attualmente montati o hanno container Docker in esecuzione. Distinto da --force (che ignora solo il periodo di grazia dell'archivio). Si applica sia a --orphaned-repos sia a --prune-unknown. | No | - |
--force | Salta le richieste di conferma | No | - |
--grace-days <days> | Periodo di grazia in giorni per i repo archiviati di recente (predefinito: 7) | No | - |
--debug | Abilita l'output di debug | No | - |
3.6 add
Aggiungi un macchinario alla configurazione corrente. Esegue la scansione automatica delle chiavi host SSH. Dopo l'aggiunta, esegui: config machine setup <nome>
rdc machine add <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--ip <address> | Indirizzo IP o hostname della macchina | Sì | - |
--user <username> | Nome utente SSH | Sì | - |
--port <port> | Porta SSH | No | 22 |
3.7 infra
Gestisci la configurazione dell'infrastruttura (proxy, DNS, certificati)
cert
Gestisci i certificati TLS in cache
Rimuovi la cache dei certificati
rdc machine infra cert clear
Scarica e memorizza nella cache i certificati TLS da un macchinario
rdc machine infra cert pull <machine> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--no-prune | Ignora la rimozione dei certificati con ID di rete obsoleti | No | - |
--debug | Abilita l'output di debug | No | - |
Carica i certificati TLS in cache su un macchinario
rdc machine infra cert push <machine> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
Mostra l'inventario dei certificati in cache
rdc machine infra cert status
push
Invia la configurazione infrastruttura al macchinario (proxy Traefik, router, DNS Cloudflare). Esegui prima 'machine infra set <machine>'
rdc machine infra push <machine> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
set
Imposta la configurazione dell'infrastruttura per un macchinario (specifica per macchinario: IP, dominio, porte; condivisa: email certificato, token DNS CF)
rdc machine infra set <machine> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--public-ipv4 <ip> | Indirizzo IPv4 pubblico (per macchinario) | No | - |
--public-ipv6 <ip> | Indirizzo IPv6 pubblico (per macchinario) | No | - |
--base-domain <domain> | Dominio base per le applicazioni (per macchinario) | No | - |
--cert-email <email> | Email per le notifiche dei certificati TLS (condivisa tra i macchinari) | No | - |
--cf-dns-token <token> | Token API DNS Cloudflare per la challenge ACME DNS-01 (condiviso tra i macchinari) | No | - |
--tcp-ports <ports> | Porte TCP da inoltrare (separate da virgola, es. 25,143,465) | No | - |
--udp-ports <ports> | Porte UDP da inoltrare (separate da virgola, es. 53) | No | - |
show
Mostra la configurazione dell'infrastruttura per un macchinario
rdc machine infra show <machine>
3.8 provider
Gestisci i provider cloud per il provisioning automatizzato dei macchinari
add
Aggiungi un provider cloud
rdc machine provider add <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--provider <source> | Sorgente provider nota (es. linode/linode, hetznercloud/hcloud) | No | - |
--source <source> | Sorgente provider OpenTofu personalizzata (es. vultr/vultr) | No | - |
--token <token> | Token API per il provider cloud | Sì | - |
--region <region> | Regione predefinita per i nuovi macchinari | No | - |
--type <type> | Tipo/dimensione istanza predefinita | No | - |
--image <image> | Immagine SO predefinita | No | - |
--ssh-user <user> | Nome utente SSH per le nuove VM (predefinito: root) | No | - |
--resource <type> | Personalizzato: tipo di risorsa OpenTofu per la VM | No | - |
--label-attr <attr> | Personalizzato: nome dell'attributo per la label della VM | No | - |
--region-attr <attr> | Personalizzato: nome dell'attributo per la regione | No | - |
--size-attr <attr> | Personalizzato: nome dell'attributo per il tipo di istanza | No | - |
--image-attr <attr> | Personalizzato: nome dell'attributo per l'immagine SO | No | - |
--ipv4-output <attr> | Personalizzato: attributo di output per l'indirizzo IPv4 | No | - |
--ipv6-output <attr> | Personalizzato: attributo di output per l'indirizzo IPv6 | No | - |
--ssh-key-attr <attr> | Personalizzato: nome dell'attributo per le chiavi SSH | No | - |
--ssh-key-format <format> | Personalizzato: formato della chiave SSH (inline_list o resource_id) | No | - |
--ssh-key-resource <type> | Personalizzato: tipo di risorsa OpenTofu per le chiavi SSH | No | - |
list
Elenca i provider cloud configurati
rdc machine provider list
remove
Rimuovi una configurazione di provider cloud
rdc machine provider remove <name>
3.9 remove
Rimuovi un macchinario dalla configurazione corrente
rdc machine remove <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-y, --yes | Salta la richiesta di conferma | No | - |
--force | Rimuovi il macchinario anche se vi sono ancora repository posizionati su di esso, lasciando quei posizionamenti pendenti. | No | - |
3.10 scan-keys
Esegui la scansione delle chiavi host SSH per i macchinari nella configurazione corrente
rdc machine scan-keys [name]
3.11 setup
Provisioning di un macchinario remoto per i repository (installa renet, configura Docker, datastore BTRFS). Idempotente. Obbligatorio dopo 'config machine add' e prima di 'repo create'.
rdc machine setup <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--datastore-path <path> | Percorso del datastore sul macchinario remoto | No | /mnt/rediacc |
--datastore-size <size> | Dimensione del datastore (es. 95%, 100G) | No | 95% |
--debug | Abilita l'output di debug | No | - |
3.12 status
Mostra lo stato completo della macchina (infrastruttura, sistema, repository con nome/guid, container con repository/repository_guid/dominio/autoRoute, servizi con repository/repository_guid)
rdc machine status [name] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
--system | Includi solo le informazioni di sistema | No | - |
--repositories | Includi solo i repository | No | - |
--containers | Includi solo i container | No | - |
--services | Includi solo i servizi | No | - |
--network | Includi solo le interfacce di rete | No | - |
--block-devices | Includi solo i dispositivi a blocchi | No | - |
--licenses | Includi gli stati delle licenze dei repository | No | - |
--storage-health | Mostra la frammentazione BTRFS e i risparmi di reflink per ogni repository | No | - |
--datastores | Mostra i datastore collegati (mount, collegamento, utilizzo) | No | - |
--health-check | Modalita controllo salute: esce con codice 2 se ci sono container non sani | No | - |
--stability-check | Modalita controllo stabilita: esce con codice 2 se ci sono servizi in errore/riavvio | No | - |
--search <text> | Filtra i repository per nome | No | - |
--sync-certs | Scarica anche la cache dei certificati ACME dalla macchina dopo la query | No | - |
--strict | Esci con codice non zero (codice 2) se un container ha superato la soglia di deriva di integrità | No | - |
4. Gestione cluster
Esegue il provisioning e gestisce i cluster: insiemi denominati di pool di nodi (ceph, k8s-server, k8s-agent, hyperconverged) su una rete privata. I membri di un pool diventano macchinari a tutti gli effetti, quindi ogni comando -m funziona su di essi.
4.1 create
Dichiara ed esegui il provisioning di un cluster: macchine, pool Ceph e Kubernetes. Passa --provider e --pool per dichiararlo in un solo passaggio; un create senza opzioni esegue il provisioning di un cluster già dichiarato.
rdc cluster create <cluster> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--provider <provider> | Provider: una chiave cloudProviders, oppure 'kvm' | No | - |
--pool <spec...> | Specifica del pool name:role:count[:size] (role: ceph|k8s-server|k8s-agent|hyperconverged) | No | - |
--declare-only | Registra il cluster in configurazione senza eseguirne il provisioning | No | - |
--network-cidr <cidr> | CIDR della rete privata (es. 10.0.0.0/24) | No | - |
--network-primitive <primitive> | Primitiva di rete (es. vlan, vpc, network) | No | - |
--control-node <machine> | Macchinario esplicito per il nodo di controllo (predefinito: primo membro k8s-server) | No | - |
--net-name <name> | KVM: rete libvirt per questo cluster (es. renet12) | No | - |
--net-base <prefix> | KVM: prefisso di rete, i primi tre ottetti (es. 192.168.112) | No | - |
--net-offset <n> | KVM: offset aggiunto all'id di ogni VM nel derivarne l'indirizzo | No | - |
--control-id <n> | KVM: id della VM del nodo di controllo e registry (predefinito: 1) | No | - |
--docker-registry <endpoint> | KVM: endpoint del registry Docker dentro la VM per questo cluster | No | - |
--ssh-user <user> | Utente SSH per i membri sottoposti a provisioning | No | - |
--base-domain <domain> | Dominio base per il DNS pubblico del cluster (altrimenti ereditato da un macchinario dello stesso gruppo) | No | - |
--control-ds-size <size> | Dimensione del datastore di controllo di ancoraggio (predefinito 10G) | No | - |
--control-ds-backend <backend> | Backend del datastore di controllo di ancoraggio: local | ceph (predefinito: ceph se il cluster include ceph, altrimenti local) | No | - |
--control-ds-pool <pool> | Pool Ceph RBD per il datastore di controllo di ancoraggio (backend ceph) | No | - |
--debug | Abilita l'output di debug | No | - |
4.2 status
Elenca tutti i cluster, oppure mostra la configurazione completa di un cluster con --name.
rdc cluster status [cluster]
4.3 scale
Modifica il numero di membri di un pool (aggiunge/rimuove macchinari e fa entrare/uscire nodi). I pool k8s-agent vengono scalati sul posto; la crescita del pool ceph avviene direttamente tramite cephadm.
rdc cluster scale <cluster> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--pool <pool> | Nome del pool | Sì | - |
--count <n> | Numero di membri desiderato | Sì | - |
--debug | Abilita l'output di debug | No | - |
4.4 destroy
Smantella i membri sottoposti a provisioning e rimuove il cluster e i suoi macchinari dalla configurazione.
rdc cluster destroy <cluster> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--force | Salta la conferma e continua anche in caso di errori di smantellamento | No | - |
--debug | Abilita l'output di debug | No | - |
4.5 kubeconfig
Recupera il kubeconfig dal nodo di controllo del cluster via SSH e lo mette in cache localmente (0600) per kubectl.
rdc cluster kubeconfig <cluster>
4.6 fork
Clona un intero cluster, compresi i dati dei suoi repository, in un nuovo cluster: copy-on-write coordinato delle immagini del cluster e dei PV, seguito dalla riscrittura dell'identità dei nodi affinché il fork si avvii con nuovi indirizzi. Il cluster di origine continua a funzionare.
rdc cluster fork <cluster> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--tag <tag> | Tag del fork | Sì | - |
--to <dest-cluster> | Cluster di destinazione i cui nodi ospitano il fork (il suo nodo di controllo e gli agent; un cluster non può fare il fork sulle proprie macchine, poiché due k3s non possono condividere lo stesso network namespace host) | Sì | - |
--writes <disposition> | Modalità di scrittura del fork: local (overlay dm-COW effimero, impronta Ceph pari a zero) | ceph (clone durevole). Predefinito: local | No | - |
--up | Avvia i repository forkati e verifica la salute del cluster dopo l'avvio del fork | No | - |
--debug | Abilita l'output di debug | No | - |
4.7 migrate
Sposta un intero cluster, compresi i dati dei suoi repository, su un altro macchinario o datacenter con un breve cutover (pre-copia a caldo, poi arresto e riavvio sulla destinazione).
rdc cluster migrate <cluster> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--to <dest-cluster> | Destinazione | Sì | - |
--debug | Abilita l'output di debug | No | - |
4.8 join
Adotta un macchinario registrato esistente come nodo agent Kubernetes di un cluster, usando lo stesso token di adesione derivato dalla CA impiegato per l'ancoraggio e il rientro.
rdc cluster join <machine> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--cluster <name> | Cluster a cui aggiungere il macchinario | Sì | - |
--debug | Abilita l'output di debug | No | - |
4.9 evict
Esegue il drain del nodo, elimina il suo oggetto Node e cancella la sua appartenenza al cluster. Il cluster viene derivato dal macchinario; un macchinario che monta ancora un datastore viene rifiutato.
rdc cluster evict <machine> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--force | Salta il drain se il nodo è già offline | No | - |
--debug | Abilita l'output di debug | No | - |
4.10 rehearse
Prova un rilascio/aggiornamento: forka il cluster su una destinazione come istanza effimera e usa-e-getta (writes=local, ruolo senza segreti: rehearsal), la avvia, ne verifica la salute, quindi la scarta. Il cluster di origine non viene mai toccato.
rdc cluster rehearse <cluster> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--on <dest-cluster> | Cluster di destinazione su cui avviare la prova usa-e-getta | Sì | - |
--tag <tag> | Tag opzionale per il fork di prova (predefinito: basato su timestamp) | No | - |
--debug | Abilita l'output di debug | No | - |
4.11 snapshot
Snapshot puntuali dell'intero cluster. Un unico istante crash-consistent su ogni datastore basato su rbd di proprietà del cluster, ottenuto tramite il group snapshot di Ceph: niente si ferma e il cluster non se ne accorge. I datastore con backend locale non hanno una primitiva di gruppo a livello di blocco, quindi restano fuori dall'istante e vengono segnalati come tali. L'istante è crash-consistent, non application-consistent: se hai bisogno che una scrittura specifica sia inclusa nello snapshot, sincronizzala prima.
create
Esegue lo snapshot di ogni datastore basato su rbd nel cluster in UN SOLO istante. Niente viene fermato. Qualsiasi datastore con backend locale nel cluster viene elencato come escluso dall'istante: non fa parte dello snapshot. L'istante è crash-consistent, non application-consistent: se hai bisogno che una scrittura specifica sia inclusa nello snapshot, sincronizzala prima.
rdc cluster snapshot create <cluster> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--snapshot <label> | Etichetta dello snapshot (predefinito: un timestamp UTC) | No | - |
--debug | Abilita l'output di debug | No | - |
list
Elenca i group snapshot del cluster.
rdc cluster snapshot list <cluster> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
5. Server MCP
Espone la CLI come server Model Context Protocol (MCP) per l'integrazione con agenti AI. Il server racchiude i comandi CLI come strumenti MCP con input/output JSON strutturato. Sottocomando principale: serve (avvia il server MCP basato su stdio).
5.1 serve
Avvia il server MCP (trasporto stdio)
rdc mcp serve [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--config <name> | Nome della configurazione da usare per tutti i comandi | No | - |
--timeout <ms> | Timeout predefinito dei comandi in millisecondi | No | 120000 |
6. Ciclo di vita del repository
Distribuisci e gestisci repository cifrati sui macchinari. Sottocomandi principali: create, up (distribuisci), down (ferma), fork (clone CoW istantaneo), delete, push/pull (backup), sync (trasferimento file). Ciclo di vita: repo create → repo up → repo down. Consulta Concetti Chiave in rdc --help per architettura, routing e variabili d'ambiente.
6.1 up
Distribuisce o aggiorna un repository (mount, esegue Rediaccfile up che chiama renet compose). La macchina viene determinata dal posizionamento del riferimento. Le route proxy impiegano circa 3s per diventare attive dopo il deploy. Al termine stampa il pattern URL per i servizi esposti via HTTP (label rediacc.service_port). Il primo deploy e i fork vengono montati automaticamente. Il ripristino del checkpoint CRIU è rilevato automaticamente; usa --skip-checkpoint per forzare un avvio pulito. Usa --all --machine <m> per distribuire tutti i repository su una macchina.
rdc repo up [ref] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--no-start | Monta e prepara il repository senza eseguire i suoi passaggi up() (incorpora il comando ritirato 'repo mount'; apertura LUKS e, per i repo su cluster, generazione dei PV). | No | - |
--skip-checkpoint | Ignora il ripristino del checkpoint CRIU anche se i dati del checkpoint esistono (forza avvio pulito) | No | - |
--tls | Richiedi un certificato TLS dedicato per questo repo (i fork usano il certificato condiviso del macchinario per impostazione predefinita) | No | - |
--no-wait | Ritorna appena i container sono avviati; gli health check proseguono in background | No | - |
--all | Distribuisci tutti i repository ospitati su --machine (forma collettiva) | No | - |
-m, --machine <name> | Con --all: la macchina i cui repository sono interessati dall'operazione collettiva | No | - |
--include-forks | Monta e avvia anche i repository forked | No | - |
--parallel | Avvia i repository in modo concorrente | No | - |
--concurrency <n> | Numero massimo di repository concorrenti (predefinito: 3) | No | 3 |
-y, --yes | Salta la conferma per le operazioni in batch | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
--dry-run | Mostra cosa verrebbe fatto senza apportare modifiche | No | - |
6.2 down
Ferma i container Docker del repository (esegue Rediaccfile down tramite renet compose). La macchina viene determinata dal posizionamento del riferimento. NON smonta il volume cifrato: il repo rimane montato e può essere riavviato con 'repo up'. Usa --unmount per chiudere anche il contenitore LUKS dopo l'arresto (incorpora il comando ritirato 'repo unmount'). Usa --checkpoint per salvare lo stato del processo CRIU prima dell'arresto (il successivo 'repo up' lo ripristina automaticamente). Usa --all --machine <m> per fermare tutti i repository su una macchina.
rdc repo down [ref] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--unmount | Smonta (chiude il contenitore LUKS) anche dopo l'arresto. Obbligatorio prima di 'repo resize' o per proteggere completamente il volume | No | - |
--checkpoint | Crea un checkpoint CRIU prima dell'arresto (salva lo stato in memoria dei processi per un ripristino successivo tramite 'repo up') | No | - |
--all | Ferma tutti i repository ospitati su --machine (forma collettiva) | No | - |
-m, --machine <name> | Con --all: la macchina i cui repository sono interessati dall'operazione collettiva | No | - |
--parallel | Avvia i repository in modo concorrente | No | - |
--concurrency <n> | Numero massimo di repository concorrenti (predefinito: 3) | No | 3 |
-y, --yes | Salta la conferma per le operazioni in batch | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
--dry-run | Mostra cosa verrebbe fatto senza apportare modifiche | No | - |
6.3 status
Ottieni lo stato del repository (stato del mount, daemon Docker in esecuzione, numero di contenitori, utilizzo del disco)
rdc repo status <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.4 cat
Legge una finestra delimitata di un file all'interno di un repository e la scrive su stdout (delimitato lato server; i messaggi diagnostici vanno su stderr)
rdc repo cat <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--remote-file <path> | Percorso del file da leggere, relativo alla root di mount del repository | Sì | - |
--max-bytes <n> | Numero massimo di byte da leggere e stampare (predefinito 1 MiB, limite massimo 50 MiB) | No | - |
--offset <n> | Offset in byte da cui iniziare la lettura | No | - |
--head <lines> | Stampa solo le prime N righe (non combinabile con l'intervallo di byte) | No | - |
--tail <lines> | Stampa solo le ultime N righe (non combinabile con l'intervallo di byte) | No | - |
--stat | Stampa solo dimensione, tipo e data di modifica; non legge contenuto | No | - |
--force-binary | Consenti la lettura di contenuti binari (con NUL) | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.5 diff
Diff a livello di file in stile git fra due repository forkati con copy-on-write. Riporta i file aggiunti, modificati, eliminati e rinominati. Confronta il repository indicato da --name (lato target/nuovo) con il suo padre, risolto dalla configurazione locale, oppure con un repository --base esplicito (lato base/vecchio). Solo metadati e indipendente dalla dimensione: confronta le immagini LUKS cifrate a livello di blocco senza decifrarle, quindi un repo da 1 GB e uno da 100 GB vengono confrontati negli stessi millisecondi.
rdc repo diff <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--base <ref> | Repository con cui confrontare (lato base/vecchio); predefinito il padre di --name | No | - |
--name-only | Stampa solo i percorsi dei file modificati, uno per riga (senza lettere di stato) | No | - |
--stat | Mostra la magnitudine del cambiamento per file (delta in byte e blocchi) e i totali | No | - |
--content [path] | Mostra un diff testuale unificato per un singolo file (richiede un percorso file) | No | - |
--fast | Affidati al filtro a blocchi; salta la conferma via hash del contenuto (può sovra-segnalare Modificato) | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.6 list
Elenca i repository su un macchinario
rdc repo list [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | No | - |
--datastore <name> | Elenca i repository in questo datastore (risolto sulla macchina che attualmente lo detiene) | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.7 create
Crea un nuovo repository. Indica la sua destinazione una volta sola: una macchina o un datastore.
rdc repo create <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | No | - |
--datastore <name> | Datastore con nome che ospita il repo (tiering docker, oppure la forma cluster) | No | - |
--size <size> | Dimensione del repository (es. 10G, 100G, 1T) | No | - |
--no-docker | Non avviare il daemon Docker dopo la creazione | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.8 delete
Elimina un repository e i suoi dati. La voce di configurazione viene conservata; usa --archive-config per spostare le credenziali in deletedRepositories per un eventuale recupero tramite 'repo admin archive restore'. Accetta un <ref> posizionale; un nome semplice si risolve nella linea grand e viene rifiutato quando più repo condividono lo stesso nome base, quindi passa nome:tag per indicare un fork.
rdc repo delete <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--archive-config | Sposta la voce di configurazione in deletedRepositories per un recupero successivo | No | - |
-y, --yes | Salta la richiesta di conferma | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
--dry-run | Mostra cosa verrebbe fatto senza apportare modifiche | No | - |
6.9 commit
Congela lo stato corrente di un fork di lavoro montato in un nuovo commit immutabile (in stile git). Il commit registra il proprio messaggio, autore, timestamp e parent all'interno del volume (in modo da viaggiare con il push) e viene contrassegnato come di sola lettura: ne rifiuta il montaggio. Il fork di lavoro prosegue invariato, proprio come git lascia intatto il working tree. Esegui il checkout di un commit con 'rdc repo checkout' per ottenerne una copia scrivibile.
rdc repo commit <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--message <msg> | Messaggio del commit | Sì | - |
--author <author> | Autore del commit | No | - |
--debug | Abilita l'output di debug | No | - |
6.10 branch
Crea un riferimento branch con nome che punta al commit corrente del fork di lavoro (il suo tip). I riferimenti branch risiedono nella configurazione della CLI (machine = object store, config = ref store).
rdc repo branch <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--branch <branch> | Nome del nuovo ramo | Sì | - |
6.11 checkout
Clona via reflink un commit immutabile (o il tip di un branch) in un nuovo fork di lavoro scrivibile e fa puntare HEAD a esso. Quasi istantaneo e a tempo costante (reflink BTRFS).
rdc repo checkout <commit-or-branch-ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--tag <name> | Nome per il nuovo fork di lavoro scrivibile | Sì | - |
--from <workingFork> | Risolvi l'argomento posizionale <commit-or-branch-ref> come nome di ramo su questo working fork | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.12 log
Stampa la cronologia dei commit raggiungibile dal commit corrente di un fork di lavoro (o da un riferimento a un commit), percorrendo la catena dei parent registrata da 'rdc repo commit'. Legge il mirror esterno al volume, quindi nessun commit viene sbloccato.
rdc repo log <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
6.13 merge
Esegue il merge di un commit o fork di origine in un fork di lavoro di destinazione. La destinazione attiva non viene mai modificata sul posto: il risultato viene costruito in un clone reflink e sostituito atomicamente. Una destinazione montata o in esecuzione viene rifiutata a meno che non si usi --force, che la mette prima in quiescenza in modo pulito. Senza --resolve si tratta di un take-theirs sull'intera immagine (la destinazione diventa l'origine); con --resolve ours|theirs si tratta di un merge a tre vie per singolo file rispetto all'antenato comune, prendendo le modifiche uniche di ciascun lato e risolvendo i conflitti bilaterali in base al flag.
rdc repo merge <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--from <source> | Commit o fork di origine da cui eseguire il merge | Sì | - |
--force | Mette prima in quiescenza una destinazione montata/in esecuzione, poi esegue il merge (non modifica mai un mount attivo) | No | - |
| `—resolve <ours | theirs>` | Risoluzione dei conflitti per file in un merge a tre vie: 'ours' mantiene la versione della destinazione, 'theirs' prende quella dell'origine. Ometti per un fast-forward dell'intera immagine (take-theirs). | No |
--base <guid> | GUID del commit antenato comune per un merge a tre vie (usato con --resolve). Predefinito il padre del commit di origine o il commit attuale della destinazione. | No | - |
--debug | Abilita l'output di debug | No | - |
6.14 gc
Elimina gli oggetti commit immutabili su una macchina che nessun ramo o HEAD raggiunge (GC per raggiungibilita). La macchina e l'archivio degli oggetti; la configurazione della CLI e l'archivio dei ref. Dry-run per impostazione predefinita: usa --apply per eliminare. Non tocca mai un oggetto montato o un fork di lavoro.
rdc repo gc [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
--apply | Elimina effettivamente i commit non raggiungibili (per impostazione predefinita è un'anteprima dry-run) | No | - |
--debug | Abilita l'output di debug | No | - |
6.15 fork
Crea un fork CoW (Copy-on-Write) di un repository. IL FORK È QUASI ISTANTANEO E A TEMPO COSTANTE indipendentemente dalla dimensione del repo: il reflink BTRFS clona l'immagine sottostante, quindi un repo da 100 GB e uno da 1 GB vengono forked nello stesso tempo (~secondi). Il fork ottiene un NUOVO GUID, networkId, intervallo IP e dominio di auto-route ({service}-fork-{tag}.{repo}.{machine}.{baseDomain}) ed è una copia completamente indipendente. Il fork online è supportato: il genitore può rimanere in esecuzione. Il fork eredita automaticamente le credenziali di cifratura del genitore. Usa --checkpoint per catturare lo stato del processo CRIU prima del fork: il fork si ripristina automaticamente al primo 'repo up' (stato in memoria preservato). FORK SU MACCHINARIO DIVERSO: fai prima il fork in locale, poi trasferisci: (1) rdc repo fork <parent-ref> --tag <nome>, (2) rdc repo push <fork-ref> --to <macchina-destinazione>, (3) rdc backup restore <fork-ref> --as <nome-fork> -m <macchina-destinazione> --up. AVVISO: NON usare "repo push" da solo per il fork: crea una copia grezza con lo STESSO GUID (non un fork indipendente). Esegui sempre prima il fork per ottenere una nuova identità. Le auto-route usano il nome del repo, quindi ogni fork ottiene un dominio univoco automaticamente.
rdc repo fork <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--tag <name> | Tag per il fork (crea nome:tag) | Sì | - |
--checkpoint | Crea un checkpoint CRIU sulla sorgente prima del fork (cattura lo stato in memoria dei processi per il ripristino sul fork) | No | - |
--immutable | Contrassegna il fork come di sola lettura: rifiuta il mount e mantiene la sua immagine stabile a livello di byte per sempre (un commit/una base congelato per il delta push tra macchine) | No | - |
--up | Monta e avvia i servizi dopo il fork (fork + mount + up in un unico comando) | No | - |
--no-wait | Con --up: ritorna appena i container sono avviati; gli healthcheck proseguono in background (ideale per fork usa e getta) | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.16 replicate
Crea N repliche di lettura di un repository in pochi secondi, indipendentemente dalla dimensione del database. Esegue UN SOLO snapshot del datastore, poi effettua N fork-attach a tempo costante (copy-on-write, scritture locali usa-e-getta) distribuiti sui nodi del cluster, e applica un overlay generato: un PersistentVolume fissato per ogni replica, uno StatefulSet e due Service ({repo}-rw verso il primario, {repo}-ro verso le repliche). Le repliche sono copie PUNTUALI (point-in-time): nessuno stream di replica, nessuna coerenza read-your-writes; ogni replica esegue un passaggio di crash-recovery prima di servire traffico. Aggiornale con 'repo replicate refresh'. I set di repliche sono stato gestito: consulta 'repo replicate status' e rimuovili con 'repo replicate remove'.
status
Mostra i set di repliche gestiti: repliche, nodi ospitanti, datastore forkati, snapshot e timestamp di aggiornamento.
rdc repo replicate status <ref>
remove
Rimuove un set di repliche: elimina i suoi oggetti k8s generati (con ambito limitato alle label), scarta i suoi datastore forkati, elimina il suo snapshot e dimentica lo stato. I passaggi infrastrutturali sono best-effort, così la rimozione converge anche su un cluster parzialmente già smantellato.
rdc repo replicate remove <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
refresh
Porta ogni replica su un nuovo snapshot puntuale, UNA alla volta: riavvia il pod della replica, scarta e riesegue il fork del suo datastore sullo stesso percorso, e lascia che la readiness la riammetta. Le altre N-1 repliche continuano a servire traffico per tutta la durata dell'operazione.
rdc repo replicate refresh <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
6.17 canary
Esegue una NUOVA immagine accanto a quella stabile e divide il traffico live tra le due in base a una percentuale (gradino 2 della scala di rilascio). Crea un Deployment + Service canary sugli STESSI dati live (nessun fork: gli utenti del canary su dati forkati leggerebbero dati non aggiornati e scriverebbero in una copia destinata a essere scartata) e indica al proxy Rediacc di instradare verso di esso la percentuale indicata del traffico dell'hostname stabile. Un peso pari a 0 mantiene il canary dark; un peso di 100 corrisponde al passaggio blue/green completo. Prima di ogni modifica al canary viene eseguito automaticamente uno snapshot di gruppo dei datastore del cluster (gradino 0 della scala di rilascio), come undo universale. La compatibilità dello schema tra le due versioni (expand-contract) è responsabilità dell'applicazione. Per i rilasci che ROMPONO lo schema, usa invece il blue/green: fai il fork del repository (istantaneo, dati inclusi), punta qui il Service del fork con peso 100 e, per tornare indietro, riavvia il genitore rimasto intatto; le scritture effettuate dopo il passaggio esistono solo nella nuova copia, quindi la finestra di rollback è una decisione di policy.
status
Mostra i set di canary gestiti: peso, immagini, Service stabile e l'ultimo snapshot di release-undo.
rdc repo canary status <ref>
weight
Modifica la percentuale di traffico instradata verso un canary. Esegue prima un nuovo snapshot di gruppo di release-undo, poi riapplica l'overlay; il proxy recepisce la nuova suddivisione al successivo ciclo di aggiornamento. Un peso di 100 invia tutto il traffico alla nuova versione (il passaggio blue/green).
rdc repo canary weight <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--weight <percent> | Percentuale di traffico instradata verso il canary (intero 0-100; 0 = dark, 100 = passaggio completo) | Sì | - |
--debug | Abilita l'output di debug | No | - |
remove
Rimuove il Deployment e il Service di un canary (con ambito limitato alle label); il Service stabile torna a servire il 100% del traffico. Gli snapshot di release-undo vengono conservati; eliminali con i comandi snapshot del datastore.
rdc repo canary remove <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
create
Esegue una NUOVA immagine accanto a quella stabile e le invia una percentuale del traffico live. Il canary condivide i dati live del repository (nessun fork), quindi la compatibilità dello schema tra le due versioni è responsabilità dell'applicazione. Come undo, viene prima eseguito un group snapshot dei datastore del cluster.
rdc repo canary create <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--image <image> | Nuova immagine eseguita dal Deployment canary (sugli stessi dati live condivisi) | Sì | - |
--port <port> | Porta su cui l'app è in ascolto (deve corrispondere al Service stabile) | Sì | - |
--weight <percent> | Percentuale di traffico instradata verso il canary (intero 0-100; 0 = dark, 100 = passaggio completo) | Sì | - |
--service <name> | Service stabile con cui dividere il traffico (predefinito: il nome del repository) | No | - |
--replicas <n> | Numero di repliche del Deployment canary (predefinito: 1) | No | - |
--debug | Abilita l'output di debug | No | - |
6.18 resize
Ridimensiona un repository offline (supporta sia la crescita che la riduzione). Il repo deve essere smontato prima ('repo down --unmount'). Per una crescita senza downtime senza fermare i servizi, usa invece 'repo expand'.
rdc repo resize <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--size <size> | Nuova dimensione del repository (es. 10G, 100G, 1T) | Sì | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.19 expand
Espande un repository montato online (zero downtime, solo crescita). Aumenta il contenitore LUKS e il filesystem mentre i contenitori continuano a girare. Non può ridurre: usa 'repo resize' per questo (richiede lo smontaggio).
rdc repo expand <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--size <size> | Nuova dimensione del repository (es. 10G, 100G, 1T) | Sì | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.20 trim
Recupera spazio del pool del datastore dai repository montati (online, senza interruzioni). I blocchi eliminati nei repository tornano al pool tramite fstrim. Senza un riferimento, vengono trimmati tutti i repository montati su -m più il datastore stesso. fstrim viene saltato per i repository con un backup attivo; la pulizia --docker viene comunque eseguita
rdc repo trim [ref] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--docker | Liberare lo spazio Docker (container fermi, immagini dangling, cache di build); viene eseguito anche durante uno snapshot di backup attivo | No | - |
--docker-volumes | Eliminare anche i volumi Docker inutilizzati | No | - |
--report-only | Mostrare lo stato dei discard e la stima recuperabile senza trimmare | No | - |
-m, --machine <name> | Nome del macchinario di destinazione | No | - |
--debug | Abilita l'output di debug | No | - |
6.21 policy
Gestisce la politica di dimensione automatica applicata dal manutentore dello storage della macchina: amplia online la quota di un repository quando si riempie (mai oltre max-quota, mai con il pool scarso) ed esegue trim pianificati. Non esiste riduzione automatica; per quella usare 'repo resize'. Senza un riferimento, viene interessata la politica predefinita a livello di macchina su -m
set
Imposta i campi della politica di dimensione. Cambiano solo i flag passati; gli altri campi salvati mantengono i valori. Abilitare l'auto-crescita richiede --max-quota: il tetto è il consenso esplicito al sovra-provisioning del pool
rdc repo policy set [ref] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--auto-grow <bool> | Abilitare la crescita automatica online della quota (true/false) | No | - |
--max-quota <size> | Tetto dell'auto-crescita (es. 200G); obbligatorio per l'auto-crescita | No | - |
--grow-threshold <percent> | % di uso del filesystem che attiva una crescita (predefinito 85) | No | - |
--grow-step <step> | Crescita per passo: assoluta (10G) o percentuale della quota (20%) | No | - |
--auto-trim <bool> | Abilitare il trim pianificato (true/false) | No | - |
--trim-interval <hours> | Ore minime tra trim automatici (predefinito 24) | No | - |
-m, --machine <name> | Nome del macchinario di destinazione | No | - |
--debug | Abilita l'output di debug | No | - |
get
Mostra il predefinito macchina salvato, l'override del repository (con un riferimento) e la politica effettiva unita su cui agisce il manutentore
rdc repo policy get [ref] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | No | - |
--debug | Abilita l'output di debug | No | - |
6.22 push
Invia un repository a una destinazione remota (macchinario o storage). Il tipo di destinazione viene rilevato automaticamente dalla configurazione. Per il trasferimento tra macchinari, l'immagine cifrata del repo viene copiata con lo STESSO GUID: si tratta di un backup/migrazione, non di un fork. Per creare un fork indipendente, usa prima 'repo fork', poi push. Una copia inviata con push diventa un ARTEFATTO di backup: avviala sulla destinazione con 'backup restore <ref> --as <nome> -m <destinazione> --up'
rdc repo push <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--to <remote> | Macchinario o storage di destinazione (rilevato automaticamente dalla configurazione) | No | - |
--to-machine <machine> | — | No | - |
--provision <provider> | Provisioning automatico del macchinario di destinazione tramite il provider cloud se non esiste | No | - |
--checkpoint | Crea un checkpoint CRIU prima del backup (cattura lo stato in memoria dei processi per la migrazione live) | No | - |
--force | Forza la sovrascrittura del backup esistente | No | - |
-w, --watch | Osserva le modifiche | No | - |
--bwlimit <limit> | Limite di banda per il trasferimento rsync (es. "6M", "10M") | No | - |
--delta-base <guid> | GUID di base immutabile presente byte per byte identico su entrambi i macchinari; trasferisci solo i blocchi modificati (destinazione macchinario). Ometti per la base automatica senza intervento | No | - |
--strategy <strategy> | Strategia di delta a blocchi quando si usa una base delta: auto, physical o shared | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.23 pull
Scarica un repository da una sorgente remota (macchinario o storage). Ometti il nome per scaricare tutti i repo. Il tipo di sorgente viene rilevato automaticamente dalla configurazione. Usa --up per distribuire dopo il pull.
rdc repo pull <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--from <remote> | Nome del macchinario o storage di origine (rilevato automaticamente dalla configurazione) | No | - |
--from-machine <machine> | — | No | - |
--force | Forza la sovrascrittura del repository esistente | No | - |
--up | Dopo il pull, monta e distribuisce il repository su questo macchinario | No | - |
-w, --watch | Osserva le modifiche | No | - |
--bwlimit <limit> | Limite di banda per il trasferimento rsync (es. "6M", "10M") | No | - |
--delta-base <guid> | GUID di base immutabile presente byte per byte identico su entrambi i macchinari; ricevi solo i blocchi modificati (sorgente macchinario) | No | - |
--strategy <strategy> | Strategia di delta a blocchi quando si usa una base delta: auto, physical o shared | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.24 migrate
Migra a caldo un repository da una macchina a un'altra con tempi di inattività minimi. rsync in due fasi: trasferimento massivo durante l'esecuzione, poi una breve pausa per la sincronizzazione delta. Sposta l'intero repository (l'instradamento viene reindirizzato alla nuova destinazione) e, una volta riuscito lo spostamento, elimina le immagini sorgente (usa --keep-source per mantenerle). Supporta il checkpoint CRIU per la migrazione dello stato di memoria dei processi e il provisioning automatico delle macchine di destinazione
rdc repo migrate <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--to <place> | Macchina o cluster di destinazione | Sì | - |
--provision <provider> | Provisioning automatico della destinazione tramite il provider cloud (es. hetzner, linode) | No | - |
--bwlimit <limit> | Limite di banda per il trasferimento rsync (es. 10M) | No | - |
--checkpoint | Migrazione live CRIU: cattura e ripristina lo stato in memoria dei processi | No | - |
--delta-base <guid> | GUID di base immutabile per il delta del cutover (avanzato; predefinito alla base della Fase 1) | No | - |
--strategy <strategy> | Strategia di delta a blocchi per il cutover: auto, physical o shared | No | - |
--skip-dns | Ignora il cambio dei record DNS dopo la migrazione | No | - |
--keep-source | Mantieni le immagini sorgente dopo uno spostamento riuscito (per impostazione predefinita vengono eliminate; le copie residue non sono indirizzabili da alcun record di configurazione e reconcile le segnala come orfane) | No | - |
--debug | Abilita l'output di debug | No | - |
6.25 sync
Sincronizza repository e file (push/pull in blocco, trasferimento file)
upload
Carica file in un repository tramite rsync su SSH (trasferimento delta). Usa --mirror per eliminare i file remoti in eccesso, --dry-run per l'anteprima, --exclude per escludere pattern.
rdc repo sync upload <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--local <paths...> | Uno o più percorsi locali di file o directory (predefinito: directory corrente) | No | - |
--remote <path> | Percorso della sottodirectory remota nel repository | No | - |
--remote-file <path> | Percorso del singolo file remoto (relativo alla radice del repo) in cui caricare. Incompatibile con --remote. | No | - |
--mirror | Modalità mirror -- elimina i file remoti non presenti in locale | No | - |
--verify | Verifica i file tramite checksum dopo la sincronizzazione | No | - |
--confirm | Visualizza l'anteprima delle modifiche e chiedi conferma prima di sincronizzare | No | - |
--exclude <patterns...> | Pattern da escludere dalla sincronizzazione | No | - |
--dry-run | Mostra cosa verrebbe fatto senza apportare modifiche | No | - |
download
Scarica file da un repository tramite rsync su SSH (trasferimento delta). Usa --mirror per eliminare i file locali in eccesso, --dry-run per l'anteprima, --exclude per escludere pattern.
rdc repo sync download <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--local <path> | Percorso locale della directory (predefinito: directory corrente) | No | - |
--remote <path> | Percorso della sottodirectory remota nel repository | No | - |
--remote-file <path> | Percorso del file remoto nel repository (alternativa a --remote per trasferimenti di singoli file) | No | - |
--mirror | Modalità mirror -- elimina i file locali non presenti in remoto | No | - |
--verify | Verifica i file tramite checksum dopo la sincronizzazione | No | - |
--confirm | Visualizza l'anteprima delle modifiche e chiedi conferma prima di sincronizzare | No | - |
--exclude <patterns...> | Pattern da escludere dalla sincronizzazione | No | - |
--dry-run | Mostra cosa verrebbe fatto senza apportare modifiche | No | - |
status
Confronto in dry-run dei file locali e remoti (mostra cosa verrebbe trasferito senza eseguire il trasferimento)
rdc repo sync status <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--local <path> | Percorso locale della directory (predefinito: directory corrente) | No | - |
--remote <path> | Percorso della sottodirectory remota nel repository | No | - |
--remote-file <path> | Percorso del file remoto nel repository (alternativa a --remote per trasferimenti di singoli file) | No | - |
6.26 tunnel
Crea un tunnel SSH di port-forward verso la porta di un contenitore su un macchinario remoto. Il contenitore e la porta vengono rilevati automaticamente se non ambigui. Il tunnel rimane aperto finché non si preme Ctrl+C.
rdc repo tunnel <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-c, --container <name> | Nome del contenitore (rilevato automaticamente se ne è in esecuzione solo uno) | No | - |
--port <port> | Porta del contenitore remoto da inoltrare | No | - |
--local <port> | Porta locale (predefinita uguale alla porta remota) | No | - |
--url-only | Stampa solo l'URL locale non appena il tunnel è pronto (leggibile da script) | No | - |
6.27 secret
Gestisci i segreti per repo iniettati al momento del deploy. Solo in scrittura: get restituisce solo il digest (mai il testo in chiaro), set/unset richiedono la corrispondenza del digest --current o --rotate-secret. Due modalità di consegna: env (REDIACC_SECRET_<KEY>) e file (tmpfs in /var/run/rediacc/secrets/<networkId>/<KEY> tramite compose `secrets:`). I segreti non entrano mai nell'immagine LUKS cifrata; i fork non li ereditano.
get
Mostra il digest SHA-256 di un segreto. Il valore in chiaro non viene mai restituito by design (solo scrittura). Usa --current su un successivo set/unset per verificare un valore già noto, oppure ruota tramite `set --rotate-secret`.
rdc repo secret get <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--key <KEY> | Chiave del segreto in UPPER_SNAKE_CASE (max 64 caratteri). Verrà esposta come REDIACC_SECRET_<KEY> in modalità env o come /run/secrets/<key> nei contenitori in modalità file. | Sì | - |
list
Elenca le chiavi e le modalità dei segreti (mai i valori, mai i digest).
rdc repo secret list <ref>
set
Imposta o sovrascrive un segreto. I fork non ereditano i segreti: impostali esplicitamente sul fork. In contesto agente, richiede la corrispondenza del digest --current (stile passwd).
rdc repo secret set <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--key <KEY> | Chiave del segreto in UPPER_SNAKE_CASE (max 64 caratteri). Verrà esposta come REDIACC_SECRET_<KEY> in modalità env o come /run/secrets/<key> nei contenitori in modalità file. | Sì | - |
--value <value> | Valore del segreto. Passa `-` per leggere da stdin (evita l'esposizione nella cronologia della shell). | Sì | - |
--mode <mode> | Modalità di consegna: 'env' (visibile nell'env del contenitore, docker inspect) o 'file' (file tmpfs, mai nell'env). Predefinito: file. | No | file |
--current <value> | Valore in chiaro precedente (precondizione stile passwd). Obbligatorio per sovrascrittura/rimozione; mutuamente esclusivo con --rotate-secret. | No | - |
--rotate-secret | Conferma la rotazione; ignora la precondizione --current (registrata come rotazione). Da usare quando si ruota intenzionalmente senza verificare il valore precedente. | No | - |
unset
Elimina un segreto. In contesto agente, richiede la corrispondenza del digest --current.
rdc repo secret unset <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--key <KEY> | Chiave del segreto in UPPER_SNAKE_CASE (max 64 caratteri). Verrà esposta come REDIACC_SECRET_<KEY> in modalità env o come /run/secrets/<key> nei contenitori in modalità file. | Sì | - |
--current <value> | Valore in chiaro precedente (precondizione stile passwd). Obbligatorio per sovrascrittura/rimozione; mutuamente esclusivo con --rotate-secret. | No | - |
--rotate-secret | Conferma la rotazione; ignora la precondizione --current (registrata come rotazione). Da usare quando si ruota intenzionalmente senza verificare il valore precedente. | No | - |
6.28 admin
Comandi di amministrazione e manutenzione dei repository.
archive
Gestione dei record dei repository archiviati.
Elenca le credenziali dei repository archiviati
rdc repo admin archive list
Elimina definitivamente tutte le credenziali archiviate
rdc repo admin archive purge [name] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-y, --yes | Salta la richiesta di conferma | No | - |
Ripristina una credenziale di repository archiviata
rdc repo admin archive restore <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--new-name <name> | Nuovo nome della risorsa | No | - |
validate
Verifica l'integrità del repository (contenitore LUKS, coerenza del filesystem, configurazione). Usalo dopo spegnimenti imprevisti o per verificare l'integrità di un backup.
rdc repo admin validate <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
fsck
Convalida i ref della configurazione della CLI (rami, HEAD) rispetto agli oggetti effettivamente presenti su una macchina. Segnala i ref pendenti (un ref che punta a un oggetto mancante) e i commit orfani (un commit immutabile che nessun ref raggiunge). Sola lettura.
rdc repo admin fsck [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
ownership
Modifica l'UID di proprietà della directory del repository sul volume montato (predefinito: 7111). Usalo quando i contenitori necessitano di un UID specifico per accedere ai file del repo.
rdc repo admin ownership <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--uid <uid> | UID del proprietario (predefinito: 7111) | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
autostart
Gestisci l'avvio automatico del repository al boot
Abilita l'avvio automatico per un repository (ometti il nome per abilitare tutti)
rdc repo admin autostart enable [ref] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
Disabilita l'avvio automatico per un repository (ometti il nome per disabilitare tutti)
rdc repo admin autostart disable [ref] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
Elenca i repository con avvio automatico abilitato
rdc repo admin autostart list [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
template
Gestisci e applica template di distribuzione (scrive docker-compose.yml, Rediaccfile e file aggiuntivi). Il Rediaccfile deve usare 'renet compose' (non 'docker compose'). Le policy di restart sono sicure (gestite automaticamente dal watchdog di renet). Renet inietta automaticamente network_mode:host, le capability CRIU e le label rediacc. Le impostazioni pericolose (privileged, pid:host) sono bloccate. Usa 'list' per vedere i template integrati disponibili, 'apply' per distribuirne uno su un repository.
Elenca tutti i template di distribuzione incorporati forniti con la CLI
rdc repo admin template list
Applica un template a un repository. Usa il nome di un template integrato (es. app-postgres) o --file per un template JSON personalizzato. Ciclo di vita del Rediaccfile: up() avvia i contenitori (scarica immagini, genera configurazioni qui), down() li ferma. Rediaccfile minimale: up() { renet compose -- pull; renet compose -- up -d; } down() { renet compose -- down; }. IMPORTANTE: il Rediaccfile DEVE usare 'renet compose': 'docker compose' viene rifiutato. VARIABILI D'AMBIENTE: due livelli: (a) shell Rediaccfile: ${SVCNAME_IP} (es. APP_IP), ${REDIACC_WORKING_DIR}, ${REDIACC_NETWORK_ID}. (b) Nei contenitori: renet inietta automaticamente le variabili d'ambiente SERVICE_IP e REDIACC_NETWORK_ID. La riscrittura bind eBPF gestisce l'isolamento IP in modo trasparente, quindi le app possono fare bind su 0.0.0.0 e il kernel riscrive sull'IP loopback corretto. Gli health check possono usare localhost. network_mode:host viene iniettato e ports: vengono ignorati. STORAGE: sia i bind mount ${REDIACC_WORKING_DIR}/... che i volumi Docker con nome sono sicuri: il data-root Docker è all'interno del mount LUKS cifrato. POLICY DI RESTART: le policy di restart sono sicure: renet le rimuove automaticamente per compatibilità CRIU e il watchdog gestisce il recupero. Compose: NON aggiungere network_mode o label rediacc.* (renet le inietta). Multi-progetto: inserisci ogni sotto-progetto nella propria sottodirectory con il proprio Rediaccfile: renet li rileva automaticamente e li esegue in ordine. Routing HTTPS: (A) Auto-route (compatibile con i fork, consigliato): NON aggiungere traefik.enable. Renet genera automaticamente https://{serviceName}.{repoName}.{machineName}.{baseDomain}. Aggiungi la label rediacc.service_port=<porta> per porte diverse da 80. Ogni fork ottiene un dominio univoco. (B) Label Traefik (dominio personalizzato, NON compatibile con i fork): traefik.enable=true, traefik.http.routers.<n>.rule=Host(`dominio`), traefik.http.routers.<n>.entrypoints=websecure,websecure-v6, traefik.http.routers.<n>.tls.certresolver=letsencrypt, traefik.http.services.<n>.loadbalancer.server.port=<porta>. Per TCP/UDP: rediacc.tcp_ports=3306 / rediacc.udp_ports=53
rdc repo admin template apply <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--template <name> | Template da applicare | Sì | - |
--file <path> | Percorso del file JSON del template personalizzato ({"version":"2","files":{"Rediaccfile":"...","docker-compose.yml":"..."}}): sovrascrive il nome del template integrato | No | - |
--grand <name> | Repository delle credenziali genitore (risolve automaticamente il nome in GUID). Solo per repo che condividono segreti con un genitore. | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.29 promote
Sostituisce i dati del repo grand con i dati di un fork. Il grand conserva la propria identità (GUID, networkId, domini, autostart, catena di backup) ma acquisisce i dati aggiornati del fork. I vecchi dati di produzione vengono conservati come fork di backup. Usalo per: testare un aggiornamento sul fork, verificarlo, poi eseguire il takeover in produzione.
rdc repo promote <fork-ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-y, --yes | Salta la richiesta di conferma | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
6.30 logs
Mostra i log applicativi dei container di un repository. I repository docker leggono dal daemon Docker del repository stesso; i repository kubernetes leggono i log dei pod nel namespace del repository. Se il repository esegue più di un container, indica quello desiderato con --container.
rdc repo logs <ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-c, --container <name> | Container da leggere (necessario solo se il repository ne esegue più di uno) | No | - |
-f, --follow | Continua a trasmettere nuove righe fino all'interruzione | No | - |
--lines <n> | Numero di righe di cronologia da mostrare (predefinito: 100) | No | 100 |
--timestamps | Antepone a ogni riga il proprio timestamp | No | - |
--debug | Abilita l'output di debug | No | - |
6.31 exec
Esegue un comando all'interno di un container del repository. Il codice di uscita del comando viene propagato direttamente, quindi funziona in script e condizionali. I repository docker lo eseguono tramite il daemon Docker del repository; i repository kubernetes lo eseguono nel namespace del repository.
rdc repo exec <ref> <cmd...> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-c, --container <name> | Container in cui eseguire (necessario solo se il repository ne esegue più di uno) | No | - |
-i, --interactive | Alloca un terminale (per un comando che se lo aspetta) | No | - |
-u, --user <user> | Utente con cui eseguire il comando | No | - |
--debug | Abilita l'output di debug | No | - |
7. Job in background
Gestisce i job in background su una macchina: elencali, controlla lo stato, riproduci o segui i log degli eventi, annullane uno o elimina (garbage collection) quelli terminati. Un job in background viene eseguito sotto systemd sulla macchina, quindi sopravvive a una disconnessione e può essere riagganciato in seguito.
7.1 list
Elenca i job in background su una macchina, dal più recente
rdc job list [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
7.2 status
Mostra lo stato di un job in background
rdc job status <job-id> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
7.3 logs
Riproduce o segue il log degli eventi di un job in background
rdc job logs <job-id> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
-f, --follow | Trasmette in streaming finché il job non termina | No | - |
--since-line <n> | Riprende dopo questo numero di righe (il conteggio già ricevuto) | No | - |
--debug | Abilita l'output di debug | No | - |
7.4 cancel
Annulla un job in background in esecuzione
rdc job cancel <job-id> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
-y, --yes | Salta la richiesta di conferma | No | - |
7.5 gc
Rimuove i job terminati e i relativi log
rdc job gc [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
--older-than <duration> | Raccoglie i job terminati da più di questo numero di ore (predefinito: 168) | No | - |
-y, --yes | Salta la richiesta di conferma | No | - |
8. Backup e ripristino
Gestisci le strategie di backup, le loro esecuzioni pianificate e gli artefatti che producono: dichiara una strategia per un repository, eseguila o ripristinala su richiesta e ispeziona gli archivi scritti su un endpoint di storage.
8.1 schedule
Distribuisci la programmazione dei backup su una macchina remota (timer systemd)
rdc backup schedule [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome della macchina | Sì | - |
--dry-run | Visualizza le unità generate senza distribuirle | No | - |
--force | Procedi anche se un backup è in esecuzione (la nuova unità si applica al prossimo tick; l'invocazione in corso mantiene la vecchia unità) | No | - |
--reset-failed | Cancella lo stato di errore sui servizi modificati dopo una distribuzione riuscita (disabilitato per default, preserva il segnale di errore) | No | - |
--debug | Abilita l'output di debug | No | - |
8.2 cancel
Annulla un backup in esecuzione su una macchina remota
rdc backup cancel [strategy] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome della macchina | Sì | - |
--debug | Abilita l'output di debug | No | - |
8.3 list
Elenca gli artefatti di backup su una macchina o uno storage.
rdc backup list [artifact-ref] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome della macchina | No | - |
--storage <name> | Elenca gli artefatti su questo endpoint di storage | No | - |
--path <subdir> | Sottodirectory all'interno della radice dello storage. Se omessa, hot/ e cold/ vengono elencate e unite. | No | - |
-w, --watch | Osserva le modifiche | No | - |
--debug | Abilita l'output di debug | No | - |
8.4 restore
Trasforma un artefatto di backup in un repository attivo. Il posizionamento si specifica qui.
rdc backup restore <artifact-ref> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--as <name> | Nome per il repository ripristinato (predefinito: il nome dell'artefatto) | No | - |
-m, --machine <name> | Nome della macchina | No | - |
--datastore <name> | Ripristina in questo datastore con nome (la macchina a cui è collegato lo ospita) | No | - |
--up | Distribuisci il repository ripristinato dopo il trasferimento | No | - |
--health-window <seconds> | Finestra totale del gate di salute in secondi (predefinito 300) | No | - |
--health-timeout <seconds> | Timeout dell'health check per singolo tentativo in secondi (predefinito 30) | No | - |
-y, --yes | Salta la richiesta di conferma | No | - |
--debug | Abilita l'output di debug | No | - |
8.5 run
Avvia immediatamente un backup su una macchina remota
rdc backup run [strategy] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome della macchina | Sì | - |
-w, --watch | Osserva le modifiche | No | - |
--debug | Abilita l'output di debug | No | - |
8.6 status
Mostra lo stato del backup e dei timer su una macchina remota
rdc backup status [strategy] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome della macchina | Sì | - |
--debug | Abilita l'output di debug | No | - |
8.7 strategy
Gestisci le strategie di backup con nome (modalità hot/cold, destinazioni, pianificazione)
set
Crea o aggiorna una strategia di backup
rdc backup strategy set <strategy> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--destination <name> | Nome della destinazione all'interno della strategia | No | - |
--storage <name> | Nome della configurazione di storage (credenziali rclone) | No | - |
--cron <expression> | Pianificazione cron (es. "0 * * * *" per ogni ora) | No | - |
--mode <mode> | Modalità di backup: "hot" (zero downtime) o "cold" (ferma, snapshot, riavvia) | No | - |
--bwlimit <limit> | Limite di banda rclone (es. "6M", "10M:off", "08:00,3M;22:00,10M") | No | - |
--include <repos> | Esegui il backup solo di questi repo (nomi separati da virgola) | No | - |
--exclude <repos> | Escludi questi repo dal backup (nomi separati da virgola) | No | - |
--folder <path> | Sottocartella sotto il bucket di storage per questa destinazione (es. hot, cold) | No | - |
--enable | Abilita la strategia o la destinazione | No | - |
--disable | Disabilita la strategia o la destinazione | No | - |
bind
Associa una strategia di backup a una macchina per distribuirvi la sua pianificazione
rdc backup strategy bind <strategy> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
unbind
Dissocia una strategia di backup da una macchina
rdc backup strategy unbind <strategy> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome del macchinario di destinazione | Sì | - |
remove
Rimuovi una strategia o destinazione di backup
rdc backup strategy remove <strategy> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--destination <name> | Rimuovi solo questa destinazione (conserva le altre destinazioni) | No | - |
list
Elenca tutte le strategie di backup
rdc backup strategy list
show
Mostra i dettagli della strategia di backup
rdc backup strategy show [strategy]
9. Gestione dello storage
Gestisci gli endpoint di storage esterni per il backup (S3 e altri target compatibili con rclone): registrali e rimuovili, elenca quelli registrati, esplora gli artefatti che contengono e rimuovi i backup orfani.
9.1 list
Elenca gli endpoint di storage. Indica un nome per il dettaglio completo.
rdc storage list [name] [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--reveal | Mostra la configurazione dello storage in chiaro (solo TTY interattivo; registrato) | No | - |
9.2 browse
Naviga i file in un sistema di storage
rdc storage browse <storage> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--path <subpath> | Percorso della sottodirectory da elencare | No | “ |
9.3 prune
Elimina i backup orfani dallo storage che non sono più presenti in nessuna configurazione. Sicuro per configurazioni multiple con protezione del periodo di grazia. Le chiamate rclone vengono eseguite su --machine (l'esecutore), non sul tuo laptop, quindi i client non necessitano di rclone installato localmente; --machine è l'esecutore, non la fonte di verità.
rdc storage prune <storage> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Macchina esecutore: esegue le chiamate rclone list/delete sullo storage. Obbligatorio perché non si prevede che i client abbiano rclone installato localmente; le credenziali dello storage provengono comunque dalla configurazione locale. | Sì | - |
--dry-run | Mostra cosa verrebbe fatto senza apportare modifiche | No | - |
--force | Salta le richieste di conferma | No | - |
--force-delete-mounted | Ignora il controllo di sicurezza del montaggio ed elimina i backup cloud anche se il GUID sorgente è attualmente montato o ha un container in esecuzione sulla macchina esecutore. Distinto da --force (che ignora solo il periodo di grazia per i repository archiviati). | No | - |
--grace-days <days> | Periodo di grazia in giorni per i repo archiviati di recente (predefinito: 7) | No | - |
--debug | Abilita l'output di debug | No | - |
--skip-router-restart | Salta il riavvio del server di routing dopo l'aggiornamento del binario | No | - |
9.4 add
Registra un endpoint di storage.
rdc storage add <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--vault <json> | Contenuto del vault come stringa JSON | Sì | - |
9.5 import
Importa gli storage da un file di configurazione rclone
rdc storage import <file> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--name <name> | Importa solo questa sezione con nome | No | - |
9.6 remove
Rimuove un endpoint di storage dalla configurazione.
rdc storage remove <name> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-y, --yes | Salta la richiesta di conferma | No | - |
--dry-run | Mostra cosa verrebbe fatto senza apportare modifiche | No | - |
10. Integrazione VS Code
Apri VS Code con Remote SSH su una macchina o un repository con ambiente per repository isolato. Stessa connessione SSH di `term` ma avvia VS Code invece. Sottocomandi principali: connect (o abbreviazione posizionale), list (mostra le connessioni configurate), cleanup (rimuove le voci di configurazione SSH), check (verifica l'installazione di VS Code).
10.1 connect
Apri VS Code su una macchina o all'interno di un repository.
rdc vscode connect <target> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-f, --folder <path> | Percorso della cartella remota da aprire | No | - |
--url-only | Stampa l'URI di VS Code invece di avviarlo | No | - |
-n, --new-window | Apri in una nuova finestra di VS Code | No | - |
--skip-env-setup | Salta la configurazione dell'ambiente remoto | No | - |
--insiders | Usa le impostazioni di VS Code Insiders | No | - |
--browser | Serve VS Code nel browser dalla sandbox del repository (non serve VS Code locale) | No | - |
--no-open | Stampa l'URL senza aprire il browser locale | No | - |
--local <port> | Porta locale (predefinita uguale alla porta remota) | No | - |
--server-provider <id> | Implementazione del server VS Code nel browser (openvscode, code-server) | No | - |
--server-archive <file> | Percorso del tarball del server pre-caricato sul macchinario (installazioni air-gap) | No | - |
10.2 list
Elenca le connessioni SSH VS Code configurate
rdc vscode list
10.3 cleanup
Rimuovi le configurazioni SSH di VS Code
rdc vscode cleanup [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--all | Rimuovi tutte le configurazioni SSH di rediacc | No | - |
-c, --connection <name> | Rimuovi una connessione specifica | No | - |
10.4 check
Controlla l'installazione e la configurazione di VS Code
rdc vscode check [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--insiders | Usa le impostazioni di VS Code Insiders | No | - |
10.5 serve
Gestisci il server VS Code nel browser all'interno della sandbox
status
Mostra se il server VS Code nel browser è in esecuzione
rdc vscode serve status <target> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--server-provider <id> | Implementazione del server VS Code nel browser (openvscode, code-server) | No | - |
stop
Ferma il server VS Code nel browser
rdc vscode serve stop <target> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--server-provider <id> | Implementazione del server VS Code nel browser (openvscode, code-server) | No | - |
11. Accesso SSH al terminale
Apri un terminale SSH verso una macchina o un repository. La destinazione è un nome di macchina o un riferimento di repository, e il contesto del repository (DOCKER_HOST, directory di lavoro, ambiente) viene configurato automaticamente. Usa `-c` per eseguire un singolo comando in modalità non interattiva. Per i log dei container o un comando singolo in un container, usa `repo logs` e `repo exec`. Per VS Code, usa `vscode`.
11.1 connect
Apri una shell su una macchina, oppure all'interno di un repository con il suo Docker configurato.
rdc term connect <target> [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-c, --command <cmd> | Esegui un comando invece della shell interattiva | No | - |
--external | Forza l'apertura in una finestra di terminale esterna | No | - |
--reset-home | Reimposta l'overlay home per-repo per un avvio pulito | No | - |
12. Comandi rapidi (scorciatoie)
12.1 run
ATTENZIONE: Comando di basso livello per debug e sperimentazione soltanto. Non per uso in produzione. Usa i comandi di livello superiore (repo up, repo down, ecc.) in alternativa. Esegue una funzione bridge grezza su una macchina.
rdc run
12.2 trace
Traccia un task (scorciatoia per: queue trace)
rdc trace
12.3 cancel
Annulla un task (scorciatoia per: queue cancel)
rdc cancel
12.4 retry
Riprova un task in errore (scorciatoia per: queue retry)
rdc retry
13. Gestione dell'abbonamento
Gestisci le licenze e i token di abbonamento. Accedi con login, ispeziona con status, riemetti le licenze con refresh.
13.1 login
Autentica tramite browser o token API
rdc subscription login [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-t, --token <token> | Token API (rdt_...) | No | - |
--server <url> | URL del server account | No | - |
13.2 logout
Cancella il token di abbonamento memorizzato
rdc subscription logout
13.3 status
Mostra l'abbonamento e lo stato delle licenze per una macchina.
rdc subscription status [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome della macchina | No | - |
13.4 refresh
Aggiorna le licenze dal server account.
rdc subscription refresh [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-m, --machine <name> | Nome della macchina | No | - |
--repo <ref> | Riferimento di repository: nome, oppure nome:tag, opzionalmente con @macchina (es. shop oppure shop:test) | No | - |
14. Aggiornamenti CLI
Controlla le nuove versioni della CLI e applica gli aggiornamenti. Supporta --check-only per verificare senza installare e --force per aggiornare anche se si è già all'ultima versione.
rdc update [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--force | Forza l'aggiornamento anche se è già aggiornato | No | - |
--check-only | Controlla solo gli aggiornamenti senza scaricare | No | - |
--rollback | Ripristina la versione precedente | No | - |
--status | Mostra lo stato dell'auto-aggiornamento e la diagnostica | No | - |
--channel <channel> | Imposta il canale di rilascio (stable o edge) | No | - |
15. Crediti di terze parti
Stampa i componenti di terze parti inclusi in rdc: i binari che renet incorpora e distribuisce (CRIU, rsync, rclone), il runtime Node.js incorporato e le dipendenze npm incluse. Mostra versioni, identificatori di licenza SPDX e gli URL degli archivi sorgente a versione esatta richiesti per la conformità GPL. Usa --licenses per stampare il testo completo THIRD_PARTY_LICENSES incluso nelle build di release.
rdc credits [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--licenses | Stampa il testo completo THIRD_PARTY_LICENSES incluso nelle build di release | No | - |
16. Diagnostica di sistema
Esegue controlli diagnostici sull'ambiente CLI: versione di Node.js, disponibilita del binario renet, validita del file di configurazione, stato delle chiavi SSH e connettivita di rete. Produce un report di salute strutturato con indicatori di successo/errore.
rdc doctor
17. Operazioni VM locali
Provisioning e gestione locale di VM usando KVM/QEMU/Hyper-V (rilevamento automatico della piattaforma). Non per macchine remote: usa `machine` per quelle. Sottocomandi principali: up (avvia VM), down (arresta), status (elenca VM in esecuzione), ssh (connettiti alla VM), setup (installa prerequisiti), check (verifica idoneità dell'host).
17.1 up
Provisioning del cluster VM in locale
rdc ops up [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--force | Forza il riavvio di tutte le VM | No | - |
--parallel | Crea le VM in parallelo | No | - |
--basic | Cluster minimale (bridge + 1 worker) | No | - |
--lite | Salta il provisioning delle VM (solo stato) | No | - |
--skip-orchestration | Salta l'orchestrazione del cluster | No | - |
--backend <backend> | Backend di virtualizzazione (kvm|qemu, rilevato automaticamente) | No | - |
--os <name> | Sistema operativo della VM (es. ubuntu-24.04, debian-13) | No | - |
--debug | Abilita l'output di debug | No | - |
17.2 down
Distruggi il cluster VM
rdc ops down [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--backend <backend> | Backend di virtualizzazione (kvm|qemu, rilevato automaticamente) | No | - |
--debug | Abilita l'output di debug | No | - |
17.3 status
Mostra lo stato del cluster VM
rdc ops status [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--backend <backend> | Backend di virtualizzazione (kvm|qemu, rilevato automaticamente) | No | - |
17.4 ssh
Connettiti a una VM via SSH
rdc ops ssh [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--vm-id <id> | ID della macchina virtuale | Sì | - |
-c, --command <cmd> | Esegui un comando invece della shell interattiva | No | - |
--backend <backend> | Backend di virtualizzazione (kvm|qemu, rilevato automaticamente) | No | - |
--user <user> | Nome utente SSH per la connessione alla VM | No | - |
17.5 setup
Installa i prerequisiti per la virtualizzazione
rdc ops setup [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
--debug | Abilita l'output di debug | No | - |
17.6 check
Verifica i prerequisiti per la virtualizzazione
rdc ops check
18. Servizio executor
Esegui questo processo come esecutore in modo che i client possano eseguire comandi tramite esso invece di connettersi da soli via SSH
rdc serve [options]
| Flag | Descrizione | Obbligatorio | Predefinito |
|---|---|---|---|
-p, --port <port> | Porta su cui restare in ascolto | No | 8080 |
--host <host> | Indirizzo a cui associarsi | No | 0.0.0.0 |
--mode <mode> | Posizionamento: daemon (host del cliente) o container | No | daemon |
Messaggi di errore comuni
Quando qualcosa va storto, la CLI fornisce messaggi di errore chiari:
| Errore | Significato |
|---|---|
| Autenticazione richiesta. Esegui: rdc subscription login | Devi effettuare il login prima |
| Nessuna config attiva. Creane una con: rdc config init <name> | Nessuna config attiva: creane una con `rdc config init` |
| Permesso negato | Il tuo account non ha i permessi necessari |
| Nome macchina obbligatorio. Usa --machine <name> | Specifica una macchina con `--machine` o imposta un valore predefinito nella config |
| Nome team obbligatorio. Usa --team o imposta il valore predefinito con: rdc config set team <name> | Specifica un team con `--team` o imposta un valore predefinito nella config |
| Nome regione obbligatorio. Usa --region o imposta il valore predefinito con: rdc config set region <name> | Specifica una regione con `--region` o imposta un valore predefinito nella config |
Formati di output
Tutti i comandi list/get supportano più formati di output tramite `--output`:
rdc machine list --output json
rdc machine list --output yaml
rdc machine list --output csv
rdc machine list --output table # default
Questo semplifica l'integrazione della CLI Rediacc in script, pipeline CI/CD e flussi di automazione.