Importar y exportar en bloque recursos Google Cloud


En esta página se describe el comando config-connector bulk-export y cómo usarlo para Google Cloud exportar Google Cloud recursos a archivos YAML de Config Connector que puedes importar posteriormente a Config Connector.

config-connector bulk-export usa la función Export de Inventario de Recursos de Cloud para descubrir los recursos de config-connector bulk-export. Google Cloud Puede proporcionar una exportación de Cloud Asset Inventory o config-connector puede realizar la exportación en su nombre.

Inventario de recursos de Cloud exporta estructuras JSON. Cada estructura tiene el nombre del recurso, su tipo de inventario de recursos y sus recursos antecesores: proyectos, carpetas y organización. Para descubrir los tipos admitidos por el inventario de recursos, consulta Tipos de recursos admitidos.

Limitaciones

No todos los recursos admiten el comando bulk-export. Para obtener una lista de los recursos admitidos, ejecuta config-connector print-resources.

Antes de empezar

  1. Instalar config-connector tool

  2. Si quieres usar la herramienta config-connector para exportar directamente desde Inventario de Recursos de Cloud, habilita la API Cloud Asset Inventory en el proyecto de tu identidad con Google Cloudgcloud.

    gcloud services enable cloudasset.googleapis.com
    

Ejemplo de exportación en bloque

En este ejemplo, creará un PubSubTopic con la CLI de Google Cloud y, a continuación, lo importará a Config Connector.

  1. Crea un tema llamado sample-topic con Google Cloud CLI:

    gcloud pubsub topics create sample-topic
    

    Recibirás una confirmación de que se ha creado el tema.

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

    En el resultado, PROJECT_ID se sustituye por tu Google Cloud proyecto.

  2. Obtén el nombre de recurso del tema Google Cloud y guárdalo en una variable de entorno con el siguiente comando:

    TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")
    
  3. Para identificar objetos, la herramienta config-connector usa estructuras JSON de Inventario de Recursos de Cloud. Guarda la estructura JSON del recurso del tema en una variable de entorno:

    TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
    
  4. Transfiere el recurso a config-connector bulk-export ejecutando el siguiente comando:

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

    La salida es un recurso de Config Connector en formato YAML.

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

    En el resultado, PROJECT_ID se sustituye por tu Google Cloud proyecto.

  5. Puedes transferir este recurso a Config Connector con kubectl apply -f -. Para transferir el recurso directamente, ejecuta el siguiente comando:

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

    Sustituye CC_NAMESPACE por el espacio de nombres desde el que Config Connector gestiona los recursos.

    Config Connector adquiere el recurso.

  6. Confirma que Config Connector gestiona el recurso con kubectl describe:

    kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACE
    

    Sustituye CC_NAMESPACE por el espacio de nombres desde el que Config Connector gestiona los recursos.

Eliminar los recursos utilizados

Puedes eliminar tu PubSubTopic con config-connector bulk-export y kubectl delete.

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

Sustituye CC_NAMESPACE por el espacio de nombres desde el que Config Connector gestiona los recursos.

Descubrir recursos para importar

Al importar recursos, puedes realizar una exportación de Cloud Asset Inventory y proporcionar los resultados a config-connector bulk-export o pedirle a config-connector bulk-export que la realice en tu nombre.

Importar desde una exportación de Inventario de Recursos de Cloud

Puede proporcionar una exportación del inventario de recursos indicando la ruta de un archivo local que contenga la exportación o canalizando los resultados de una exportación a config-connector en STDIN.

Importar desde un archivo local

Puede proporcionar una exportación del inventario de recursos a config-connector bulk-export mediante un archivo local con el parámetro --input.

config-connector bulk-export --input ASSET_INVENTORY_EXPORT

Sustituye ASSET_INVENTORY_EXPORT por el nombre de archivo de tu exportación de Inventario de Recursos de Cloud.

Importando desde STDIN

Para proporcionar una exportación del inventario de recursos en STDIN, canaliza los resultados de una exportación a config-connector bulk-export. Por ejemplo, si la exportación está en un archivo local llamado export.json, canaliza el contenido del archivo a config-connector bulk-export sin proporcionar ninguno de los parámetros de exportación.

cat export.json | config-connector bulk-export

Filtrar una exportación de inventario de recursos en STDIN

Para filtrar una exportación del inventario de recursos, puedes usar la herramienta jq y una tubería para introducir los resultados en config-connector bulk-export. Por ejemplo, si solo quiere importar recursos de PubSubTopic del archivo EXPORT_FILE, ejecute el siguiente comando:

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

