Vorhandene Google Cloud-Ressourcen im Bulk importieren und exportieren


Auf dieser Seite wird der config-connector bulk-export-Befehl beschrieben und wie Sie damit Google Cloud-Ressourcen in Config Connector-YAML-Dateien exportieren, um diese in Config Connector zu importieren.

config-connector bulk-export verwendet die Exportfunktion von Cloud Asset Inventory, um vorhandene Google Cloud-Ressourcen zu ermitteln. Sie können einen Cloud Asset Inventory-Export bereitstellen oder mit config-connector den Export in Ihrem Namen ausführen.

Cloud Asset Inventory exportiert JSON-Strukturen. Jede Struktur enthält den Namen der Ressource, ihren Asset Inventory-Typ sowie ihre Ancestor-Ressourcen: Projekte, Ordner und Organisation. Informationen zu den von Asset Inventory unterstützten Typen finden Sie unter Unterstützte Asset-Typen.

Hinweis

  1. Installieren Sie config-connector tool

  2. Wenn Sie das config-connector-Tool für den direkten Export aus Cloud Asset Inventory verwenden möchten, aktivieren Sie die Cloud Asset Inventory API im Projekt Ihrer Google Cloud Identity mit gcloud.

    gcloud services enable cloudasset.googleapis.com
    

Beispiel für einen Bulk-Export

In diesem Beispiel erstellen Sie ein PubSubTopic mit der Google Cloud CLI und in Config Connector importieren.

  1. Erstellen Sie mit der Google Cloud CLI ein Thema namens sample-topic:

    gcloud pubsub topics create sample-topic
    

    Sie erhalten dann eine Bestätigung, dass das Thema erstellt wurde:

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

    In der Ausgabe wird PROJECT_ID durch Ihren Google Cloud-Projekt

  2. Rufen Sie den Google Cloud-Ressourcennamen des Themas ab und speichern Sie ihn mit dem folgenden Befehl in einer Umgebungsvariablen:

    TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")
    
  3. Zum Identifizieren von Objekten verwendet das config-connector-Tool das Cloud Asset Inventory-JSON Strukturen. JSON-Struktur des Themen-Assets in einer Umgebung speichern Variable:

    TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
    
  4. Übergeben Sie das Asset mit dem folgenden Befehl an config-connector bulk-export:

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

    Die Ausgabe ist eine Config Connector-Ressource im YAML-Format:

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

    In der Ausgabe wird PROJECT_ID durch Ihren Google Cloud-Projekt

  5. Sie können diese Ressource mit kubectl apply -f - an Config Connector übergeben. Führen Sie den folgenden Befehl aus, um die Ressource direkt zu übergeben:

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

    Ersetzen Sie CC_NAMESPACE durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.

    Config Connector ruft die Ressource ab.

  6. Prüfen Sie, ob Config Connector die Ressource mit kubectl describe verwaltet:

    kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACE
    

    Ersetzen Sie CC_NAMESPACE durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.

Bereinigen

Sie können Ihr PubSubTopic mit config-connector bulk-export und kubectl delete löschen:

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

Ersetzen Sie CC_NAMESPACE durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.

Zu importierende Ressourcen ermitteln

Beim Importieren von Ressourcen können Sie einen Cloud Asset Inventory-Export durchführen und die Ergebnisse an config-connector bulk-export senden oder config-connector bulk-export kann einen Export in Ihrem Namen ausführen.

Aus einem Cloud Asset Inventory-Export importieren

Sie können ein Asset Inventory-Export bereitstellen, indem Sie einen Pfad zu einer lokalen Datei angeben, die den Export enthält, oder die Ergebnisse eines Exports an config-connector in STDIN weiterleiten.

Aus einer lokalen Datei importieren

Sie können einen Asset Inventory-Export in config-connector bulk-export bereitstellen, indem Sie eine lokale Datei mit dem Parameter --input verwenden.

config-connector bulk-export --input ASSET_INVENTORY_EXPORT

Ersetzen Sie ASSET_INVENTORY_EXPORT durch den Dateinamen Ihres Cloud Asset Inventory-Exports.

Aus STDIN importieren

Um einen Asset Inventory-Export auf STDIN bereitzustellen, leiten Sie die Ergebnisse des Exports an config-connector bulk-export weiter. Wenn sich Ihr Export beispielsweise in einer lokalen Datei namens export.json befindet, senden Sie den Inhalt der Datei an config-connector bulk-export, ohne einen Exportparameter anzugeben:

cat export.json | config-connector bulk-export

Asset Inventory-Exports nach STDIN filtern

Zum Filtern eines Asset Inventory-Exports können Sie die Ergebnisse mit dem jq-Tool an config-connector bulk-export senden. Wenn Sie beispielsweise nur PubSubTopic-Assets aus der Datei EXPORT_FILE importieren möchten, führen Sie folgenden Befehl aus:

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

Inventar mit dem Config Connector exportieren

Das config-connector bulk-export-Tool kann Ressourcen aus einer Ressourcenhierarchie von Google Cloud exportieren.

Ihr Projekt exportieren

Um alle Ressourcen aus Ihrem Projekt zu exportieren, verwenden Sie den Parameter --project:

