Importe imagens de máquinas de dispositivos virtuais


Use uma imagem de máquina para armazenar todas as configurações, metadados, permissões e dados 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áquina, consulte Imagens de máquina .

Este documento descreve as etapas para importar uma imagem de máquina de um dispositivo virtual .

Antes de começar

Limitações e restrições

  • Você pode compartilhar uma imagem de máquina entre projetos. No entanto, as redes VPC compartilhadas não são compatíveis.
  • Este recurso não é compatível com projetos protegidos pelo VPC Service Controls .
  • As imagens de máquina não podem ser criadas a partir de VMs de origem que tenham mais de 200 TB de discos anexados.

Sistemas operacionais suportados

Para obter suporte ao sistema operacional, consulte Detalhes do sistema operacional .

Importar imagens de máquinas

Você pode importar imagens de máquina de dispositivos virtuais usando a CLI do Google Cloud ou a API Cloud Build .

gcloud

Use o comando gcloud compute machine-images import para importar uma imagem de 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 deseja importar.
  • SOURCE_URI : caminho para seu arquivo OVA ou OVF no Cloud Storage.
  • OS : sistema operacional do arquivo OVA. Este sinalizador é opcional por padrão, mas pode ser obrigatório em alguns casos. Recomendamos que você forneça esse sinalizador.

Exemplo

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

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

DESCANSAR

  1. Faça upload do dispositivo virtual para o Cloud Storage .

  2. Envie uma solicitação 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 para o qual você deseja importar o arquivo OVA.
    • MACHINE_IMAGE_NAME : nome da imagem da máquina a ser importada. Por exemplo, my-machine-image .
    • SOURCE_URI : URI do arquivo OVA ou de um diretório que contém pacotes OVF armazenados no Cloud Storage. Por exemplo, gs://my-bucket/my-instance.ova .
    • OS : sistema operacional do arquivo OVA. Por exemplo, ubuntu-1604 . Este sinalizador é opcional por padrão, mas pode ser obrigatório em alguns casos. Recomendamos que você forneça esse sinalizador.

    Para valores args adicionais que podem ser fornecidos, consulte a seção de sinalizadores opcionais da página de importação do OVF do Compute Engine no GitHub .

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

Ao importar uma imagem de máquina de um dispositivo virtual, você pode substituir as configurações no arquivo OVF. Por exemplo, você 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 arquivo OVF, conclua as etapas a seguir:

gcloud

Para substituir a configuração de CPU ou memória especificada no arquivo OVF, siga as etapas da CLI do Google Cloud para importar uma imagem de máquina e especificar os sinalizadores --custom-cpu e --custom-memory .

Exemplo

Uma imagem de máquina chamada my-machine-image tem as seguintes substituições aplicadas às configurações do arquivo OVF:

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

Para importar my-machine-image com essas 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

DESCANSAR

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

Exemplo

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

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

Para importar my-machine-image com essas substituições, faça a solicitação a seguir à 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 arquivo OVF, conclua as etapas a seguir:

gcloud

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

Exemplo

Uma imagem de máquina chamada my-machine-image tem as seguintes substituições aplicadas às configurações do arquivo OVF:

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

Para importar my-machine-image com essas 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

DESCANSAR

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

Exemplo

Uma imagem de máquina chamada my-machine-image tem as seguintes substituições aplicadas às configurações do arquivo OVF:

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

Para importar my-machine-image com essas modificações, faça a solicitação a seguir à 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 dentro de uma rede que não permite IP externo

Para importar uma imagem de máquina usando uma rede que não permite endereços IP externos, execute as seguintes etapas:

  1. Adicione o dispositivo virtual ao Cloud Storage .

  2. O processo de importação requer que os gerenciadores de pacotes sejam instalados no sistema operacional da imagem da máquina. Esses gerenciadores de pacotes podem precisar fazer solicitações a repositórios de pacotes que estão fora Google Cloud. Para permitir o acesso a essas atualizações, você precisa configurar o Cloud NAT. Para obter mais informações, consulte Criar uma configuração NAT usando o Cloud Router .

  3. Configurar o acesso privado do Google . Para obter mais informações, consulte Configurando o acesso privado do Google .

  4. Importe a imagem da máquina usando a CLI do Google Cloud ou a API Cloud Build.

    Ao importar uma imagem de máquina de um dispositivo virtual, VMs temporárias são criadas no seu projeto. Para garantir que essas VMs temporárias não recebam endereços IP externos, você deve especificar um sinalizador ou argumento adicional.

    Para obter mais informações sobre o sinalizador ou argumento necessário, clique nas seguintes guias:

gcloud

Use o comando gcloud compute machine-images import com a sinalização --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 deseja importar.
  • SOURCE_URI : URI do arquivo OVA ou OVF no Cloud Storage. Por exemplo, gs://my-bucket/Ubuntu.ova .
  • OS : sistema operacional do arquivo OVA. Este sinalizador é opcional por padrão, mas pode ser obrigatório em alguns casos. Recomendamos que você forneça esse sinalizador. Para obter uma lista de valores compatíveis, consulte opções de sinalização --os para o comando gcloud compute machine-images import .
  • ZONE : a zona na qual importar a imagem da máquina. Se deixado em branco, será usada a zona padrão do projeto.

