Importer et exporter des ressources Google Cloud existantes de manière groupée


Cette page décrit la commande config-connector bulk-export et explique comment l'utiliser pour exporter des ressources Google Cloud vers des fichiers YAML Config Connector, que vous pourrez ensuite importer dans Config Connector.

config-connector bulk-export utilise la fonctionnalité d'exportation de l'inventaire des éléments cloud pour découvrir les ressources Google Cloud existantes. Vous pouvez fournir à config-connector une exportation de l'inventaire des éléments cloud ou lui demander d'effectuer l'exportation en votre nom.

L'inventaire des éléments cloud exporte des structures JSON. Chaque structure possède le nom de la ressource, son type dans l'inventaire et ses ressources parentes : projets, dossiers et organisation. Pour connaître les types pris en charge par l'inventaire des éléments, consultez l'article Types d'éléments compatibles.

Avant de commencer

  1. Installez config-connector tool

  2. Si vous souhaitez utiliser l'outil config-connector pour exporter directement depuis l'inventaire des éléments cloud, activez l'API correspondante sur votre projet Google Cloud Identity à l'aide de la commande gcloud suivante :

    gcloud services enable cloudasset.googleapis.com
    

Exemple d'exportation groupée

Dans cet exemple, vous créez un sujet PubSubTopic avec la Google Cloud CLI, puis vous l'importez dans Config Connector.

  1. Créez un sujet nommé sample-topic à l'aide de la Google Cloud CLI:

    gcloud pubsub topics create sample-topic
    

    Une confirmation indiquant que le sujet a été créé s'affiche.

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

    Dans le résultat, PROJECT_ID est remplacé par votre projet Google Cloud.

  2. Récupérez le nom de la ressource Google Cloud du sujet et enregistrez-le dans une variable d'environnement à l'aide de la commande suivante :

    TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")
    
  3. Pour identifier les objets, l'outil config-connector utilise les structures JSON de l'inventaire des éléments cloud. Enregistrez dans une variable d'environnement l'élément sujet sous forme de structure JSON :

    TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
    
  4. Transmettez l'élément à config-connector bulk-export en exécutant la commande suivante :

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

    Le résultat est une ressource Config Connector au format YAML.

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

    Dans le résultat, PROJECT_ID est remplacé par votre projet Google Cloud.

  5. Vous pouvez transmettre cette ressource à Config Connector à l'aide de la commande kubectl apply -f -. Pour transmettre la ressource directement, exécutez la commande suivante :

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

    Remplacez CC_NAMESPACE par l'espace de noms à partir duquel Config Connector gère les ressources.

    Config Connector acquiert la ressource.

  6. Vérifiez que Config Connector gère la ressource à l'aide de la commande kubectl describe suivante :

    kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACE
    

    Remplacez CC_NAMESPACE par l'espace de noms à partir duquel Config Connector gère les ressources.

Nettoyer

Vous pouvez supprimer le sujet PubSubTopic à l'aide de config-connector bulk-export et kubectl delete :

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

Remplacez CC_NAMESPACE par l'espace de noms à partir duquel Config Connector gère les ressources.

Découvrir les ressources à importer

Concernant les ressources à importer, vous pouvez soit effectuer une exportation de l'inventaire des éléments cloud et fournir les résultats à config-connector bulk-export, soit demander à config-connector bulk-export qu'il effectue une exportation en votre nom.

Importer à partir d'une exportation de l'inventaire des éléments cloud

Vous pouvez fournir une exportation de l'inventaire des éléments en fournissant un chemin d'accès au fichier local contenant l'exportation ou en transmettant à config-connector les résultats d'une exportation sur l'entrée standard STDIN.

Importer à partir d'un fichier local

Vous pouvez fournir à config-connector bulk-export une exportation de l'inventaire des éléments à l'aide d'un fichier local en utilisant le paramètre --input.

config-connector bulk-export --input ASSET_INVENTORY_EXPORT

Remplacez ASSET_INVENTORY_EXPORT par le nom de fichier contenant l'exportation de l'inventaire des éléments cloud.

Importer depuis l'entrée standard STDIN

Pour fournir une exportation de l'inventaire des éléments sur STDIN, redirigez les résultats de l'exportation vers config-connector bulk-export à l'aide d'un tube. Par exemple, si votre exportation se trouve dans un fichier local nommé export.json, transmettez le contenu de ce fichier à config-connector bulk-export à l'aide d'un tube sans fournir aucun paramètre d'exportation.

cat export.json | config-connector bulk-export

Filtrer une exportation de l'inventaire des éléments sur STDIN

Pour filtrer une exportation de l'inventaire des éléments, vous pouvez utiliser l'outil jq et rediriger les résultats vers config-connector bulk-export à l'aide d'un tube. Par exemple, si vous souhaitez importer uniquement les éléments PubSubTopic du fichier EXPORT_FILE, exécutez la commande suivante :

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