config-connector bulk-export --project PROJECT_ID

Ersetzen Sie PROJECT_ID durch Ihr Google Cloud-Projekt.

Ordner exportieren

Zum Exportieren aller Ressourcen aus einem Ordner verwenden Sie den Parameter --folder:

config-connector bulk-export --folder FOLDER_NUMBER

Ersetzen Sie FOLDER_NUMBER durch Ihre Google Cloud-Ordnernummer.

Organisation exportieren

Zum Exportieren aller Ressourcen aus Ihrer Organisation verwenden Sie den Parameter --organization:

config-connector bulk-export --organization ORGANIZATION_ID

Ersetzen Sie ORGANIZATION_ID durch Ihre Google Cloud-Organisations-ID.

Cloud Storage-Speicherort

Der Ausgabespeicherort von Asset Inventory ist ein Cloud Storage-URI. Wenn config-connector bulk-export einen Export ausführt, wird dafür ein Cloud Storage-Bucket verwendet. Standardmäßig erstellt config-connector bulk-export einen temporären Bucket. Sie können auch den Bucket-Namen angeben.

Temporärer Cloud Storage-Bucket

Wenn Sie den Parameter --storage-key nicht angeben, erstellt config-connector bulk-export automatisch einen temporären Cloud Storage-Bucket. Der Bucket wird am Standardspeicherort für Speicher-Buckets erstellt, der Multi-Region US. Der Bucket wird gelöscht, wenn der Export abgeschlossen ist.

Temporären Bucket festlegen

Zur Festlegung eines Buckets verwenden Sie einen Cloud Storage-URI mit dem Parameter storage-key. Wenn der URI nur der Name des Buckets ist, wird ein Name für das Exportspeicherobjekt generiert. Wenn der URI ein vollständiger Pfad zu einem Speicherobjekt ist, wird der vollständige Pfad verwendet.

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

Ausgabe

Die Ausgabe des Befehls config-connector bulk-export ist Config Connector-Ressourcen im YAML-Format. Die YAML-Datei wird standardmäßig in STDOUT geschrieben. Mit der Option output können Sie die Ausgabe von Ressourcen an Dateien weiterleiten.

Ausgabe in eine einzelne Datei

Wenn Sie den Parameter --output festlegen, schreibt config-connector bulk-export die Ergebnisse in eine einzelne Datei, wenn eine der folgenden Bedingungen zutrifft:

  • Die durch output angegebene Datei ist vorhanden und ist eine regular-Datei.
  • Die durch output angegebene Datei ist nicht vorhanden, aber das durch output dargestellte übergeordnete Verzeichnis ist vorhanden.

Ausgabe in ein Verzeichnis

config-connector schreibt die Ergebnisse in mehrere Dateien, wenn der Parameter --output ein Verzeichnis ist, das mit / endet. config-connector bulk-export erstellt eine Datei pro Ressource und die Dateinamen entsprechen den Ressourcennamen.

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

Ersetzen Sie PROJECT_ID durch Ihr Google Cloud-Projekt.

Führen Sie beispielsweise den folgenden Befehl aus, um Assets aus dem Projekt my-project in das Verzeichnis sample auszugeben:

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

Unterstützte Ressourcen

Mit dem folgenden Befehl können Sie die Liste der Ressourcen für das config-connector-Tool zusammen mit den Formaten für Ressourcennamen ausgeben:

config-connector print-resources

Befehlszeilen-Optionen

Der Befehl config-connector bulk-export bietet folgende Optionen:

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: Eingabedatei für Cloud Asset Inventory.
  • --output: Ein optionaler Ausgabedateipfad, der die Standardausgabe deaktiviert. Bei einer Datei enthält das Ergebnis die gesamte Befehlsausgabe. Bei einem Verzeichnis enthält das Verzeichnis eine neue Datei für jede Ressource in der Ausgabe.
  • --storage-key: Temporärer Cloud Storage-Ziel-Bucket für den Export.
  • --project: ID des zu exportierenden Google Cloud-Projekts.
  • --folder: ID des zu exportierenden Google Cloud-Ordners.
  • --organization: ID der Google Cloud-Organisation, die exportiert werden soll.
  • --oauth2-token: Ein OAUTH2-Token als Google Cloud-Identität. Standardmäßig verwendet config-connector die Google Cloud CLI-Standardanmeldedaten.
  • --on-error: Steuert das Verhalten, wenn ein nicht behebbarer Fehler auftritt. Mögliche Optionen sind "continue", "halt" oder "ignore".
    • halt: Beendet die Ausführung bei jedem Fehler (Standard).
    • continue: Setzt die Verarbeitung der Ressourcen fort und gibt Fehler in STDERR aus.
    • ignore: Setzt die Verarbeitung der Ressourcen fort und gibt keine Fehler aus.
  • --iam-format: Gibt den Typ der IAM-Ressourcen an, die bei Ihrem Export ausgegeben werden. Verfügbare Optionen sind policy (Standard), policymember oder none.
  • --filter-deleted-iam-members: Gibt an, ob gelöschte IAM-Hauptkonten herausgefiltert werden. Optionen sind true oder false. Der Standardwert ist false.
  • --verbose: Aktiviert die ausführliche Protokollierung.

Nächste Schritte