Importazione ed esportazione collettiva di risorse Google Cloud esistenti

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

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

Cloud Asset Inventory esporta strutture JSON. Ogni struttura contiene il nome della risorsa, il relativo tipo di inventario delle risorse e le risorse predecessore: progetti, cartelle e organizzazione. Per scoprire i tipi supportati da Asset Inventory, consulta Tipi di asset supportati.

Limitazioni

Non tutte le risorse supportano il comando bulk-export. Per visualizzare un elenco delle risorse supportate, esegui config-connector print-resources.

Prima di iniziare

  1. Installare config-connector tool

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

    gcloud services enable cloudasset.googleapis.com
    

Esempio di esportazione collettiva

In questo esempio, crei un PubSubTopic con Google Cloud CLI e poi lo importi in Config Connector.

  1. Crea un argomento denominato sample-topic con Google Cloud CLI:

    gcloud pubsub topics create sample-topic
    

    Riceverai una conferma della creazione dell'argomento.

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

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

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

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

    TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
    
  4. Trasferisci l'asset in 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 progettoGoogle Cloud .

  5. Puoi passare questa risorsa a Config Connector con kubectl apply -f -. Per passare la risorsa direttamente, esegui questo comando:

    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. Verifica 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 il tuo 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.

Individuare le risorse da importare

Quando importi le risorse, puoi eseguire un'esportazione di Cloud Asset Inventory e fornire i risultati a config-connector bulk-export o chiedere a config-connector bulk-export di eseguirne una per tuo conto.

Importazione da un'esportazione di Cloud Asset Inventory

Puoi fornire un'esportazione dell'inventario delle risorse fornendo un percorso a un file locale contenente l'esportazione o reindirizzando i risultati di un'esportazione a config-connector su STDIN.

Importare da un file locale

Puoi fornire un'esportazione dell'inventario delle risorse a 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 di Cloud Asset Inventory.

Importazione da STDIN

Per fornire un'esportazione dell'inventario delle risorse su STDIN, reindirizza i risultati di un'esportazione a config-connector bulk-export. Ad esempio, se l'esportazione si trova in un file locale denominato export.json, invia i contenuti del file a config-connector bulk-export senza fornire nessuno dei parametri di esportazione.

cat export.json | config-connector bulk-export

Filtrare un'esportazione dell'inventario degli asset su STDIN

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

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 Google Cloud gerarchia delle risorse.

Esportare il progetto

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

config-connector bulk-export --project PROJECT_ID

Sostituisci PROJECT_ID con il tuo progetto Google Cloud .

Esportare la 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 tua cartella Google Cloud .

Esportare l'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' Google Cloud ID organizzazione.

Percorso di Cloud Storage

Il percorso di output dell'esportazione dell'inventario degli asset è un URI 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 Cloud Storage temporaneo

Se non fornisci il parametro --storage-key, config-connector bulk-export crea un bucket Cloud Storage temporaneo per tuo conto. Il bucket viene creato nella località predefinita per i bucket di archiviazione: la multi-regione US. 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 archiviazione dell'esportazione. Se l'URI è un percorso completo a 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 sono risorse Config Connector in formato YAML. Per impostazione predefinita, il file YAML viene scritto in STDOUT. Puoi indirizzare l'output delle risorse ai file con l'opzione output.

Output in un unico file

Quando imposti il parametro --output, config-connector bulk-export scrive i risultati in un unico 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 principale 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 /. config-connector bulk-export crea un file per risorsa e i nomi dei file corrispondono ai nomi delle risorse.

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 nella directory sample, esegui questo comando:

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

Opzioni della riga di comando

Il comando config-connector bulk-export ha 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 del file di output facoltativo che disattiva l'output standard. Quando un file, il risultato contiene tutto l'output comando; quando una directory, la directory conterrà un nuovo file per ogni risorsa nell'output.
  • --storage-key: Bucket Cloud Storage temporaneo di destinazione per l'esportazione.
  • --project: Google Cloud ID progetto da esportare
  • --folder: Google Cloud ID cartella da esportare
  • --organization: Google Cloud l'ID organizzazione da esportare.
  • --oauth2-token: un token OAUTH2 come identità Google Cloud . Per impostazione predefinita, config-connector utilizza le credenziali predefinite di Google Cloud CLI.
  • --on-error: controlla il comportamento quando si verifica un errore recuperabile. Le opzioni sono "continua", "interrompi" o "ignora".
    • halt: interrompi l'esecuzione in caso di errore (impostazione predefinita)
    • continue: continua a elaborare le risorse, stampa l'errore su 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