Vorhandene Google Cloud-Ressourcen im Bulk importieren und exportieren

Auf dieser Seite werden der Befehl config-connector bulk-export und seine Verwendung beschrieben, um Google Cloud-Ressourcen in YAML-Dateien für Config Connector zu exportieren, die Sie später in Config Connector importieren können.

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. config-connector tool installieren

  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 den Bulk-Export

In diesem Beispiel erstellen Sie mit dem gcloud-Befehlszeilentool ein PubSubTopic und importieren es dann in Config Connector.

  1. Erstellen Sie mit dem gcloud-Befehlszeilentool ein Thema mit dem Namen 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 Ihr Google Cloud-Projekt ersetzt.

  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. Das Objekt config-connector verwendet JSON-Strukturen von Cloud Asset Inventory, um Objekte zu identifizieren. Speichern Sie die JSON-Struktur des Themen-Assets in einer Umgebungsvariablen:

    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 Ihr Google Cloud-Projekt ersetzt.

  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, über den 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, über den 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, über den 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 des Asset-Inventars 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 wieder 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/

Befehlszeilenoptionen

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 ist ein optionaler Ausgabedateipfad, der die Standardausgabe deaktiviert. In einer Datei enthält das Ergebnis die gesamte Befehlsausgabe. Wenn ein Verzeichnis vorhanden ist, 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 Standardanmeldedaten des Cloud SDK.
  • --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 sollen. Optionen sind true oder false. Der Standardwert ist false.
  • --verbose: Aktiviert das ausführliche Logging.

Nächste Schritte