Neste documento, descrevemos os pré-requisitos para importar e exportar imagens no Compute Engine.
É possível compartilhar instâncias de máquina virtual (VM), arquivos de disco virtual e imagens de máquina de outros ambientes de nuvem ou do ambiente local, importando e exportando imagens do Cloud Storage. A lista de verificação a seguir resume os requisitos que você precisa atender antes de importar e exportar imagens:
- Configurar o acesso a um bucket do Cloud Storage
- Conceda os papéis necessários à sua conta de usuário
- Conceder papéis necessários à conta de serviço do Cloud Build
- Conceder os papéis necessários à conta de serviço do Compute Engine
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Configurar o acesso a um bucket do Cloud Storage
Você precisa ter acesso a um bucket do Cloud Storage que a ferramenta de importação ou exportação pode usar. Se você não tiver um bucket do Cloud Storage, consulte Criar um bucket do Cloud Storage.
Para configurar o acesso ao bucket do Cloud Storage, consulte Conceder papéis necessários à conta e conta de serviço do Compute Engine.
Se você estiver exportando uma imagem, a ferramenta de exportação fará o upload da imagem para o bucket do Cloud Storage.
Se você estiver importando uma imagem, será necessário primeiro fazer o upload dela para o bucket do Cloud Storage. A ferramenta de importação faz o download do arquivo do bucket do Cloud Storage para o Compute Engine e, em seguida, cria uma imagem no Compute Engine desse arquivo de disco.
Conceder os papéis do IAM necessários
A ferramenta de importação e exportação de imagens de VM requer as seguintes contas para executar a operação em nome delas:
- Conta de usuário. A conta da qual você está executando os comandos de importação e exportação.
- Conta de serviço do Cloud Build. Uma conta de serviço padrão do Cloud Build criada quando a ferramenta de importação ou exportação ativa a API Cloud Build.
- Conta de serviço do Compute Engine. Uma conta de serviço padrão ou personalizada do Compute Engine necessária para o fluxo de trabalho de importação e exportação.
Conceda os papéis necessários à sua conta de usuário
Para importar ou exportar imagens, sua conta de usuário requer os seguintes papéis:
- Papel de administrador de armazenamento (
roles/storage.admin
) - Papel de leitor (
roles/viewer
) - Papel de Administrador de projetos do IAM (
roles/resourcemanager.projectIamAdmin
) - Papel de editor do Cloud Build (
roles/cloudbuild.builds.editor
)
Console
Acesse a página IAM e administrador do projeto ou da organização.
Localize sua conta e clique em
Editar.Na lista Selecionar um papel, selecione os seguintes papéis:
- Cloud Storage > Administrador do Storage
- Projeto > Leitor
- Gerente de recursos > Administrador de IAM do projeto
- Cloud Build > Editor do Cloud Build
Salve as alterações.
gcloud
Nas etapas a seguir, use o comando
gcloud projects add-iam-policy-binding
para conceder os
papéis necessários no nível do projeto.
Conceda o papel
roles/storage.admin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/storage.admin'
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud do seu projeto.MEMBER
: a conta que executa os comandos de importação e exportação, por exemplo,user:export-user@gmail.com
Conceda o papel
roles/viewer
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
Conceda o papel
roles/resourcemanager.projectIamAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/resourcemanager.projectIamAdmin'
Conceda o papel
roles/cloudbuild.builds.editor
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/cloudbuild.builds.editor'
REST
Leia a política atual com o respectivo método
getIamPolicy
do recurso. Para projetos, use o métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Substitua
PROJECT_ID
pelo ID do projeto, comomy-project-1
.Para conceder os papéis necessários à sua conta, edite a política com um editor de texto.
Por exemplo, para conceder o papel necessário à sua conta
user:export-user@gmail.com
, adicione a seguinte vinculação à política:{ { "role":"roles/storage.admin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/viewer", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/resourcemanager.projectIamAdmin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/cloudbuild.builds.editor", "member":[ "user:export-user@gmail.com" ] } }
Para gravar a política atualizada, use o método
setIamPolicy
.Por exemplo, para definir uma política no nível do projeto, use o método
project.setIamPolicy
. No corpo da solicitação, forneça a política de IAM atualizada da etapa anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Conceder papéis necessários à conta de serviço do Cloud Build
Quando você usa o Console do Google Cloud ou a CLI gcloud para importar ou exportar imagens pela primeira vez, a ferramenta tenta ativar a API Cloud Build e conceder os papéis necessários a Conta de serviço do Cloud Build.
- Papel Criador de token da conta de serviço
(
roles/iam.serviceAccountTokenCreator
) - Papel usuário da conta de serviço
(
roles/iam.serviceAccountUser
) - Papel Administrador do Compute (
roles/compute.admin
)Para evitar a concessão do papel de administrador do Compute, crie um papel personalizado com as seguintes permissões do IAM do Compute Engine e conceda o papel à Conta de serviço do Cloud Build:
- Papel Usuário de rede do Compute (
roles/compute.networkUser
)Esse papel é necessário somente quando você importa ou exporta imagens que usam a VPC compartilhada.
No projeto de VPC compartilhada, conceda o papel de usuário da rede do Compute à conta de serviço do Cloud Build localizada no projeto em que você importa ou exporta imagens.
No entanto, é possível conceder estes papéis manualmente para garantir que as permissões necessárias estejam aplicadas:
Console
Depois de ativar a API Cloud Build, acesse a página IAM e administrador do projeto ou da organização.
Localize a conta de serviço do Cloud Build e clique em
Editar.Se os papéis necessários não estiverem listados, faça o seguinte:
- Clique em Adicionar outro papel.
Na lista Selecionar um papel, selecione os papéis necessários que você quer adicionar:
- Service Account > Criador de token da conta de serviçor
- Service Account > Usuário da conta de serviço
Compute Engine > Administrador do Compute
Como alternativa, é possível selecionar o papel Personalizado. Consulte Permissões necessárias para o papel personalizado anteriormente neste documento.
Clique em Salvar para armazenar as mudanças.
Opcional: se você estiver importando ou exportando imagens que usam VPC compartilhada, selecione o papel Usuário de rede do Compute no projeto VPC compartilhado:
- No seletor de projetos na parte superior do console, selecione o projeto host da VPC compartilhada.
- Na página IAM e administrador, clique em Conceder acesso.
- No campo Novos principais, insira o endereço de e-mail da conta de serviço do Cloud Build.
PROJECT_NUMBER@cloudbuild.gserviceaccount.com'
SubstituaPROJECT_NUMBER
pelo número exclusivo do projeto em que você importa ou exporta imagens. - Na lista Selecionar um papel, selecione o papel Compute Engine > Usuário da rede do Compute.
- Clique em Salvar para armazenar as mudanças.
gcloud
Nas etapas a seguir, use o comando
gcloud projects add-iam-policy-binding
para conceder os
papéis necessários no nível do projeto.
Conceda o papel
roles/compute.admin
à conta de serviço do Cloud Build. Para evitar conceder o papelroles/compute.admin
, crie um papel personalizado com as permissões necessárias e conceda esse papel à conta de serviço do Cloud Build. Consulte Permissões necessárias para o papel personalizado anteriormente neste documento.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.admin'
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud do seu projeto.PROJECT_NUMBER
: o número do projeto do Google Cloud do projeto;
Conceda o papel
roles/iam.serviceAccountUser
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'
Conceda o papel
roles/iam.serviceAccountTokenCreator
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Opcional: se você estiver exportando ou importando imagens que usam VPCs compartilhadas, conceda o papel
roles/compute.networkUser
:gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.networkUser'
Substitua:
HOST_PROJECT_ID
: o ID do projeto host em que a VPC compartilhada está localizada.PROJECT_NUMBER
: o número exclusivo do projeto em que você importa ou exporta imagens
REST
Leia a política atual com o respectivo método
getIamPolicy
do recurso. Para projetos, use o métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Substitua
PROJECT_ID
pelo ID do projeto, comomy-project-1
.Para conceder os papéis necessários à sua conta, edite a política com um editor de texto.
Por exemplo, para conceder os papéis necessários a
serviceAccount:12345@cloudbuild.gserviceaccount.com
, adicione a seguinte vinculação à política:{ { "role":"roles/compute.admin", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountTokenCreator", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
Para evitar a concessão do papel
roles/compute.admin
, crie um papel personalizado com as permissões necessárias e conceda esse papel à conta de serviço do Cloud Build. Consulte Permissões necessárias para o papel personalizado anteriormente neste documento.Opcional: se você estiver exportando ou importando imagens que usam VPC compartilhada, conceda o papel
roles/compute.networkUser
no projeto de VPC compartilhada.POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
Substitua
HOST_PROJECT_ID
pelo ID do projeto da VPC compartilhada.Adicione a seguinte vinculação do IAM à conta de serviço do Cloud Build:
{ { "roles":"roles/compute.networkUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
Para gravar a política atualizada, use o método
setIamPolicy
.Por exemplo, para definir uma política no nível do projeto, use o método
project.setIamPolicy
. No corpo da solicitação, forneça a política de IAM atualizada da etapa anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Para mais informações sobre como gerenciar o acesso a recursos, consulte Como conceder, alterar e revogar o acesso a recursos.
Conceder os papéis necessários à conta de serviço do Compute Engine
Quando você usa o Console do Google Cloud ou a CLI gcloud para importar
ou exportar imagens pela primeira vez, a ferramenta tenta conceder os papéis
necessários à conta de serviço padrão do Compute Engine.
Por padrão, essa conta tem o papel de Editor do IAM
(roles/editor
) no projeto, o que é suficiente para o processo. Sua
conta de serviço do Compute Engine precisa ter os seguintes papéis:
- Papel de administrador do Compute Storage
(
roles/compute.storageAdmin
): necessário para exportar e importar imagens de VM - Papel de leitor de objetos do Storage
(
roles/storage.objectViewer
): necessário para importar imagens de VM - Papel de administrador de objetos do Storage
(
roles/storage.objectAdmin
): obrigatório para exportar imagens de VM
No entanto, se você modificou os papéis e as permissões padrão da conta de serviço do Compute Engine, verifique se ela ainda tem os papéis necessários.
Console
Acesse a página IAM e administrador do projeto ou da organização.
Localize a conta de serviço do Compute Engine e clique em
Editar.Na lista Selecionar um papel, selecione os seguintes papéis:
- Compute Engine > Administrador do Compute Storage
- Cloud Storage > Visualizador de objetos do Storage
- Cloud Storage > Administrador de objetos do Storage
Salve as alterações.
gcloud
Nas etapas a seguir, use o comando
gcloud projects add-iam-policy-binding
para conceder os
papéis necessários no nível do projeto.
Conceda o papel
roles/compute.storageAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/compute.storageAdmin'
Se você estiver importando uma imagem, conceda o papel
roles/storage.objectViewer
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectViewer'
Se você estiver exportando uma imagem, conceda o papel
roles/storage.objectAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
REST
Leia a política atual com o respectivo método
getIamPolicy
do recurso. Para projetos, use o métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Substitua
PROJECT_ID
pelo ID do projeto, comomy-project-1
.Para conceder os papéis necessários à sua conta, edite a política com um editor de texto.
Por exemplo, para conceder os papéis necessários a
serviceAccount:12345-compute@developer.gserviceaccount.com
para importar uma imagem, adicione a seguinte vinculação à política:{ { "role":"roles/compute.storageAdmin", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } { "roles":"roles/storage.objectViewer", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } }
Para gravar a política atualizada, use o método
setIamPolicy
.Por exemplo, para definir uma política no nível do projeto, use o método
project.setIamPolicy
. No corpo da solicitação, forneça a política de IAM atualizada da etapa anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Se você não quiser usar a conta de serviço padrão do Compute Engine,
especifique uma conta de serviço gerenciada pelo usuário
usando a sinalização --compute-service-account
nos comandos gcloud
importar e exportar. Para mais informações sobre como usar a conta de serviço
personalizada do Compute Engine, consulte os seguintes recursos:
- Como importar discos virtuais com contas de serviço personalizadas
- Como importar dispositivos virtuais com contas de serviço personalizadas
- Como importar imagens de máquina de dispositivos virtuais com contas de serviço personalizadas
- Como exportar imagens personalizadas com contas de serviço personalizadas
A seguir
- Exportar imagens personalizadas para o Cloud Storage.
- Compartilhe suas imagens entre projetos.
- Escolha um método de importação.
- Como importar discos virtuais
- Importação de dispositivos virtuais
- Como importar imagens de máquina a partir de dispositivos virtuais