Importa discos virtuales


Si tienes discos virtuales en tu entorno local con el software y las opciones de configuración que necesitas (a veces llamados discos dorados o imágenes doradas), puedes ahorrar tiempo si los importas en Compute Engine y usas la imagen resultante para crear máquinas virtuales. La herramienta de importación admite la mayoría de los formatos de archivo de discos virtuales, incluidos VMDK y VHD.

Si exportaste tu disco desde Compute Engine, puedes crear imágenes desde el disco.

A fin de obtener información sobre cómo crear un sistema automatizado para migrar varias máquinas virtuales (VM), consulta Migra VM a Compute Engine.

Antes de comenzar

Sistemas operativos compatibles

Puedes importar discos que se pueden iniciar y discos que no se pueden iniciar. Para que los discos virtuales se puedan iniciar en Compute Engine, deben ejecutar uno de los sistemas operativos compatibles.

Limitaciones

Esta función tiene las siguientes limitaciones generales:

Esta función tiene las siguientes limitaciones en Linux:

  • El Administrador de volúmenes lógicos (LVM) no es compatible en varios discos. Para que la importación funcione, el sistema de archivos raíz debe estar ubicado en el disco que se está importando.

  • Los discos virtuales de Linux deben usar grub como el bootloader.

  • Los discos virtuales de Linux deben cumplir con los mismos requisitos que las imágenes personalizadas, incluida la compatibilidad con dispositivos del controlador de almacenamiento Virtio-SCSI.

Esta función tiene las siguientes limitaciones en Windows:

  • Cuando un software de la lista de anunciantes permitidos de aplicaciones, como CB Protection de Carbon Black, se instala en discos virtuales de Windows, el proceso de importación puede fallar. Es posible que debas desinstalar el software antes de la importación.

  • En las VM basadas en Windows, Microsoft KM-TEST Loopback Adapter evita el acceso a la red para el servidor de metadatos y debes inhabilitarlo o quitarlo antes de la importación.

Permisos

Para habilitar una experiencia sin interrupciones cuando importas imágenes, asegúrate de haber otorgado las funciones de IAM necesarias a tu cuenta, a la cuenta de servicio de Cloud Build, y a la cuenta de servicio de Compute Engine. Para obtener más información, consulta Otorga funciones de IAM necesarias.

Verifica la compatibilidad

Antes de intentar importar el disco para tu VM, descarga y ejecuta la herramienta de verificación previa dentro de la VM. Esta herramienta busca problemas de compatibilidad que puedan provocar que el proceso de importación falle o que el disco no funcione de forma adecuada en Compute Engine.

Importa discos virtuales

Puedes importar tus discos virtuales mediante Google Cloud Console, la herramienta de línea de comandos de gcloud o la API de Cloud Build.

Importa un disco de inicio virtual

En los discos que se pueden iniciar no es necesario especificar el sistema operativo, ya que la herramienta de importación detecta de forma automática el sistema operativo para determinar qué controladores y paquetes son obligatorios. Sin embargo, si necesitas anular el sistema operativo detectado, puedes especificar la marca --os o el parámetro -os. Para obtener una lista de los valores admitidos, consulta marca --os.

Console

  1. En Google Cloud Console, sube el archivo de disco virtual a Cloud Storage.
  2. Ve a la página Crear una imagen.

    Ir a la página Crear una imagen

  3. Especifica un Nombre para tu imagen.

  4. En Fuente, selecciona Disco virtual (VMDK, VHD, etcétera).

  5. Busca o ingresa de forma manual la ubicación de almacenamiento para el archivo de Cloud Storage.

  6. Selecciona el sistema operativo que está disponible en el disco importado. También puedes realizar los siguientes cambios:

    • Puedes elegir Instalar paquetes de invitado. Google recomienda que instales el entorno invitado. Para obtener más información sobre el entorno invitado, consulta Entorno invitado.

    • Para los sistemas operativos Windows o Red Hat Enterprise Linux (RHEL), puedes elegir una opción de licencia. Puedes permitir que Compute Engine proporcione una licencia o usar tu propia licencia. Para obtener más información sobre cómo usar una licencia adquirida por el usuario en Windows, consulta Licencia adquirida por el usuario.

  7. Especifica propiedades adicionales para tu imagen (opcional). Por ejemplo, puedes organizar esta imagen como parte de una familia de imágenes.

  8. Haz clic en Crear para importar la imagen.

