Passa al contenuto principale
01 / cgctl

cgctl

Ogni comando di cgctl, le opzioni, le variabili di configurazione e i codici di uscita.

Tipo
Riferimento
Serve
Un token API, o email e password di un account
Versione
unreleased
Ultima verifica
Non verificata

cgctl è un client leggero dell'API del pannello, pensato per gli script. Ogni comando diventa una sola richiesta all'API; la risposta JSON dell'API esce, indentata, sullo standard output. Per iniziare vedi token API e cgctl.

Sintassi​

cgctl [--wait|-w] [--timeout <durata>] <comando> [argomenti]
OpzioneEffetto
--wait, -wSe la risposta nomina un'attività, la segue fino alla fine (vedi sotto).
--timeout <durata>Quanto aspettare con --wait, in formato 30m, 2h. Predefinito 1h.
--Fine delle opzioni: quello che segue è il comando.
-v, --version, versionStampa cgctl <versione> ed esce con 0, senza leggere la configurazione.
-h, --help, helpStampa l'uso ed esce con 2. Anche senza comando.

Le opzioni possono stare in qualsiasi punto della riga. Gli argomenti che sono ID devono essere interi positivi.

Comandi​

Siti​

ComandoRichiestaCosa fa
cgctl sites listGET /api/sitesElenca i siti.
cgctl sites create <dominio> <tipo> [flags-json] [opzioni del database] [--json]POST /api/sitesCrea un sito e ne stampa il riepilogo (vedi sotto). <tipo> è wordpress, woocommerce, static, php, laravel o proxy. flags-json è un oggetto JSON con gli altri campi della creazione; domain e type vengono dagli argomenti.
cgctl sites delete <id-sito>DELETE /api/sites/<id>Elimina un sito.
cgctl cert issue <id-sito>POST /api/sites/<id>/certificateChiede il certificato del sito.
cgctl purge <id-sito> [url ...]POST /api/sites/<id>/purgeSvuota la cache di pagina: solo gli URL dati, o tutto il sito senza URL.
cgctl warm <id-sito>POST /api/sites/<id>/warmRiscalda la cache del sito.

Per esempio, un sito WordPress:

bash
cgctl --wait sites create example.com wordpress \
'{"admin_email": "tu@example.com", "admin_user": "admin", "admin_password": "<almeno 12 caratteri>"}'

Creare un sito​

OpzioneEffetto
--with-databaseCrea anche un database per un sito php o static (create_database: true). WordPress, WooCommerce e Laravel ne hanno sempre uno; un proxy mai.
--db-name <nome>Il nome del database principale. Senza, site_<id>.
--db-user <nome>Il nome del suo utente. Senza, site_<id>.
--db-password-stdinLegge la password del database da una riga dello standard input (al massimo 4 KiB; vuota è un errore).
--db-password-file <file>Legge la password da un file, senza l'a capo finale.
--db-password <password>La password sulla riga di comando. Funziona, ma stampa sullo standard error cgctl: warning: --db-password puts the password where ps and the shell history show it; use --db-password-stdin or --db-password-file.
--jsonStampa la risposta JSON dell'API invece del riepilogo.

Senza password, il pannello ne genera una. Le opzioni accettano anche la forma --opzione=valore e vincono sugli stessi campi di flags-json. Un'opzione sconosciuta, un'opzione senza valore, due opzioni della password insieme, un file illeggibile o più di tre argomenti posizionali sono un errore d'uso (uscita 2). I nomi e la password seguono le regole dei database.

Il riepilogo, in testo semplice: il sito e il suo stato (Being created: task <id>, o con --wait Created.), poi URL e link del pannello, URL e utente di amministrazione di WordPress, host, porta, socket, nome, utente e password del database, e SFTP (spento su un sito nuovo). Finisce ricordando che la password si vede solo ora: la risposta dell'API è l'unico posto in cui compare.

bash
cgctl --wait sites create shop.example.com laravel \
--db-name shop --db-user shop_app --db-password-file /root/shop-db.pass