Exportar un inventario con config-connector

La herramienta config-connector bulk-export puede exportar recursos de una Google Cloud jerarquía de recursos.

Exportar un proyecto

Para exportar todos los recursos de tu proyecto, usa el parámetro --project.

config-connector bulk-export --project PROJECT_ID

Sustituye PROJECT_ID por tu Google Cloud proyecto.

Exportar una carpeta

Para exportar todos los recursos de una carpeta, usa el parámetro --folder.

config-connector bulk-export --folder FOLDER_NUMBER

Sustituye FOLDER_NUMBER por el Google Cloud número de tu carpeta.

Exportar tu organización

Para exportar todos los recursos de tu organización, usa el parámetro --organization.

config-connector bulk-export --organization ORGANIZATION_ID

Sustituye ORGANIZATION_ID por el Google Cloud ID de tu organización.

Ubicación de Cloud Storage

La ubicación de salida de la exportación del inventario de recursos es un URI de Cloud Storage. Cuando config-connector bulk-export realiza una exportación, usa un segmento de Cloud Storage. De forma predeterminada, config-connector bulk-export crea un segmento temporal. También puedes especificar el nombre del segmento.

Segmento temporal de Cloud Storage

Si no proporciona el parámetro --storage-key, config-connector bulk-export creará un segmento de Cloud Storage temporal en su nombre. El segmento se crea en la ubicación predeterminada de los segmentos de almacenamiento, que es la US multirregión. El contenedor se elimina cuando se completa la exportación.

Especificar un segmento temporal

Para especificar un segmento, usa un URI de Cloud Storage con el parámetro storage-key. Si el URI es solo el nombre del segmento, se genera un nombre para el objeto de almacenamiento de la exportación. Si el URI es una ruta completa a un objeto de almacenamiento, se usa la ruta completa.

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

Salida

El resultado del comando config-connector bulk-export son recursos de Config Connector en formato YAML. El archivo YAML se escribe en STDOUT de forma predeterminada. Puedes dirigir la salida de los recursos a archivos con la opción output.

Generar un solo archivo

Cuando defines el parámetro --output, config-connector bulk-export escribe sus resultados en un solo archivo si se cumple una de las siguientes condiciones:

  • El archivo especificado por output existe y es un archivo regular.
  • El archivo especificado por output no existe, pero el directorio principal representado por output sí.

Generar un archivo en un directorio

config-connector escribe sus resultados en varios archivos cuando el parámetro --output es un directorio que termina en /. config-connector bulk-export crea un archivo por recurso y los nombres de los archivos coinciden con los nombres de los recursos.

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

Sustituye PROJECT_ID por tu Google Cloud proyecto.

Por ejemplo, para generar recursos del proyecto my-project en el directorio sample, ejecuta el siguiente comando:

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

Opciones de línea de comandos

El comando config-connector bulk-export tiene las siguientes opciones:

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: archivo de entrada de Inventario de Recursos de Cloud.
  • --output: ruta de archivo de salida opcional que inhabilita la salida estándar. Si se trata de un archivo, el resultado contiene toda la salida del comando. Si se trata de un directorio, este contendrá un archivo nuevo por cada recurso de la salida.
  • --storage-key: segmento de Cloud Storage temporal de destino para la exportación.
  • --project: Google Cloud ID de proyecto que se va a exportar
  • --folder: Google Cloud ID de la carpeta que se va a exportar
  • --organization: Google Cloud ID de la organización que se va a exportar.
  • --oauth2-token: un token de OAuth 2 como Google Cloud identidad. De forma predeterminada, config-connector usa las credenciales predeterminadas de Google Cloud CLI.
  • --on-error: controla el comportamiento cuando se produce un error recuperable. Las opciones son "continue", "halt" o "ignore".
    • halt: detiene la ejecución si se produce algún error (valor predeterminado)
    • continue: continúa procesando los recursos e imprime el error en STDERR.
    • ignore: continúa procesando los recursos y no imprimas el error
  • --iam-format: especifica el tipo de recursos de gestión de identidades y accesos que se incluirán en la exportación. Las opciones son policy (opción predeterminada), policymember o none.
  • --filter-deleted-iam-members: especifica si se deben excluir los principales de gestión de identidades y accesos eliminados. Las opciones son true o false. El valor predeterminado es false.
  • --verbose: habilita el registro detallado.

Siguientes pasos