Exporter un inventaire avec config-connector

L'outil config-connector bulk-export peut exporter des ressources à partir d'une hiérarchie de ressources Google Cloud.

Exporter votre projet

Pour exporter toutes les ressources un projet, utilisez le paramètre --project.

config-connector bulk-export --project PROJECT_ID

Remplacez PROJECT_ID par votre projet Google Cloud.

Exporter un dossier

Pour exporter toutes les ressources d'un dossier, utilisez le paramètre --folder.

config-connector bulk-export --folder FOLDER_NUMBER

Remplacez FOLDER_NUMBER par le numéro de votre dossier Google Cloud.

Exporter une organisation

Pour exporter toutes les ressources d'une organisation, utilisez le paramètre --organization.

config-connector bulk-export --organization ORGANIZATION_ID

Remplacez ORGANIZATION_ID par l'ID de votre organisation Google Cloud.

Emplacement Cloud Storage

L'emplacement de sortie de l'exportation de l'inventaire d'éléments est un URI Cloud Storage. Lorsque config-connector bulk-export effectue une exportation, il utilise un bucket Cloud Storage. Par défaut, config-connector bulk-export crée un bucket temporaire. Vous pouvez également spécifier le nom du bucket.

Bucket Cloud Storage temporaire

Si vous ne fournissez pas le paramètre --storage-key, config-connector bulk-export crée un bucket Cloud Storage temporaire en votre nom. Le bucket est créé dans l'emplacement par défaut pour les buckets de stockage, c'est-à-dire l'emplacement multirégional US. Le bucket est supprimé une fois l'exportation terminée.

Spécifier un bucket temporaire

Pour spécifier un bucket, utilisez un URI Cloud Storage avec le paramètre storage-key. Si l'URI est uniquement le nom du bucket, un nom est généré pour l'objet de stockage d'exportation. Si l'URI est un chemin d'accès complet à un objet de stockage, c'est le chemin complet qui est utilisé.

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

Sortie

Le résultat de la commande config-connector bulk-export génère des ressources au format YAML utilisables par Config Connector. Par défaut, le fichier YAML est écrit sur la sortie standard STDOUT. Les ressources en sortie peuvent être redirigées vers des fichiers à l'aide de l'option output.

Sortie vers un seul fichier

Lorsque vous définissez le paramètre --output, config-connector bulk-export écrit les résultats dans un fichier unique si l'une des conditions suivantes est remplie :

  • Le fichier spécifié par le paramètre output existe et est un fichier regular (véritable).
  • Le fichier spécifié par paramètre output n'existe pas, mais le répertoire parent spécifié dans le même paramètre output existe.

Sortie dans un répertoire

config-connector écrit ses résultats dans plusieurs fichiers lorsque le paramètre --output est le chemin d'un répertoire se terminant par /. Dans ce cas, config-connector bulk-export crée un fichier par ressource. Les noms de fichiers correspondent aux noms des ressources.

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

Remplacez PROJECT_ID par votre projet Google Cloud.

Par exemple, pour générer les éléments du projet my-project dans le répertoire sample, exécutez la commande suivante :

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

Ressources compatibles

Vous pouvez imprimer la liste des ressources de l'outil config-connector ainsi que les formats des noms de ressources en exécutant la commande suivante:

config-connector print-resources

Options de ligne de commande

La commande config-connector bulk-export comporte les options suivantes :

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 : fichier d'entrée pour l'inventaire des éléments cloud.
  • --output : chemin d'accès au fichier de sortie facultatif qui désactive le résultat standard. Quand un fichier contient l'intégralité du résultat de la commande ou quand un répertoire contiendra un nouveau fichier pour chaque ressource du résultat.
  • --storage-key : bucket Cloud Storage temporaire cible pour l'exportation.
  • --project : ID du projet Google Cloud à exporter.
  • --folder : ID du dossier Google Cloud à exporter.
  • --organization : ID de l'organisation Google Cloud à exporter.
  • --oauth2-token : un jeton OAUTH2 en tant qu'identité Google Cloud. Par défaut, config-connector utilise les identifiants par défaut de Google Cloud CLI.
  • --on-error : paramètre contrôlant le comportement lorsqu'une erreur récupérable se produit. Les options possibles sont "continue" (continuer), "halt" (arrêter) ou "ignore" (ignorer).
    • halt : arrête l'exécution en cas d'erreur (valeur par défaut).
    • continue : poursuit le traitement des ressources tout en écrivant les erreurs sur STDERR.
    • ignore : poursuit le traitement des ressources sans écrire les erreurs.
  • --iam-format: spécifie le type de sortie des ressources IAM avec l'exportation. Les options sont policy (par défaut), policymember ou none.
  • --filter-deleted-iam-members : indique s'il faut filtrer les comptes principaux IAM supprimés. Les options sont true ou false. La valeur par défaut est false.
  • --verbose : active la journalisation détaillée.

Étapes suivantes