Staging e rilasci​

ComandoRichiestaCosa fa
cgctl staging create <id-sito>POST /api/sites/<id>/stagingCrea la copia di staging.
cgctl safe-push <id-sito> [percorso ...]POST /api/sites/<id>/safe-pushPorta lo staging in produzione con Safe Push. I percorso sono i percorsi URL che Performance Guard misura (per esempio / e /shop/).
cgctl deploy <id-sito> <cartella>POST /api/sites/<id>/deploymentsPubblica un rilascio da una cartella dentro il sito (source_dir).
cgctl rollback <id-sito>POST /api/sites/<id>/rollbackTorna al rilascio precedente.

Backup e database​

ComandoRichiestaCosa fa
cgctl backup run <id-sito>POST /api/sites/<id>/backupsFa un backup ora.
cgctl backup verify <id-backup>POST /api/backups/<id>/verifyEsegue un ripristino di prova del backup.
cgctl backup restore <id-backup> <dominio> [full|files|database]POST /api/backups/<id>/restoreRipristina il backup. <dominio> è la conferma e deve essere il dominio del sito; la modalità predefinita è full.
cgctl database list <id-sito>GET /api/sites/<id>/databasesI database del sito, con dimensioni e tabelle, e gli utenti database con i loro privilegi.
cgctl database create <id-sito> <nome>POST /api/sites/<id>/databasesCrea un database del sito.
cgctl database user-create <id-sito> <nome> [database:all|read ...]POST /api/sites/<id>/database-usersCrea un utente database con i privilegi dati; la password generata compare una sola volta.
cgctl database import <id-sito> <dominio> <file.sql> [database]POST /api/sites/<id>/database/importImporta un file SQL, nel database principale o in quello indicato. Il percorso è relativo alla cartella del sito; <dominio> è la conferma. Prima viene salvato un punto di ripristino.
cgctl cron run <id-cron>POST /api/cron/<id>/runEsegue subito un'attività pianificata.

Server​

ComandoRichiestaCosa fa
cgctl statusGET /api/system/statusStato del server: CPU, memoria, disco, servizi principali.
cgctl driftGET /api/system/driftFile gestiti modificati fuori dal pannello.
cgctl tasksGET /api/tasksLe ultime 100 attività.
cgctl task <id-attività>GET /api/tasks/<id>Un'attività.
cgctl auditGET /api/auditLe ultime 200 righe del registro attività.
cgctl settings getGET /api/settingsLe impostazioni del pannello.
cgctl settings set <chiave> <valore>PUT /api/settingsCambia un'impostazione.

Token API​

Questi comandi accedono sempre con email e password (CLOUDGROUND_EMAIL, CLOUDGROUND_PASSWORD e, con la 2FA, CLOUDGROUND_TOTP): l'API non accetta un token per gestire i token.

ComandoRichiestaCosa fa
cgctl tokens listGET /api/tokensElenca i token.
cgctl tokens create <nome> [giorni]POST /api/tokensCrea un token; giorni da 0 (mai) a 365. Il token compare una sola volta.
cgctl tokens revoke <id-token>DELETE /api/tokens/<id>Revoca un token.

Sul server​

Questi comandi girano da root sul server e non parlano con il pannello.

