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 dans des fichiers YAML Config Connector que vous pouvez 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 le 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 allez créer un sujet PubSubTopic avec l'outil de ligne de commande gcloud, puis l'importer dans Config Connector.

  1. Créez un sujet nommé sample-topic avec l'outil de ligne de commande gcloud:

    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 la sortie, 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 des objets, l'outil config-connector utilise les structures JSON de Cloud Asset Inventory. Enregistrez la structure JSON de l'élément de sujet dans une variable d'environnement:

    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 la sortie, 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 avec kubectl describe:

    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 d'inventaire des é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 de paramètre --storage-key, config-connector bulk-export crée un bucket Cloud Storage temporaire en votre nom. Ce 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

Résultat

La sortie de la commande config-connector bulk-export correspond aux ressources du connecteur de configuration au format YAML. Le fichier YAML est écrit dans STDOUT par défaut. Vous pouvez diriger la sortie des ressources 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/

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 facultatif au fichier de sortie qui désactive la sortie standard. Lorsqu'un fichier est renvoyé, le résultat contient tout le résultat de la commande. lorsqu'un répertoire contient un nouveau fichier pour chaque ressource de la sortie.
  • --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 du SDK Cloud.
  • --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 si les membres IAM supprimés doivent être filtrés. Les options sont true ou false. La valeur par défaut est false.
  • --verbose: active la journalisation détaillée.

Étape suivante