Sto usando il comando gcloud compute instances list
in uno script, ma sono preoccupato che il formato di output esatto non sia statico. Cosa dovrei fare?Voglio usare l'output di `gcloud` in uno script, ma il formato cambia. Cosa dovrei fare?
risposta
È necessario utilizzare il flag --format
, disponibile per la maggior parte dei comandi gcloud
.
Ad esempio, se si desidera ottenere lo stesso risultato esatto come l'attuale (a partire dal momento della stesura di questa risposta) formato, è possibile eseguire:
$ gcloud compute instances list --format="table(
name,
zone.basename(),
machineType.basename(),
scheduling.preemptible.yesno(yes=true, no=''),
networkInterfaces[0].networkIP:label=INTERNAL_IP,
networkInterfaces[0].accessConfigs[0].natIP:label=EXTERNAL_IP,
status
)"
L'uscita di questo il comando sarà non modifica tra le versioni, anche se l'output predefinito del comando (a meno che la risorsa in fase di formattazione non cambi, questo dovrebbe essere raro). La visualizzazione del formato predefinito per le risorse nei comandi è un'operazione in corso.
È anche possibile specificare un formato come YAML o JSON per l'uscita a lettura ottica:
$ gcloud compute instances list --format=yaml
$ gcloud compute instances list --format=json
Si noti che questo output contiene molte più informazioni di quanto è presente nel output di default per il comando; questa è l'informazione con cui devi lavorare quando costruisci un formato personalizzato.
CSV è un'altra opzione di formato. Come table
, richiede una proiezione -a specifica su come stampare ogni riga.
$ gcloud compute instances list --format="csv(name,zone,status)"
name,zone,status
example-instance,us-central1-f,RUNNING
...
Per ulteriori informazioni sulle funzionalità di formattazione di gcloud
, vedere l'output di gcloud topic formats
e gcloud topic projections
.
- È possibile visualizzare tutti i campi possibili eseguendo
gcloud compute instances list --format=flattened
. - Per alcuni comandi, come
gcloud beta test android locales list
, è possibile passare il flag--verbosity=INFO
e cercareINFO: Display format
. - Questo perché i dati CSV non possono essere nidificati come JSON o YAML e le strutture di dati stampate possono essere nidificate.