Importe imagens de máquinas a partir de dispositivos virtuais

Use uma imagem da máquina para armazenar todos os metadados, dados, configurações e autorizações de um ou mais discos para uma instância de VM em execução no Compute Engine. Para obter informações sobre quando e como usar imagens de máquinas, consulte o artigo Imagens de máquinas.

Este documento descreve os passos para importar uma imagem da máquina a partir de um dispositivo virtual.

Antes de começar

  • Se o projeto no qual quer importar a imagem da máquina tiver uma política de imagens fidedignas definida, adicione projects/compute-image-import e projects/compute-image-tools à lista de autorizações de publicadores.
  • Se estiver a importar um dispositivo virtual de um projeto diferente, consulte o artigo Importar entre projetos.
  • Reveja os requisitos de ficheiros OVF e VMs de origem no guia de importação de dispositivos virtuais do Compute Engine.
  • Para saber como cumprir os requisitos antes de importar imagens de máquinas, consulte os Pré-requisitos para importar e exportar imagens de VMs.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Limitações e restrições

  • Pode partilhar uma imagem de máquina entre projetos. No entanto, as redes de VPC partilhadas não são suportadas.
  • Esta funcionalidade não é suportada para projetos protegidos com os VPC Service Controls.
  • Não é possível criar imagens de máquinas a partir de VMs de origem com mais de 200 TB de discos anexados.

Sistemas operativos compatíveis

Para ver o apoio técnico a sistemas operativos, consulte os detalhes do sistema operativo.

Importe imagens de máquinas

Pode importar imagens de máquinas de dispositivos virtuais através da CLI do Google Cloud ou da API Cloud Build.

gcloud

Use o comando gcloud compute machine-images import para importar uma imagem da máquina de dispositivos virtuais.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

Substitua o seguinte:

  • MACHINE_IMAGE_NAME: nome da imagem da máquina que quer importar.
  • SOURCE_URI: caminho para o ficheiro OVA ou OVF no Cloud Storage.
  • OS: sistema operativo do ficheiro OVA. Esta flag é opcional por predefinição, mas pode ser necessária em alguns casos. Recomendamos que forneça esta flag.

Exemplo

Por exemplo, pode usar o seguinte comando gcloud para importar uma imagem de máquina denominada my-machine-image a partir de um ficheiro OVA de origem denominado my-ova que está armazenado no diretório gs://my-bucket e executa o centos-7:

gcloud compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

REST

  1. Carregue o dispositivo virtual para o Cloud Storage.

  2. Envie um pedido POST para o método projects.builds.create.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-machine-image-name=MACHINE_IMAGE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    Substitua o seguinte:

    • PROJECT_ID: ID do projeto no qual quer importar o ficheiro OVA.
    • MACHINE_IMAGE_NAME: nome da imagem da máquina a importar. Por exemplo, my-machine-image.
    • SOURCE_URI: URI do ficheiro OVA ou de um diretório que contenha pacotes OVF armazenados no Cloud Storage. Por exemplo, gs://my-bucket/my-instance.ova.
    • OS: sistema operativo do ficheiro OVA. Por exemplo, ubuntu-1604. Esta flag é opcional por predefinição, mas pode ser necessária em alguns casos. Recomendamos que forneça esta flag.

    Para ver valores args adicionais que podem ser fornecidos, consulte a secção de flags opcionais da página do GitHub sobre a importação de OVF do Compute Engine.

Importe imagens de máquinas com substituições de OVF

Quando importa uma imagem de máquina de um dispositivo virtual, pode substituir as definições no ficheiro OVF. Por exemplo, pode alterar a configuração da CPU ou da memória, ou usar uma rede personalizada.

CPU e memória personalizadas

Para substituir a configuração de CPU ou memória especificada no ficheiro OVF, conclua os seguintes passos:

gcloud

Para substituir a configuração de CPU ou memória especificada no ficheiro OVF, siga os passos da CLI Google Cloud para importar uma imagem da máquina e especifique os flags --custom-cpu e --custom-memory.

Exemplo

Uma imagem de máquina denominada my-machine-image tem as seguintes substituições aplicadas às definições no ficheiro OVF:

  • Sistema operativo: Ubuntu 1404
  • CPU: 2 CPUs
  • Memória: 2048 MB

Para importar my-machine-image com estas substituições, execute o seguinte comando:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

REST

Para substituir a configuração de CPU ou memória especificada no ficheiro OVF, siga os passos da API Compute Engine para importar uma imagem da máquina e especifique o argumento -machine-type. Este -machine-type representa um tipo de máquina predefinido ou personalizado da série N1 a usar.

Exemplo

Uma imagem de máquina denominada my-machine-image no projeto my-project tem as seguintes substituições aplicadas às definições no ficheiro OVF:

  • Sistema operativo: Ubuntu 1404
  • CPU: 2 CPUs
  • Memória: 2048 MB

Para importar my-machine-image com estas substituições, faça o seguinte pedido à API Cloud Build.

