Para criar uma VM do Windows no Cloud de Confiance by S3NS, você precisa usar uma imagem de VM que tenha o Windows ou o Windows Server pré-instalado. Cloud de Confiance fornece imagens públicas para versões usados com frequência do Windows Server, mas essas imagens são adequadas apenas para licenciamento sob demanda. Para trazer sua própria licença do Windows (BYOL, na sigla em inglês), é necessário importar uma imagem atual ou criar uma imagem personalizada.
Neste guia, descrevemos como criar uma imagem personalizada usando as mesmas ferramentas e processos que Cloud de Confiance usa para criar as imagens públicas.
Para concluir este guia, você precisa ter:
- Um arquivo ISO que contém a mídia de instalação do Windows ou do Windows Server.
- Opcionalmente, um ou mais pacotes de atualização do Windows (no formato
.msu) para aplicar à imagem.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a Cloud de Confiance by S3NS serviços e APIs do. Para executar
código ou amostras de um ambiente de desenvolvimento local, faça a autenticação no
Compute Engine com uma destas opções:
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o Cloud de Confiance console para acessar Cloud de Confiance by S3NS serviços e APIs, não é necessário configurar a autenticação.
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
Entenda o processo de compilação
Para instalar o Windows do zero, uma abordagem comum é inicializar um computador de um arquivo DVD ou ISO que contenha os arquivos de instalação do Windows. Ao contrário de alguns hipervisores locais, o Compute Engine não permite a inicialização de um arquivo ISO.
Para instalar o Windows do zero, siga uma abordagem diferente que siga estas etapas:
- Criação de um novo disco
- Extraindo a imagem do Windows (
install.wimda mídia de instalação) para o disco. - Adicionar os drivers necessários, configurar o Windows Setup para que ele seja executado sem necessidade e tornar o disco inicializável.
- Inicializar a partir do novo disco para executar a Instalação do Windows.
- Como instalar software adicional, incluindo o agente do SO convidado.
- Como criar uma imagem a partir do disco.
Em vez de realizar essas etapas manualmente, este guia descreve como é possível usar
o Cloud Build, a daisy ferramenta e os
fluxos de trabalho de referência que estão
disponíveis no GitHub
para automatizar o processo.
daisy é uma ferramenta de linha de comando de código aberto
que permite executar fluxos de trabalho. Os fluxos de trabalho são criados como arquivos JSON e contêm uma sequência de etapas. Cada uma delas descreve uma operação do Compute Engine, como a criação de um disco ou o encerramento de uma instância de VM. Portanto, os fluxos de trabalho barulhentos são adequados para automatizar as etapas necessárias para criar uma imagem do Windows do zero.
Os fluxos de trabalho da lei para criar imagens personalizadas do Windows criam duas instâncias de VM temporárias.
A primeira instância de VM (prefixada bootstrap) executa as etapas necessárias para criar um disco inicializável. A segunda instância de VM, prefixada install, executa a Configuração do Windows e executa todas as etapas restantes.
Prepare o projeto para criar imagens
Para evitar que a ferramenta da ferramenta interfira na instância ou na infraestrutura de VM, crie um projeto dedicado para a criação de imagens:
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Compute Engine API, Cloud Build API, and Cloud Storage API APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
As próximas etapas serão diferentes se você usar o Windows ou o Linux no computador local:
Windows
- No computador local, abra uma janela do Windows PowerShell.
Inicialize uma variável:
$PROJECT_ID = "
PROJECT_ID"em que
PROJECT_IDé o ID do projeto do Cloud de Confiance projeto que você criou na seção anterior.Inicialize outra variável para que ela contenha o número do projeto:
$PROJECT_NUMBER = gcloud projects describe $PROJECT_ID --format=value`(projectNumber`)
Linux
- No computador local, abra uma janela de terminal.
Inicialize uma variável:
PROJECT_ID=
PROJECT_IDem que
PROJECT_IDé o ID do projeto do Cloud de Confiance projeto que você criou na seção anterior.Inicialize outra variável para que ela contenha o número do projeto:
PROJECT_NUMBER=`gcloud projects describe $PROJECT_ID --format=value\(projectNumber\)`
Faça upload de arquivos de instalação
Agora você coleta todos os arquivos de instalação necessários para a imagem personalizada e os envia para um bucket do Cloud Storage. Ao armazenar os arquivos em um bucket do Cloud Storage, você garante que os arquivos possam ser acessados por daisy e pelas instâncias de VM temporárias que o daisy usa para criar a imagem.
Nas etapas a seguir, substitua UNIQUE_SUFFIX por uma sequência curta de caracteres aleatórios para criar um nome de bucket exclusivo. Por exemplo, use
PROJECT_ID-media-a7g19. Anexar um sufixo aleatório ao
nome do bucket ajuda a evitar
a ocupação de buckets,
uma vulnerabilidade em que um invasor pode assumir o controle do processo de build
ao reivindicar um bucket com um nome previsível.
No computador local, faça o download dos pacotes de instalação necessários:
Crie um novo bucket do Cloud Storage para armazenar os arquivos de instalação:
gcloud storage buckets create gs://$PROJECT_ID-media-
UNIQUE_SUFFIX--project=$PROJECT_IDConceda o papel Leitor de objetos do Storage ao Cloud Build para que ele possa ler os arquivos de instalação:
gcloud storage buckets add-iam-policy-binding gs://$PROJECT_ID-media-
UNIQUE_SUFFIX--member=serviceAccount:$PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com --role=roles/storage.objectViewerFaça o upload do pacote de instalação do PowerShell:
gcloud storage cp
POWERSHELL_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/PowerShell.msiem que
POWERSHELL_PACKAGEé o caminho para o pacote de instalação do PowerShell.Faça upload do pacote de instalação do .NET Framework:
gcloud storage cp
DOTNET_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/dotnet-sdk.exeem que
DOTNET_PACKAGEé o caminho para o pacote de instalação do NET Framework.Faça upload do pacote de instalação da CLI gcloud:
gcloud storage cp
CLOUDSDK_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/GoogleCloudSDKInstaller.exeem que
CLOUDSDK_PACKAGEé o caminho para o pacote de instalação da CLI gcloud.Faça o upload do arquivo ISO que contém a mídia de instalação do Windows:
gcloud storage cp
ISOgs://$PROJECT_ID-media-UNIQUE_SUFFIX/em que
ISOé o nome do arquivo ISO.Opcionalmente, faça upload de pacotes de atualização adicionais:
gcloud storage cp
UPDATE_DIR/*.msu gs://$PROJECT_ID-media-UNIQUE_SUFFIX/updates/em que
UPDATE_DIRé o diretório que contém os pacotes de atualização.
Agora você está pronto para criar a imagem personalizada.
Criar a imagem
A execução do fluxo de trabalho daisy para criar uma imagem personalizada leva até quatro horas.
Em vez de executar daisy localmente, crie uma configuração do Cloud Build para permitir que o Cloud Build execute o fluxo de trabalho em segundo plano.
No computador local, clone o repositório do Git que contém os fluxos de trabalho
daisypara criar imagens do Windows:git clone https://github.com/GoogleCloudPlatform/compute-image-tools.git
Alterne para o diretório
windows:cd compute-image-tools/daisy_workflows/image_build/windows/
No diretório
windows, você encontra uma seleção de arquivos com o sufixo.wf.json. Esses arquivos contêm definições de fluxo de trabalho Daisy para versões do Windows mais usadas:Versão do Windows Arquivo de fluxo de trabalho Windows Server Core 2022 (64 bits) windows-server-2022-dc-core-uefi-byol.wf.jsonWindows Server 2019 (64 bits) windows-server-2019-dc-uefi-byol.wf.jsonWindows Server Core 2019 (64 bits) windows-server-2019-dc-core-uefi-byol.wf.jsonWindows Server 2016 (64 bits) windows-server-2016-dc-uefi-byol.wf.jsonWindows Server Core 2016 (64 bits) windows-server-2016-dc-core-uefi-byol.wf.jsonWindows 11 21H2 (64 bits) windows-11-21h2-ent-x64-uefi.wf.jsonWindows 11 22H2 (64 bits) windows-11-22h2-ent-x64-uefi.wf.jsonWindows 11 23H2 (64 bits) windows-11-23h2-ent-x64-uefi.wf.jsonWindows 10 21H2 (64 bits) windows-10-21h2-ent-x64-uefi.wf.jsonWindows 10 22H2 (64 bits) windows-10-22h2-ent-x64-uefi.wf.jsonAbra o arquivo de fluxo de trabalho que mais se aproxima da versão do Windows que você quer instalar. Se necessário, altere as configurações do Windows (
edition) e da chave de licença (product_key) nos arquivos de fluxo de trabalho para que correspondam à mídia de instalação.Caso não tenha certeza sobre o nome correto, abra um prompt elevado do PowerShell e execute os seguintes comandos para listar todas as edições compatíveis com sua mídia de instalação:
$IsoFile = "
ISO" $Mount = Mount-DiskImage -ImagePath (Resolve-Path $IsoFile) $DriveLetter = ($Mount | Get-Volume).DriveLetter Get-WindowsImage -ImagePath "$($DriveLetter):\sources\install.wim" | select ImageName Dismount-DiskImage -InputObject $Mount | Out-NullSubstitua
ISOpelo caminho local para a imagem ISO.No diretório
windows, crie um novo arquivo chamadocloudbuild.yamle cole o seguinte código:timeout: 14400s # 4 hour timeout for entire build steps: - name: 'gcr.io/compute-image-tools/daisy' timeout: 14400s # 4 hour timeout for build step waitFor: ['-'] args: - -project=$PROJECT_ID - -zone=us-central1-a - -var:updates=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/updates/ - -var:pwsh=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/PowerShell.msi - -var:dotnet48=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/dotnet-sdk.exe - -var:cloudsdk=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/GoogleCloudSDKInstaller.exe - -var:media=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/ISO-WORKFLOWSubstitua:
ISO: nome do arquivo ISO no Cloud Storage.WORKFLOW: nome do arquivo de fluxo de trabalho que corresponde à versão do Windows que você está usando.
Envie a compilação para o Cloud Build.
gcloud builds submit --project $PROJECT_ID --async
A compilação leva cerca de quatro horas para ser concluída. É possível acompanhar o status da build no Cloud de Confiance console em Cloud Build > Histórico.
Usar a imagem personalizada
Após a conclusão da criação, é possível encontrar a imagem BYOL personalizada no Cloud de Confiance console em Compute Engine > Imagens.
Para ajudar a diferenciar entre várias versões da mesma imagem, o processo de criação incorpora um carimbo de data/hora no nome da imagem, por exemplo, windows-server-2019-dc-v1613488342.
Além disso, o processo associa a imagem a uma família de imagens personalizada, por exemplo, windows-server-2019.
Para criar uma instância de VM que usa a imagem BYOL personalizada, você precisa provisionar a instância de VM em um nó de locatário individual.
Solução de problemas
Se você suspeitar que o processo de compilação falhou ou não progrediu, use as seguintes abordagens para diagnosticar a situação:
- Verifique se você fez upload dos pacotes de instalação e do arquivo ISO corretos.
- Verifique se você selecionou um fluxo de trabalho que corresponde à versão do Windows do arquivo ISO.
- Verifique o registro de criação no Cloud Build e verifique se há mensagens de erro.
- Se a compilação parecer travada, analise a saída da porta serial da instância de VM criada pela compilação e verifique se há mensagens de erro.
A seguir
- Saiba mais sobre a ferramenta Mandale.
- Saiba mais sobre fluxos de trabalho simples para criar imagens.
- Saiba como trazer licenças atuais para o Compute Engine.
- Leia sobre as práticas recomendadas para trabalhar com famílias de imagens.