DESCANSAR

Envie uma solicitação 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 para o qual você deseja importar a imagem da máquina.
  • MACHINE_IMAGE_NAME : o nome da imagem de máquina a ser importada. Por exemplo, my-machine-image .
  • SOURCE_URI : o URI do arquivo OVA armazenado no Cloud Storage. Por exemplo, gs://my-bucket/my-machine.ova .
  • OS : o sistema operacional do arquivo OVA. Por exemplo, ubuntu-1604 . Este sinalizador é opcional por padrão, mas pode ser obrigatório em alguns casos. Recomendamos que você forneça esse sinalizador. Para obter uma lista de valores compatíveis, consulte opções de sinalização --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 usando contas de serviço personalizadas

Durante uma importação de imagem de máquina, instâncias temporárias de máquina virtual (VM) são criadas em seu projeto. A ferramenta de importação nessas VMs temporárias deve ser autenticada.

Uma conta de serviço é uma identidade anexada a uma VM. Os tokens de acesso à conta de serviço podem ser acessados ​​por meio do servidor de metadados da VM e usados ​​para autenticar a ferramenta de importação na VM.

Por padrão, o processo de importação usa a conta de serviço padrão do Compute Engine . No entanto, se a conta de serviço padrão do Compute Engine estiver desativada no seu projeto ou se você quiser usar uma conta de serviço personalizada do Compute Engine, será necessário 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 os papéis mínimos. Para obter mais informações sobre como criar contas de serviço, consulte Criação e gerenciamento de contas de serviço .

    No mínimo, a conta de serviço especificada do Compute Engine precisa ter os seguintes papéis atribuídos:

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

    Essas funções mínimas são necessárias para a conta de serviço especificada para a sinalização --compute-service-account . Para mais informações, consulte Conceder papéis necessários à conta de serviço do Compute Engine .

  3. Use o comando gcloud compute machine-images import para importar uma imagem de 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 deseja importar.
    • SOURCE_URI : caminho para seu arquivo OVA ou OVF no Cloud Storage.
    • OS : sistema operacional do arquivo OVA. Este sinalizador é opcional por padrão, mas pode ser obrigatório em alguns casos. Recomendamos que você forneça esse sinalizador.
    • TEMP_SERVICE_ACCOUNT_EMAIL : o endereço de e-mail associado à conta de serviço personalizada criada na etapa anterior. Esta conta de serviço é usada pelas VMs temporárias. Se não for especificado, a VM usará a conta de serviço padrão do Compute Engine.
    • SERVICE_ACCOUNT_EMAIL : o endereço de e-mail associado à conta de serviço personalizada que será anexada a qualquer VM criada a partir desta imagem de máquina. Não há restrições de permissão para esta conta de serviço. Você pode personalizá-la conforme necessário. Se não for especificado, a conta de serviço padrão do Compute Engine será anexada à VM.
    • SCOPES : especifique o nível de acesso para a opção --service-account . Se não for especificado, os escopos padrão serão usados. Para obter mais informações, revise o sinalizador --scopes .

DESCANSAR

  1. Adicione o dispositivo virtual ao Cloud Storage .

  2. Crie uma conta de serviço e atribua os papéis mínimos. Para obter mais informações sobre como criar contas de serviço, consulte Criar contas de serviço .

    No mínimo, a conta de serviço especificada do Compute Engine precisa ter os seguintes papéis atribuídos:

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

    Essas 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 Conceder papéis necessários à conta de serviço do Compute Engine .

  3. Envie uma solicitação POST para o método projects.builds.create usando a 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 para o qual você deseja importar a imagem da máquina.
    • MACHINE_IMAGE_NAME : o nome da imagem de máquina a ser importada. Por exemplo, my-machine-image .
    • SOURCE_URI : o URI do arquivo OVA armazenado no Cloud Storage. Por exemplo, gs://my-bucket/my-machine.ova .
    • OS : o sistema operacional do arquivo OVA. Por exemplo, ubuntu-1604 . Este sinalizador é opcional por padrão, mas pode ser obrigatório em alguns casos. Recomendamos que você forneça esse sinalizador. Para obter uma lista de valores compatíveis, consulte opções de sinalização --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 e-mail associado à conta de serviço personalizada criada na etapa anterior. Esta conta de serviço é usada pelas VMs temporárias. Se não for especificado, a VM usará a conta de serviço padrão do Compute Engine.
    • SERVICE_ACCOUNT_EMAIL : o endereço de e-mail associado à conta de serviço personalizada que será anexada a qualquer VM criada a partir desta imagem de máquina. Não há restrições de permissão para esta conta de serviço. Você pode personalizá-la conforme necessário. Se não for especificado, a conta de serviço padrão do Compute Engine será anexada à VM.
    • SCOPES : especifique o nível de acesso para a opção --service-account . Se não for especificado, os escopos padrão serão usados. Para obter mais informações, revise o sinalizador --scopes .

O que vem a seguir?