gcloud

Usa el comando gcloud compute images import para crear una imagen de Compute Engine que se pueda iniciar. Aunque Compute Engine puede iniciar la mayoría de las imágenes de disco de arranque, el comando import asegura que el disco tenga los controladores necesarios y los últimos paquetes de entorno invitado, que son necesarios para iniciar una instancia y conectarse a ella mediante SSH o RDP.

Puedes importar archivos de discos virtuales desde un bucket de Cloud Storage o desde tu estación de trabajo local.

Si importas el archivo de disco virtual desde tu estación de trabajo, la herramienta de importación sube el archivo a un bucket de Cloud Storage de forma automática.

Si lo prefieres, puedes subir el archivo del disco virtual a Cloud Storage tú mismo antes de comenzar con el proceso de importación. Sin embargo, debes subir el archivo a un bucket de Cloud Storage en el mismo proyecto que se usará para el proceso de importación.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE

Reemplaza lo siguiente:

  • IMAGE_NAME: El nombre de la imagen de destino.
  • SOURCE_FILE: El archivo del disco virtual. Este archivo puede ser un archivo local o un archivo almacenado en Cloud Storage. Si tu disco virtual es un archivo local, puedes proporcionar una ruta absoluta o relativa. Si el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formato gs://BUCKET_NAME/OBJECT_NAME.

    Si deseas obtener instrucciones para importar imágenes con licencias existentes a Google Cloud, consulta Licencias adquiridas por el usuario.

Si especificas un archivo local, la operación de carga puede tomar mucho tiempo en función del tamaño del disco virtual y la velocidad de la conexión de red. La importación puede tardar varios minutos en ejecutarse en función del tamaño del disco.

Comando de muestra

En el siguiente ejemplo, se importa un disco virtual llamado my_server.vmdk y almacenado en gs://your_gcs_bucket.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_server.vmdk

Parámetros opcionales

De forma predeterminada, se agregan paquetes de entorno invitado a todas las imágenes de disco de arranque importadas. Si no deseas estos paquetes, agrega la marca --no-guest-environment a tu comando de importación.