POST https://cloudbuild.googleapis.com/v1/projects/my-project/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Redes personalizadas

Para substituir a configuração de rede especificada no ficheiro OVF, conclua os seguintes passos:

gcloud

Para configurar uma rede personalizada, siga os passos da CLI Google Cloud para importar uma imagem da máquina e especifique uma sinalização --network. Se a rede estiver configurada com um modo de sub-rede personalizado, também tem de especificar as flags --subnet e --zone.

Exemplo

Uma imagem de máquina denominada my-machine-image tem as seguintes substituições aplicadas às definições no ficheiro OVF:

  • Sistema operativo: Ubuntu 1404
  • Rede: custom-vpc-network
  • Sub-rede: company-vpc-us-east1-c
  • Zona: us-east1-c

Para importar my-machine-image com estas substituições, execute o seguinte comando de exemplo:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network=custom-vpc-network \
    --subnet=company-vpc-us-east1-c \
    --zone=us-east1-c

REST

Para usar uma rede personalizada, siga os passos REST para importar uma imagem de máquina e especifique um argumento -network. Se a rede estiver configurada com um modo de sub-rede personalizado, também tem de especificar os argumentos -subnet e -zone.

Exemplo

Uma imagem de máquina denominada my-machine-image tem as seguintes substituições aplicadas às definições no ficheiro OVF:

  • Sistema operativo: Ubuntu 1404
  • Rede: custom-vpc-network
  • Sub-rede: company-vpc-us-east1-c
  • Zona: us-central1-c

Para importar my-machine-image com estas substituições, faça o seguinte pedido à API Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Substitua PROJECT_ID pelo ID do seu projeto.

Importe uma imagem de máquina numa rede que não permita o IP externo

Para importar uma imagem da máquina através de uma rede que não permite endereços IP externos, conclua os seguintes passos:

  1. Adicione o dispositivo virtual ao Cloud Storage.

  2. O processo de importação requer que os gestores de pacotes sejam instalados no sistema operativo da imagem da máquina. Estes gestores de pacotes podem ter de fazer pedidos a repositórios de pacotes que estão fora Google Cloud. Para permitir o acesso a estas atualizações, tem de configurar o NAT da nuvem. Para mais informações, consulte o artigo Crie uma configuração de NAT com o Cloud Router.

  3. Configure o acesso privado do Google. Para mais informações, consulte o artigo Configurar o acesso privado à Google.

  4. Importe a imagem da máquina através da CLI Google Cloud ou da API Cloud Build.

    Quando importa uma imagem de máquina de um dispositivo virtual, são criadas VMs temporárias no seu projeto. Para garantir que a estas VMs temporárias não são atribuídos endereços IP externos, tem de especificar uma flag ou um argumento adicional.

    Para mais informações sobre o argumento ou a flag obrigatória, clique nos separadores seguintes:

gcloud

Use o comando gcloud compute machine-images import com a flag --no-address .

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

Substitua o seguinte:

  • MACHINE_IMAGE_NAME: nome da imagem da máquina que quer importar.
  • SOURCE_URI: URI do ficheiro OVA ou OVF no Cloud Storage. Por exemplo, gs://my-bucket/Ubuntu.ova.
  • OS: sistema operativo do ficheiro OVA. Esta flag é opcional por predefinição, mas pode ser necessária em alguns casos. Recomendamos que forneça esta flag. Para ver uma lista dos valores suportados, consulte as opções da flag --os para o comando gcloud compute machine-images import.
  • ZONE: a zona na qual importar a imagem da máquina. Se deixar em branco, é usada a zona predefinida para o projeto.

REST

Envie um pedido POST para o método projects.builds.create usando a API Cloud Build. Especifique o argumento -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto no qual quer importar a imagem da máquina.
  • MACHINE_IMAGE_NAME: o nome da imagem da máquina a importar. Por exemplo, my-machine-image.
  • SOURCE_URI: o URI do ficheiro OVA que está armazenado no Cloud Storage. Por exemplo, gs://my-bucket/my-machine.ova.
  • OS: o sistema operativo do ficheiro OVA. Por exemplo, ubuntu-1604. Esta flag é opcional por predefinição, mas pode ser necessária em alguns casos. Recomendamos que forneça esta flag. Para ver uma lista dos valores suportados, consulte as opções da flag --os para o comando gcloud compute instances import.
  • ZONE: a zona na qual importar a imagem da máquina.

Importe uma imagem de máquina com contas de serviço personalizadas

Durante uma importação de imagens da máquina, são criadas instâncias de máquinas virtuais (VMs) temporárias no seu projeto. A ferramenta de importação nestas VMs temporárias tem de ser autenticada.

Uma conta de serviço é uma identidade que está associada a uma VM. Pode aceder às chaves de acesso da conta de serviço através do servidor de metadados da VM e usá-las para autenticar a ferramenta de importação na VM.

