Importa ed esporta in blocco le risorse Google Cloud esistenti

Questa pagina descrive il comando config-connector bulk-export e come utilizzarlo per esportare le risorse Google Cloud in file YAML Config Connector, che puoi poi importare in Config Connector.

config-connector bulk-export utilizza la funzionalità di esportazione di Cloud Asset Inventory per scoprire le risorse Google Cloud esistenti. Puoi fornire un'esportazione dell'inventario Cloud Asset oppure config-connector può eseguire l'esportazione per tuo conto.

Cloud Asset Inventory esporta strutture JSON. Ogni struttura ha il nome della risorsa, il relativo tipo di inventario e le risorse predecessori: progetti, cartelle e organizzazione. Per scoprire i tipi supportati dall'inventario, consulta l'articolo Tipi di asset supportati.

Prima di iniziare

  1. Installare config-connector tool

  2. Se vuoi utilizzare lo strumento config-connector per esportare direttamente da Cloud Asset Inventory, attiva l'API Cloud Asset Inventory nel tuo progetto Google Cloud Identity con gcloud.

    gcloud services enable cloudasset.googleapis.com
    

Esempio di esportazione collettiva

In questo esempio crei un PubSubTopic con l'interfaccia a riga di comando di Google Cloud e poi importalo in Config Connector.

  1. Crea un argomento denominato sample-topic con l'interfaccia a riga di comando di Google Cloud:

    gcloud pubsub topics create sample-topic
    

    Riceverai la conferma che l'argomento è stato creato.

    Created topic [projects/PROJECT_ID/topics/sample-topic].
    

    Nell'output, PROJECT_ID viene sostituito con il tuo progetto Google Cloud.

  2. Recupera il nome della risorsa Google Cloud dell'argomento e salvalo in una variabile di ambiente con il seguente comando:

    TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")
    
  3. Per identificare gli oggetti, lo strumento config-connector utilizza le strutture JSON di Cloud Asset Inventory. Salva la struttura JSON dell'asset argomento in una variabile di ambiente:

    TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
    
  4. Passa l'asset a config-connector bulk-export eseguendo questo comando:

    echo ${TOPIC_ASSET} | config-connector bulk-export
    

    L'output è una risorsa Config Connector in formato YAML.

    ---
    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
      annotations:
        cnrm.cloud.google.com/project-id: PROJECT_ID
      name: sample-topic
    ...
    

    Nell'output, PROJECT_ID viene sostituito con il tuo progetto Google Cloud.

  5. Puoi trasferire questa risorsa in Config Connector con kubectl apply -f -. Per passare direttamente la risorsa, esegui il comando seguente:

    echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl apply -f -  --namespace CC_NAMESPACE
    

    Sostituisci CC_NAMESPACE con lo spazio dei nomi da cui Config Connector gestisce le risorse.

    Config Connector acquisisce la risorsa.

  6. Conferma che Config Connector gestisca la risorsa con kubectl describe:

    kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACE
    

    Sostituisci CC_NAMESPACE con lo spazio dei nomi da cui Config Connector gestisce le risorse.

Pulizia

Puoi eliminare PubSubTopic con config-connector bulk-export e kubectl delete.

echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl delete -f - --namespace CC_NAMESPACE

Sostituisci CC_NAMESPACE con lo spazio dei nomi da cui Config Connector gestisce le risorse.

Scoperta delle risorse da importare

Quando importi le risorse, puoi eseguire un'esportazione dell'inventario di Cloud Asset e fornire i risultati a config-connector bulk-export o fare in modo che config-connector bulk-export ne esegua una al posto dell'utente.

Importazione da un'esportazione dell'inventario Cloud Asset

Puoi fornire un'esportazione dell'inventario asset fornendo il percorso di un file locale contenente l'esportazione o comunicando i risultati di un'esportazione a config-connector in STDIN.

Importazione da un file locale

Puoi fornire un'esportazione dell'inventario asset in config-connector bulk-export utilizzando un file locale con il parametro --input.

config-connector bulk-export --input ASSET_INVENTORY_EXPORT

Sostituisci ASSET_INVENTORY_EXPORT con il nome file dell'esportazione del tuo inventario Cloud Asset.

Importazione da STDIN

Per fornire un'esportazione dell'inventario degli asset su STDIN, invia i risultati di un'esportazione a config-connector bulk-export. Ad esempio, se l'esportazione è in un file locale denominato export.json, invia i contenuti al file tramite pipe in config-connector bulk-export, senza fornire i parametri di esportazione.

cat export.json | config-connector bulk-export

Filtrare un'esportazione dell'inventario delle risorse su STDIN

Per filtrare un'esportazione dell'inventario delle risorse, puoi utilizzare lo strumento e la barra verticale jq per inserire i risultati in config-connector bulk-export. Ad esempio, se vuoi importare solo gli asset PubSubTopic dal file EXPORT_FILE, esegui il comando seguente:

cat EXPORT_FILE | jq '. | select( .asset_type == "pubsub.googleapis.com/Topic" )' | config-connector bulk-export