API

  1. Agrega el disco virtual a Cloud Storage.

  2. En la API, crea una solicitud POST a la API de Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-tools/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que deseas importar la imagen.
    • IMAGE_NAME: Es el nombre de la imagen que se importará.
    • SOURCE_FILE: Es el URI de la imagen en Cloud Storage, por ejemplo, gs://my-bucket/my-image.vmdk

    Para obtener valores args adicionales que se puedan proporcionar, consulta la sección de marcas opcionales de la página sobre importación de imágenes de VM en GitHub.

    Respuesta de ejemplo

    El resultado muestra una respuesta similar al siguiente ejemplo:

    {
     "name": "operations/build/myproject-12345/operation-1578608233418",
     "metadata": {
      "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
      "build": {
       "id": "3a2055bc-ccbd-4101-9434-d376b88b8940",
       "status": "QUEUED",
       "createTime": "2019-09-20T15:55:29.353258929Z",
       "steps": [
        {
         "name": "gcr.io/compute-image-tools/gce_vm_image_import:release",
         "env": [
          "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
         ],
         "args": [
          "-timeout=7000s",
          "-image_name=my-image",
          "-client_id=api",
          "-data-disk",
          "-source_file=gs://my-bucket/my-image.vmdk"
         ]
        }
       ],
       "timeout": "7200s",
       "projectId": "myproject-12345",
       "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com",
       "options": {
        "logging": "LEGACY"
       },
       "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456"
      }
    }
    

    Puedes supervisar tu compilación de las siguientes dos maneras:

    • Ejecuta una solicitud projects.builds.get mediante el build-id que se mostró.
    • Revisa los registros alojados en la logUrl proporcionada.

Importa un disco virtual que no se pueda iniciar

Console

  1. En Google Cloud Console, sube el archivo de disco virtual a Cloud Storage.
  2. Ve a la página Crear una imagen.

    Ir a la página Crear una imagen

  3. Especifica un Nombre para tu imagen.

  4. En Fuente, selecciona Disco virtual (VMDK, VHD, etcétera).

  5. Busca o ingresa de forma manual la ubicación de almacenamiento del archivo de Cloud Storage.

  6. En sistema operativo, selecciona No hay sistema operativo. Solo datos.

  7. Especifica propiedades adicionales para tu imagen (opcional). Por ejemplo, puedes organizar esta imagen como parte de una familia de imágenes.

  8. Haz clic en Crear para importar la imagen.

gcloud

Puedes usar el comando gcloud compute images import para crear una imagen de Compute Engine que no se pueda iniciar. Si el disco virtual no contiene un sistema operativo instalado que se pueda iniciar, especifica la marca --data-disk. De esta forma, se omite el paso de instalación de controladores y paquetes de entorno invitado que hacen que la imagen se pueda iniciar en Compute Engine.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE \
    --data-disk

Reemplaza lo siguiente:

  • IMAGE_NAME: El nombre de la imagen de destino.
  • SOURCE_FILE: El archivo del disco virtual. Este archivo puede ser un archivo local o un archivo almacenado en Cloud Storage. Si tu archivo de disco virtual es local, puedes usar una ruta de acceso absoluta o relativa. Si el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formato gs://BUCKET_NAME/OBJECT_NAME.

Comando de muestra

En el siguiente ejemplo, se importa un disco virtual llamado my-disk.vmdk, almacenado en gs://my-gcs-bucket/.

gcloud compute images import my-imported-image \
    --source-file gs://my-gcs-bucket/my-disk.vmdk \
    --data-disk

API

  1. Agrega el disco virtual a Cloud Storage.

  2. En la API, crea una solicitud POST a la API de Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "steps":[
        {
          "args":[
            "-image_name=IMAGE_NAME",
            "-source_file=SOURCE_FILE",
            "-timeout=7000s",
            "-client_id=api",
            "-data_disk"
          ],
          "name":"gcr.io/compute-image-tools/gce_vm_image_import:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "timeout":"7200s",
      "tags":[
        "gce-daisy",
        "gce-daisy-image-import"
      ]
    }
    

    Reemplaza los siguientes valores args:

    • PROJECT_ID: Es el ID del proyecto en el que deseas importar la imagen.
    • IMAGE_NAME: Es el nombre de la imagen que se importará.
    • SOURCE_FILE: Es el URI de la imagen en Cloud Storage, por ejemplo, gs://my-bucket/my-image.vmdk

Importa discos mediante redes que no permiten direcciones IP externas

Para importar discos virtuales mediante una red que no permite direcciones IP externas, completa los siguientes pasos:

  1. Agrega el disco virtual a Cloud Storage.

  2. El proceso de importación de imágenes requiere que los administradores de paquetes se instalen en el sistema operativo del disco virtual. Es posible que estos administradores de paquetes deban realizar solicitudes a repositorios de paquetes que se encuentran fuera de Google Cloud. A fin de permitir el acceso a estas actualizaciones, debes configurar Cloud NAT. Para obtener más información, consulta Crea una configuración de NAT con Cloud Router.

  3. Configura el Acceso privado a Google. Para obtener más información, consulta Configura el acceso privado a los servicios.

  4. Importa el disco virtual mediante la herramienta de línea de comandos de gcloud o la API de Cloud Build.

    Cuando importas un disco virtual, se crean VM temporales en tu proyecto. Para asegurarte de que no se les asignen direcciones IP externas a estas VM temporales, debes especificar una marca o argumento adicional.

    Para obtener más información, haz clic en las siguientes pestañas:

gcloud

Usa el comando gcloud compute images import con la marca --no-address para importar el disco virtual.

gcloud compute images import IMAGE_NAME \
    --source-file=SOURCE_FILE \
    --zone=ZONE \
    --no-address

Reemplaza lo siguiente:

  • IMAGE_NAME: El nombre de la imagen de disco que deseas crear.
  • SOURCE_FILE: El archivo del disco virtual. Puede ser un archivo local o un archivo almacenado en Cloud Storage. Si tu disco virtual es un archivo local, puedes proporcionar una ruta absoluta o relativa. Si el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formato gs://BUCKET_NAME/OBJECT_NAME.
  • ZONE: Es la zona en la que se creará la instancia. Si se deja en blanco, se usa la zona predeterminada del proyecto

API

En la API, crea una solicitud POST a la API de Cloud Build y especifica el argumento -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
   "steps":[
     {
       "args":[
         "-image_name=IMAGE_NAME",
         "-source_file=SOURCE_FILE",
         "-zone=ZONE",
         "-no_external_ip",
         "-timeout=7000s",
         "-client_id=api"
       ],
       "name":"gcr.io/compute-image-tools/gce_vm_image_import:release",
       "env":[
         "BUILD_ID=$BUILD_ID"
       ]
     }
   ],
   "timeout":"7200s",
   "tags":[
     "gce-daisy",
     "gce-daisy-image-import"
   ]
 }
 

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que deseas importar la imagen.
  • IMAGE_NAME: Es el nombre de la imagen que se importará.
  • SOURCE_FILE: Es el URI de la imagen en Cloud Storage. Por ejemplo, gs://my-bucket/my-image.vmdk para el comando gcloud compute images import.
  • ZONE: Es la zona en la que se creará la instancia. Si se deja en blanco, se usa la zona predeterminada del proyecto

Importa un disco virtual con un bootloader de UEFI

En la mayoría de los discos virtuales, Compute Engine puede detectar y, luego, importar discos de forma correcta mediante un bootloader de UEFI sin necesidad de una marca adicional.

Sin embargo, para situaciones como las siguientes, es posible que debas forzar un inicio UEFI durante la importación.

  • Si el proceso de importación de imágenes no detecta el bootloader de UEFI durante la importación.
  • Si el disco se puede iniciar en doble lugar y tiene una combinación de: hybrid-mbr + UEFI o protective-mbr + UEFI. Para los discos que se pueden iniciar de forma dual, la importación podría permitir el inicio no perteneciente a la UEFI.

Para forzar una importación a fin de que use el arranque UEFI, puedes usar la API de Cloud Build y especificar el argumento -uefi_compatible. Para hacerlo, sigue los pasos que se indican a continuación:

  1. Agrega el dispositivo virtual a Cloud Storage.

  2. En la API, crea una solicitud POST a la API de Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-uefi_compatible",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-tools/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que deseas importar la imagen.
    • IMAGE_NAME: Es el nombre de la imagen que se importará.
    • SOURCE_FILE: Es el URI de la imagen en Cloud Storage, por ejemplo, gs://my-bucket/my-image.vmdk

Importa un disco virtual mediante una VPC compartida

Antes de importar un disco virtual que usa una VPC compartida, debes agregar la función compute.networkUser a la cuenta de servicio de Cloud Build. Para obtener más información, consulta Otorga funciones necesarias a la cuenta de servicio de Cloud Build.

gcloud

Usa el comando gcloud compute images import para importar el disco virtual.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE \
    --project SERVICE_PROJECT_ID \
    --zone ZONE \
    --network NETWORK \
    --subnet SUBNET

Reemplaza lo siguiente:

  • IMAGE_NAME: El nombre de la imagen que se importará.
  • SOURCE_FILE: El archivo del disco virtual. Puede ser un archivo local o un archivo almacenado en Cloud Storage. Si tu disco virtual es un archivo local, puedes proporcionar una ruta absoluta o relativa. Si el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formato gs://BUCKET_NAME/OBJECT_NAME.
  • SERVICE_PROJECT_ID: El ID del proyecto en el que deseas importar la imagen.
  • ZONE: La zona a la que deseas importar la imagen. Esta zona debe coincidir con la región de la subred. Por ejemplo, si SUBNET es us-west1. La zona de importación debe ser una de las siguientes: us-west1-a, us-west1-b o us-west1-c.
  • NETWORK: La ruta de acceso completa a una red de VPC compartida. Por ejemplo, projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
  • SUBNET: La ruta de acceso completa a una subred de VPC compartida. Por ejemplo, projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.

    Comando de muestra

    gcloud compute images import example-image \
     --source-file gs://source-bucket/source-file.vmdk \
     --project my-image-project \
     --zone us-west1-c \
     --network projects/my-vpc-project/global/networks/my-shared-vpc \
     --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-shared-subnet
    

API

  1. Agrega el disco virtual a Cloud Storage.

  2. En la API, crea una solicitud POST a la API de Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-zone=ZONE",
           "-network=NETWORK",
           "-subnet=SUBNET",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-tools/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Reemplaza los siguientes valores args:

    • SERVICE_PROJECT_ID: El ID del proyecto en el que deseas importar la imagen.
    • IMAGE_NAME: Es el nombre de la imagen que se importará.
    • SOURCE_FILE: El URI para la imagen en Cloud Storage, por ejemplo, gs://my-bucket/my-image.vmdk.
    • ZONE: La zona a la que deseas importar la imagen. Esta zona debe coincidir con la región de la subred. Por ejemplo, si SUBNET es us-west1. La zona de importación debe ser una de las siguientes: us-west1-a, us-west1-b o us-west1-c.
    • NETWORK: La ruta de acceso completa a una red de VPC compartida. Por ejemplo, projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
    • SUBNET: La ruta de acceso completa a una subred de VPC compartida. Por ejemplo, projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.

Importa un disco virtual con una cuenta de servicio personalizada de Compute Engine

Durante una importación de imágenes, se crean instancias de máquina virtual (VM) temporales en tu proyecto. La herramienta de importación de imágenes de estas VM temporales debe autenticarse.

Una cuenta de servicio es una identidad que se adjunta a una VM. Se puede acceder a los tokens de acceso a la cuenta de servicio a través del servidor de metadatos de instancia y usarlos para autenticar la herramienta de importación de imágenes en la VM.

De forma predeterminada, el proceso de importación usa el agente de servicio predeterminado de Compute Engine del proyecto. Sin embargo, si la cuenta de servicio predeterminada de Compute Engine está inhabilitada en tu proyecto o si quieres usar una cuenta de servicio de Compute Engine personalizada, debes crear una cuenta de servicio y especificarla para el proceso de importación.

gcloud

  1. Agrega el disco virtual a Cloud Storage.

  2. Crea una cuenta de servicio y asigna las funciones mínimas. Si deseas obtener más información para crear cuentas de servicio, consulta Crea y administra cuentas de servicio.

    Como mínimo, la cuenta de servicio de Compute Engine especificada debe tener asignadas las siguientes funciones:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Para obtener más información, consulta Otorga funciones necesarias a la cuenta de servicio de Compute Engine.

  3. Usa gcloud compute images import para importar la imagen.

    gcloud compute images import IMAGE_NAME \
      --source-file SOURCE_FILE \
      --compute-service-account SERVICE_ACCOUNT_EMAIL
    

    Reemplaza lo siguiente:

    • IMAGE_NAME: El nombre de la imagen de destino.
    • SOURCE_FILE: El archivo del disco virtual. Este archivo puede ser un archivo local o un archivo almacenado en Cloud Storage. Si tu disco virtual es un archivo local, puedes proporcionar una ruta absoluta o relativa. Si el archivo del disco virtual ya se almacenó en Cloud Storage, debe existir en un bucket de Cloud Storage en el proyecto que se usa para el proceso de importación. Además, debes especificar la ruta de acceso completa en el formato gs://BUCKET_NAME/OBJECT_NAME.
    • SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico asociada con la cuenta de servicio de Compute Engine creada en el paso anterior.

    Ejemplo

    En el siguiente ejemplo, se importa un disco virtual de arranque que se llama my_server.vmdk, almacenado en gs://your_gcs_bucket, mediante una cuenta de servicio que tiene el correo electrónico image-export-service-account@proj-12345.iam.gserviceaccount.com.

    gcloud compute images import my-imported-image \
      --source-file gs://your_gcs_bucket/my_server.vmdk \
      --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
    

API

  1. Agrega el disco virtual a Cloud Storage.

  2. Crea una cuenta de servicio y asigna las funciones mínimas. Si deseas obtener más información para crear cuentas de servicio, consulta Crea y administra cuentas de servicio.

    Como mínimo, la cuenta de servicio de Compute Engine especificada debe tener asignadas las siguientes funciones:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Para obtener más información, consulta Otorga funciones necesarias a la cuenta de servicio de Compute Engine.

  3. Agrega el disco virtual a Cloud Storage.

  4. En la API, crea una solicitud POST a la API de Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "steps":[
     {
       "args":[
         "-image_name=IMAGE_NAME",
         "-source_file=SOURCE_FILE",
         "-compute_service_account=SERVICE_ACCOUNT_EMAIL",
         "-timeout=7000s",
         "-client_id=api"
       ],
       "name":"gcr.io/compute-image-tools/gce_vm_image_import:release",
       "env":[
         "BUILD_ID=$BUILD_ID"
       ]
     }
    ],
    "timeout":"7200s",
    "tags":[
     "gce-daisy",
     "gce-daisy-image-import"
    ]
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que deseas importar la imagen.
    • IMAGE_NAME: Es el nombre de la imagen que se importará.
    • SOURCE_FILE: Es el URI de la imagen en Cloud Storage, por ejemplo, gs://my-bucket/my-image.vmdk
    • SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico asociada con la cuenta de servicio de Compute Engine creada en el paso anterior.

Haz que una imagen se pueda iniciar

Si tienes una imagen personalizada de Compute Engine que contiene un sistema operativo que se puede iniciar, pero que no tiene los controladores o los paquetes de entorno invitado necesarios de Compute Engine, puedes usar la herramienta de importación de imágenes para hacer que la imagen se pueda iniciar en Compute Engine.

Usa la marca --source-image a fin de especificar una imagen personalizada para que se pueda iniciar, en lugar de usar la marca --source-file, que especifica un disco nuevo que se importará.

gcloud compute images import IMAGE_NAME \
    --source-image SOURCE_IMAGE_NAME

Reemplaza lo siguiente:

  • IMAGE_NAME: El nombre de la imagen de destino.
  • SOURCE_IMAGE_NAME: El nombre de la imagen de origen.

    Si deseas obtener instrucciones para importar imágenes con licencias existentes a Google Cloud, consulta Licencias adquiridas por el usuario.

Comando de muestra

En el siguiente ejemplo, se convierte una imagen de Compute Engine llamada my-image en una imagen que se puede iniciar denominada my-bootable-image. En este ejemplo, --os ubuntu-1604 anula el sistema operativo detectado.

gcloud compute images import my-bootable-image \
    --source-image my-image \
    --os ubuntu-1604

Limpia los recursos

Los archivos almacenados en Cloud Storage y las imágenes de Compute Engine generan costos. La herramienta de importación importa el archivo del disco virtual a Cloud Storage y crea una imagen personalizada de Compute Engine.

Una vez que verifiques que la imagen se importó de forma correcta y que se inicia sin problemas como una instancia de Compute Engine, puedes borrar el archivo del disco virtual de Cloud Storage. La herramienta muestra el URI del archivo mientras se sube a Cloud Storage. Este URI tiene el siguiente formato: gs://BUCKET_NAME/tmpimage/IMAGE_NAME.

Si importaste una imagen mediante la marca --data-disk y, luego, ejecutaste la herramienta de import por segunda vez con la marca --source-image para hacer que la imagen se pueda iniciar, la primera imagen seguirá existiendo. Si no la necesitas, puedes borrarla. Si especificas el mismo nombre de imagen para las marcas --image y --source-image, la imagen se reemplaza de forma automática y no se requiere otra limpieza.

Próximos pasos