Por predefinição, o processo de importação usa a conta de serviço do Compute Engine predefinida. No entanto, se a conta de serviço predefinida do Compute Engine estiver desativada no seu projeto ou se quiser usar uma conta de serviço personalizada do Compute Engine, tem de criar uma conta de serviço e especificá-la para o processo de importação.

gcloud

  1. Adicione o dispositivo virtual ao Cloud Storage.

  2. Crie uma conta de serviço e atribua as funções mínimas. Para mais informações sobre como criar contas de serviço, consulte Criar e gerir contas de serviço.

    No mínimo, a conta de serviço do Compute Engine especificada tem de ter as seguintes funções atribuídas:

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

    Estas funções mínimas são necessárias para a conta de serviço especificada na flag --compute-service-account. Para mais informações, consulte o artigo Conceda as funções necessárias à conta de serviço do Compute Engine.

  3. Use o comando gcloud compute machine-images import para importar uma imagem da máquina de dispositivos virtuais.

    gcloud compute machine-images import MACHINE_IMAGE_NAME \
        --source-uri=gs:SOURCE_URI \
        --os=OS \
        --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --scopes=SCOPES
    

    Substitua o seguinte:

    • MACHINE_IMAGE_NAME: nome da imagem da máquina que quer importar.
    • SOURCE_URI: caminho para o ficheiro OVA ou OVF no Cloud Storage.
    • OS: sistema operativo do ficheiro OVA. Esta flag é opcional por predefinição, mas pode ser necessária em alguns casos. Recomendamos que forneça esta flag.
    • TEMP_SERVICE_ACCOUNT_EMAIL: o endereço de email associado à conta de serviço personalizada criada no passo anterior. Esta conta de serviço é usada pelas VMs temporárias. Se não for especificado, a VM usa a conta de serviço predefinida do Compute Engine.
    • SERVICE_ACCOUNT_EMAIL: o endereço de email associado à conta de serviço personalizada que vai ser anexada a qualquer VM criada a partir desta imagem da máquina. Não existem restrições de autorizações para esta conta de serviço. Pode personalizá-la conforme necessário. Se não for especificado, a conta de serviço predefinida do Compute Engine é anexada à VM.
    • SCOPES: especifique o nível de acesso para a opção --service-account. Se não for especificado, são usados os âmbitos predefinidos. Para mais informações, reveja a flag de --scopes.

REST

  1. Adicione o dispositivo virtual ao Cloud Storage.

  2. Crie uma conta de serviço e atribua as funções mínimas. Para mais informações sobre como criar contas de serviço, consulte o artigo Crie contas de serviço.

    No mínimo, a conta de serviço do Compute Engine especificada tem de ter as seguintes funções atribuídas:

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

    Estas funções mínimas são necessárias para a conta de serviço especificada para o argumento -compute-service-account. Para mais informações, consulte o artigo Conceda as funções necessárias à conta de serviço do Compute Engine.

  3. Envie um pedido POST para o métodoprojects.builds.create através da API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "timeout":"7200s",
    "steps":[
      {
        "args":[
          "-machine-image-name=MACHINE_IMAGE_NAME",
          "-ovf-gcs-path=SOURCE_URI",
          "-os=OS",
          "-zone=ZONE",
          "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
          "-service-account=SERVICE_ACCOUNT_EMAIL",
          "-client-id=api",
          "-timeout=7000s"
        ],
        "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
        "env":[
          "BUILD_ID=$BUILD_ID"
        ]
      }
    ],
    "tags":"gce-ovf-machine-image-import"
    }
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto no qual quer importar a imagem da máquina.
    • MACHINE_IMAGE_NAME: o nome da imagem da máquina a importar. Por exemplo, my-machine-image.
    • SOURCE_URI: o URI do ficheiro OVA que está armazenado no Cloud Storage. Por exemplo, gs://my-bucket/my-machine.ova.
    • OS: o sistema operativo do ficheiro OVA. Por exemplo, ubuntu-1604. Esta flag é opcional por predefinição, mas pode ser necessária em alguns casos. Recomendamos que forneça esta flag. Para ver uma lista dos valores suportados, consulte as opções da flag --os para o comando gcloud compute instances import.
    • ZONE: a zona na qual importar a imagem da máquina.
    • TEMP_SERVICE_ACCOUNT_EMAIL: o endereço de email associado à conta de serviço personalizada criada no passo anterior. Esta conta de serviço é usada pelas VMs temporárias. Se não for especificado, a VM usa a conta de serviço predefinida do Compute Engine.
    • SERVICE_ACCOUNT_EMAIL: o endereço de email associado à conta de serviço personalizada que vai ser anexada a qualquer VM criada a partir desta imagem da máquina. Não existem restrições de autorizações para esta conta de serviço. Pode personalizá-la conforme necessário. Se não for especificado, a conta de serviço predefinida do Compute Engine é anexada à VM.
    • SCOPES: especifique o nível de acesso para a opção --service-account. Se não for especificado, são usados os âmbitos predefinidos. Para mais informações, reveja a flag de --scopes.

O que se segue?