ComandoCosa fa
cgctl install [--plan] [--from <cartella> | --release <cartella>] [--skip-packages] [--container]Installa CloudGround, o ripara un server con la stessa release (un'altra release va installata con cgctl update); --plan mostra cosa cambierebbe senza cambiare niente. È il comando che lancia install.sh.
cgctl doctor [--skip-packages] [--container]Controlla ogni passo dell'installazione e dice cosa non corrisponde; esce con 1 se trova differenze, altrimenti stampa no drift.
cgctl update [--to <vX.Y.Z>] [--channel stable|beta] [--check] [--timeout <durata>]Aggiorna CloudGround a una release firmata più recente, con snapshot e rollback automatico, come Aggiorna ora nel pannello; --check dice solo cosa installerebbe. Vedi aggiorna CloudGround.
cgctl uninstall [--plan] [--yes] [--remove-sites [--confirm <hostname>]] [--purge-packages]Toglie CloudGround dal server, tenendo i siti e i loro database se non c'è --remove-sites; --plan elenca ogni azione senza cambiare nulla. Vedi disinstalla CloudGround.
cgctl release verify <cartella> [file ...]Verifica una release scaricata con le chiavi di firma compilate in cgctl; non serve il pannello né un token.

Autenticazione​

  1. Con un token (CLOUDGROUND_TOKEN o CLOUDGROUND_TOKEN_FILE), ogni richiesta porta Authorization: Bearer <token>.
  2. Senza token, CLOUDGROUND_EMAIL e CLOUDGROUND_PASSWORD (e CLOUDGROUND_TOTP) accedono una volta per il comando, anche sul socket unix://.
  3. Senza né l'uno né gli altri, cgctl esce con 1 e spiega come ottenere un token.

Configurazione​

cgctl legge, dal meno al più forte: i valori predefiniti, il file /etc/cloudground/cgctl.env (o il file in CLOUDGROUND_CONFIG), l'ambiente. Il file ha una riga CHIAVE=valore per variabile; le righe vuote e quelle che iniziano con # o ; sono ignorate. Un file che l'utente non può leggere viene ignorato.

VariabilePredefinitoValore
CLOUDGROUND_URLunix:///run/cloudground/api.sockunix://<percorso assoluto>, https://host[:porta], o http:// solo verso un indirizzo locale.
CLOUDGROUND_TOKEN—Un token cgt_ seguito da 43 caratteri base64url.
CLOUDGROUND_TOKEN_FILE—Un file che contiene il token.
CLOUDGROUND_INSECUREspento1 salta la verifica del certificato verso un indirizzo non locale.
CLOUDGROUND_EMAIL, CLOUDGROUND_PASSWORD, CLOUDGROUND_TOTP—Accesso con password, senza token.
CLOUDGROUND_CONFIG—Un altro file al posto di /etc/cloudground/cgctl.env.

Token e file del token sono una sola impostazione: l'ambiente vince sul file, e dentro la stessa fonte il token vince sul file del token. Gli interruttori accettano 1 (acceso) o vuoto e 0 (spento); altri valori sono un errore. Ogni errore di configurazione nomina la variabile e da dove viene.

Con https:// cgctl verifica il certificato, tranne verso un indirizzo locale o con CLOUDGROUND_INSECURE=1. cgctl non usa proxy.

Output ed errori​

La risposta dell'API esce su standard output, in JSON indentato; sites create stampa invece il suo riepilogo. Gli errori escono su standard error come cgctl: HTTP <stato>: <errore dell'API>.

Aspettare un'attività​

Con --wait, se la risposta nomina un'attività, cgctl chiede GET /api/tasks/<id> ogni secondo e stampa su standard error una riga di avanzamento a ogni cambiamento. Si ferma quando lo stato è finale: succeeded è un successo; failed, cancelled o qualsiasi stato diverso da pending, queued e running è un fallimento. L'attività finale esce su standard output.

Se il pannello non risponde mentre cgctl aspetta (per esempio perché si sta riavviando), cgctl riprova; le risposte 401, 403 e 404 terminano l'attesa con un fallimento. Senza un'attività nella risposta, --wait non cambia nulla.

Codici di uscita​

CodiceSignificato
0La richiesta è riuscita e, con --wait, anche l'attività.
1L'API ha rifiutato la richiesta, non era raggiungibile, o l'attività è fallita.
2Errore d'uso o di configurazione.
3Con --wait, il --timeout è scaduto con l'attività ancora in corso.

Prossimo passo​

Per le operazioni che cgctl non copre, usa direttamente l'API.

Questa pagina ti è stata utile?
Modifica questa pagina ↗