Esportare un inventario con config-connector

Lo strumento config-connector bulk-export può esportare risorse da una gerarchia delle risorse di Google Cloud.

Esportazione del progetto

Per esportare tutte le risorse dal progetto, utilizza il parametro --project.

config-connector bulk-export --project PROJECT_ID

Sostituisci PROJECT_ID con il tuo progetto Google Cloud.

Esportazione della cartella

Per esportare tutte le risorse da una cartella, utilizza il parametro --folder.

config-connector bulk-export --folder FOLDER_NUMBER

Sostituisci FOLDER_NUMBER con il numero della cartella di Google Cloud.

Esportazione dell'organizzazione

Per esportare tutte le risorse della tua organizzazione, utilizza il parametro --organization.

config-connector bulk-export --organization ORGANIZATION_ID

Sostituisci ORGANIZATION_ID con l'ID organizzazione Google Cloud.

Località di Cloud Storage

La posizione di output dell'esportazione dell'inventario asset è un URI di Cloud Storage. Quando config-connector bulk-export esegue un'esportazione, utilizza un bucket Cloud Storage. Per impostazione predefinita, config-connector bulk-export crea un bucket temporaneo. Puoi anche specificare il nome del bucket.

Bucket temporaneo Cloud Storage

Se non fornisci il parametro --storage-key, config-connector bulk-export crea un bucket Cloud Storage temporaneo per tuo conto. Il bucket viene eliminato al termine dell'esportazione.

Specifica di un bucket temporaneo

Per specificare un bucket, utilizza un URI Cloud Storage con il parametro storage-key. Se l'URI è solo il nome del bucket, viene generato un nome per l'oggetto di esportazione. Se l'URI è un percorso completo di un oggetto di archiviazione, viene utilizzato il percorso completo.

config-connector bulk-export --storage-key gs://BUCKET_NAME

Output

L'output del comando config-connector bulk-export è le risorse Config Connector in formato YAML. Il file YAML è scritto in STDOUT per impostazione predefinita. Puoi indirizzare l'output delle risorse ai file con l'opzione output.

Output in un singolo file

Quando imposti il parametro --output, config-connector bulk-export scrive i risultati in un singolo file se si verifica una delle seguenti condizioni:

  • Il file specificato da output esiste ed è un file regular.
  • Il file specificato da output non esiste e la directory padre rappresentata da output esiste.

Output in una directory

config-connector scrive i risultati in più file quando il parametro --output è una directory che termina con un /. config-connector bulk-export crea un file per risorsa e i nomi dei file corrispondono ai rispettivi nomi.

config-connector bulk-export --project PROJECT_ID --on-error continue --output OUTPUT_DIRECTORY/

Sostituisci PROJECT_ID con il tuo progetto Google Cloud.

Ad esempio, per generare asset dal progetto my-project alla directory sample, esegui il comando seguente:

config-connector bulk-export --project my-project --on-error continue --output sample/

Risorse supportate

Puoi stampare l'elenco delle risorse per lo strumento config-connector insieme ai formati del nome della risorsa eseguendo questo comando:

config-connector print-resources

Opzioni della riga di comando

Il comando config-connector bulk-export prevede le seguenti opzioni:

config-connector bulk-export
    --input FILENAME \
    --output FILENAME \
    --storage-key gs://BUCKET_NAME \
    --project PROJECT_ID \
    --folder FOLDER_NUMBER \
    --organization ORGANIZATION_ID \
    --oauth2-token TOKEN \
    --on-error [halt | continue | ignore] \
    --iam-format [policy | policymember | none] \
    --filter-deleted-iam-members [true | false] \
    --verbose
  • --input: file di input di Cloud Asset Inventory.
  • --output: un percorso facoltativo del file di output che disattiva l'output standard. Quando un file contiene il risultato dell'output comando, se contiene una directory, la directory conterrà un nuovo file per ogni risorsa nell'output.
  • --storage-key: scegli come target il bucket Cloud Storage temporaneo per l'esportazione.
  • --project: ID progetto Google Cloud da esportare
  • --folder: ID cartella Google Cloud da esportare
  • --organization: ID organizzazione Google Cloud da esportare.
  • --oauth2-token: un token OAUTH2 come identità Google Cloud. Per impostazione predefinita, config-connector utilizza le credenziali predefinite dell'interfaccia a riga di comando di Google.
  • --on-error: controlla questo comportamento quando si verifica un errore recuperabile. Le opzioni sono 'continua', 'halt' o 'ignora'.
    • halt: interrompi l'esecuzione per qualsiasi errore (impostazione predefinita)
    • continue: continua a elaborare le risorse, stampa l'errore in STDERR
    • ignore: continua a elaborare le risorse e non stampare l'errore
  • --iam-format: specifica il tipo di output delle risorse IAM con l'esportazione. Le opzioni sono policy (impostazione predefinita), policymember o none.
  • --filter-deleted-iam-members: specifica se filtrare le entità IAM eliminate. Le opzioni sono true o false. Il valore predefinito è false.
  • --verbose: attiva il logging dettagliato.

Passaggi successivi