Use scripts de arranque em VMs do Windows

Um script de arranque é um ficheiro que executa tarefas durante o processo de arranque de uma instância de máquina virtual (VM). Os scripts de arranque podem aplicar-se a todas as VMs num projeto ou a uma única VM. Os scripts de inicialização especificados pelos metadados ao nível da VM substituem os scripts de inicialização especificados pelos metadados ao nível do projeto, e os scripts de inicialização só são executados quando uma rede está disponível. Este documento descreve como usar scripts de arranque em instâncias de VMs do Windows Server. Para obter informações sobre como adicionar um script de arranque ao nível do projeto, consulte o artigo gcloud compute project-info add-metadata.

Os scripts de arranque do Windows têm de ser scripts de shell de comandos (.cmd), PowerShell (.ps1) ou ficheiros de comandos (.bat) e têm de ter a extensão de ficheiro adequada.

Se especificar um script de arranque através de um dos procedimentos neste documento, o Compute Engine faz o seguinte:

  1. Copia o script de arranque para a VM

  2. O Agendador de tarefas executa o script de arranque como a LocalSystemconta quando a VM é iniciada

Para obter informações sobre as várias tarefas relacionadas com scripts de arranque e quando executar cada uma delas, consulte o documento de vista geral dos scripts de arranque.

Antes de começar

  • Leia a vista geral dos scripts de arranque.
  • Leia acerca das noções básicas dos metadados de VMs.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS 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:

    Console

    When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    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 e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

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

Chaves de metadados para scripts de arranque do Windows

Um script de arranque é transmitido a uma VM a partir de uma localização especificada por uma chave de metadados. Uma chave de metadados especifica se o script de arranque é armazenado localmente, armazenado no Cloud Storage ou transmitido diretamente para a VM. A chave de metadados que usa também pode depender do tamanho ou do tipo de ficheiro do script de arranque.

A tabela seguinte mostra as chaves de metadados que pode usar para scripts de arranque do Windows e fornece informações sobre a chave a usar com base na localização de armazenamento, no tamanho e no tipo de ficheiro do script de arranque.

Chave de metadados Use para
sysprep-specialize-script-ps1 Transmitir um script do PowerShell não assinado que esteja armazenado localmente ou adicionado diretamente e que tenha um tamanho máximo de 256 KB
sysprep-specialize-script-cmd Transmitir um script de shell de comando armazenado localmente ou adicionado diretamente e com um tamanho máximo de 256 KB
sysprep-specialize-script-bat Transmitir um script de ficheiro de lote armazenado localmente ou adicionado diretamente e que tenha um tamanho máximo de 256 KB
sysprep-specialize-script-url Transmitir um ficheiro de lote, uma shell de comandos, um script do PowerShell assinado/não assinado ou um ficheiro executável armazenado no Cloud Storage e com um tamanho superior a 256 KB
windows-startup-script-ps1 Transmitir um script do PowerShell não assinado que esteja armazenado localmente ou adicionado diretamente e que tenha um tamanho máximo de 256 KB
windows-startup-script-cmd Transmitir um script de shell de comando armazenado localmente ou adicionado diretamente e com um tamanho máximo de 256 KB
windows-startup-script-bat Transmitir um script de ficheiro de lote armazenado localmente ou adicionado diretamente e com um tamanho máximo de 256 KB
windows-startup-script-url Transmitir um ficheiro de lote, uma shell de comandos, um script do PowerShell assinado/não assinado ou um ficheiro executável armazenado no Cloud Storage e com um tamanho superior a 256 KB

Para mais informações acerca da ordem de execução dos vários tipos de scripts de inicialização, consulte o repositório GoogleCloudPlatform/compute-image-windows no GitHub.

Ordem de execução dos scripts de arranque do Windows

Pode usar vários scripts de arranque. Os scripts de arranque armazenados localmente ou adicionados são executados diretamente antes dos scripts de arranque armazenados no Cloud Storage. O tipo de ficheiro que contém o script também afeta a ordem de execução. A tabela seguinte mostra, com base na chave de metadados, a ordem de execução dos scripts de arranque do Windows.

Chave de metadados Ordem de execução
sysprep-specialize-script-ps1 Primeiro, durante o arranque inicial
sysprep-specialize-script-cmd Segundos durante o arranque inicial
sysprep-specialize-script-bat Terceiro durante o arranque inicial
sysprep-specialize-script-url Quarto durante o arranque inicial
windows-startup-script-ps1 Primeiro, durante cada arranque após o arranque inicial
windows-startup-script-cmd Segundos durante cada arranque após o arranque inicial
windows-startup-script-bat Terceiro durante cada arranque após o arranque inicial
windows-startup-script-url Quarto durante cada arranque após o arranque inicial

Transmitir um script de arranque do Windows diretamente

Transmita o conteúdo de um ficheiro de comandos, uma shell de comandos ou um script de arranque do PowerShell não assinado diretamente para uma VM do Windows Server. Os procedimentos seguintes mostram como transmitir um script do PowerShell não assinado.

Consola

Transmitir um script de arranque do Windows diretamente a uma nova VM

  1. Na Trusted Cloud consola, aceda à página Criar uma instância.

    Aceda a Criar uma instância

  2. Para Disco de arranque, selecione Alterar e faça o seguinte:

    1. No separador Imagens públicas, escolha um sistema operativo Windows Server.
    2. Clique em Selecionar.
  3. Expanda a secção Opções avançadas e faça o seguinte:

    1. Expanda a secção Gestão.
    2. Na secção Metadados, clique em Adicionar item para definir a Chave e o Valor:

      • Chave: definida como windows-startup-script-ps1.

        Os scripts de arranque transmitidos à VM através de chaves de metadados que começam com windows-startup-script são executados em todos os arranques após o arranque inicial da VM.

      • Valor: adicione o seguinte script:

        # Installing IIS
        Import-Module servermanager
        Install-WindowsFeature Web-Server -IncludeAllSubFeature
        
        # Ensure the directory exists
        if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory}
        
        # Write the expanded string out to the file, overwriting the file if it already exists.
        "<html><body><p>Windows startup script added directly.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
        
  4. Clique em Criar.

Transmitir um script de arranque do Windows diretamente a uma VM existente

  1. Na Trusted Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no Nome da VM.

  3. Clique em Edit.

  4. Em Metadados, especifique o seguinte:

    • key: windows-startup-script-ps1
    • value: o conteúdo do script de arranque

A validar o script de arranque

Depois de iniciar a VM, veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo termine.

gcloud (Bash)

Transmitir um script de arranque do Windows diretamente a uma nova VM

Transmita o conteúdo de um script de arranque diretamente para uma VM do Windows Server quando a criar através do seguinte comando:gcloud compute instances create

gcloud compute instances create VM_NAME \
  --image-project=windows-cloud \
  --image-family=windows-2019-core \
  --metadata=windows-startup-script-ps1='Import-Module servermanager
  Install-WindowsFeature Web-Server -IncludeAllSubFeature
  "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'

Substitua VM_NAME pelo nome da VM.

Transmitir um script de arranque do Windows diretamente a uma VM existente

Adicione o script de arranque diretamente a uma VM existente através do seguinte comando gcloud compute instances add-metadata:

gcloud compute instances add-metadata VM_NAME \
  --image-project=windows-cloud \
  --image-family=windows-2019-core \
  --metadata=windows-startup-script-ps1='Import-Module servermanager
  Install-WindowsFeature Web-Server -IncludeAllSubFeature
  "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'

Substitua VM_NAME pelo nome da VM.

A validar o script de arranque

Depois de iniciar a VM, veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo seja concluído.

gcloud (linha de comandos)

Transmitir um script de arranque do Windows diretamente a uma nova VM

Transmita o conteúdo de um script de arranque diretamente para uma VM do Windows Server quando a criar através do seguinte comando:gcloud compute instances create

gcloud compute instances create VM_NAME ^
  --image-project=windows-cloud ^
  --image-family=windows-2019-core ^
  --metadata=windows-startup-script-ps1='Import-Module servermanager
  Install-WindowsFeature Web-Server -IncludeAllSubFeature
  "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'

Substitua VM_NAME pelo nome da VM.

Transmitir um script de arranque do Windows diretamente a uma VM existente

Adicione o script de arranque diretamente a uma VM existente através do seguinte comando gcloud compute instances add-metadata:

gcloud compute instances add-metadata VM_NAME ^
  --image-project=windows-cloud ^
  --image-family=windows-2019-core ^
  --metadata=windows-startup-script-ps1='Import-Module servermanager
  Install-WindowsFeature Web-Server -IncludeAllSubFeature
  "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'

Substitua VM_NAME pelo nome da VM.

A validar o script de arranque

Depois de iniciar a VM, veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo seja concluído.

gcloud (PowerShell)

Transmitir um script de arranque do Windows diretamente a uma nova VM

Transmita o conteúdo de um script de arranque diretamente para uma VM do Windows Server quando a criar através do seguinte comando:gcloud compute instances create

gcloud compute instances create VM_NAME `
  --image-project=windows-cloud `
  --image-family=windows-2019-core `
  --metadata=windows-startup-script-ps1='Import-Module servermanager
  Install-WindowsFeature Web-Server -IncludeAllSubFeature
  "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'

Substitua VM_NAME pelo nome da VM.

Transmitir um script de arranque do Windows diretamente a uma VM existente

Adicione o script de arranque diretamente a uma VM existente através do seguinte comando gcloud compute instances add-metadata:

gcloud compute instances add-metadata VM_NAME `
  --image-project=windows-cloud `
  --image-family=windows-2019-core `
  --metadata=windows-startup-script-ps1='Import-Module servermanager
  Install-WindowsFeature Web-Server -IncludeAllSubFeature
  "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'

Substitua VM_NAME pelo nome da VM.

A validar o script de arranque

Depois de iniciar a VM, veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo seja concluído.

REST

Transmitir um script de arranque do Windows diretamente a uma nova VM

Transmita o conteúdo de um script de arranque diretamente para uma VM do Windows Server quando a criar através do seguinte método.instances.insert

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  ...
  "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "metadata": {
    "items": [
      {
        "key": "windows-startup-script-ps1",
        "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html"
      }
    ]
  },
  ...
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto.

  • ZONE: a zona na qual criar a VM.

Transmitir um script de arranque do Windows diretamente a uma VM existente

  1. Obtenha o valor metadata.fingerprint da VM através do método instances.get:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto onde a VM existe.

    • ZONE: a zona da VM.

    • VM_NAME: o nome da VM.

  2. Transmita o script de arranque através do valor fingerprint, juntamente com a chave e o valor dos metadados para o script de arranque, numa chamada ao método instances.setMetadata:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
     "fingerprint": FINGERPRINT,
     "items": [
       {
         "key": "windows-startup-script-ps1",
         "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html"
       }
     ],
     ...
    }
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto onde a VM existe.

    • ZONE: a zona da VM.

    • VM_NAME: o nome da VM.

    • FINGERPRINT: o valor metadata.fingerprint obtido através do método instances.get.

A validar o script de arranque

Depois de iniciar a VM, veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo termine.

Transmitir um script de arranque do Windows a partir de um ficheiro local

Pode armazenar um script de arranque num ficheiro de comandos local, num script de shell de comandos ou num script do PowerShell não assinado na sua estação de trabalho e transmitir o ficheiro local como metadados a uma VM quando a cria. Não pode usar ficheiros armazenados em VMs como scripts de arranque.

Antes de transmitir um script de arranque do Windows de um ficheiro local para uma VM, faça o seguinte:

  1. Crie um ficheiro local (.ps1) para armazenar o script de arranque.

  2. Tenha em atenção o caminho relativo da CLI gcloud para o script de arranque.

  3. Adicione o seguinte script de arranque ao ficheiro:

    # Installing IIS
    Import-Module servermanager
    Install-WindowsFeature Web-Server -IncludeAllSubFeature
    
    # Ensure the directory exists
    if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory}
    
    # Write the expanded string out to the file, overwriting the file if it already exists.
    "<html><body><p>Windows startup script passed from a file on your local workstation.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
    

gcloud (Bash)

Transmitir um script de arranque do Windows de um ficheiro local para uma nova VM

Crie uma VM e transmita o conteúdo de um ficheiro local para ser usado como o script de arranque através do comando gcloud compute instances create com a flag --metadata-from-file:

gcloud compute instances create VM_NAME \
  --image-project=windows-cloud \
  --image-family=windows-2019-core \
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Substitua o seguinte:

  • VM_NAME: o nome da VM
  • FILE_PATH: o caminho relativo para o ficheiro de script de arranque
Transmitir um script de arranque do Windows de um ficheiro local para uma VM existente

Transmita um script de arranque a uma VM existente a partir de um ficheiro local através do seguinte gcloud compute instances add-metadata comando:

gcloud compute instances add-metadata VM_NAME \
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Substitua o seguinte:

  • VM_NAME: o nome da VM
  • FILE_PATH: o caminho relativo para o ficheiro de script de arranque
A validar o script de arranque

Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de inicialização de exemplo termine.

gcloud (linha de comandos)

Transmitir um script de arranque do Windows de um ficheiro local para uma nova VM

Crie uma VM e transmita o conteúdo de um ficheiro local para ser usado como o script de arranque através do comando gcloud compute instances create com a flag --metadata-from-file:

gcloud compute instances create VM_NAME ^
  --image-project=windows-cloud ^
  --image-family=windows-2019-core ^
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Substitua o seguinte:

  • VM_NAME: o nome da VM
  • FILE_PATH: o caminho relativo para o ficheiro de script de arranque
Transmitir um script de arranque do Windows de um ficheiro local para uma VM existente

Transmita um script de arranque a uma VM existente a partir de um ficheiro local através do seguinte gcloud compute instances add-metadata comando:

gcloud compute instances add-metadata VM_NAME ^
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Substitua o seguinte:

  • VM_NAME: o nome da VM
  • FILE_PATH: o caminho relativo para o ficheiro de script de arranque
A validar o script de arranque

Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de inicialização de exemplo termine.

gcloud (PowerShell)

Transmitir um script de arranque do Windows de um ficheiro local para uma nova VM

Crie uma VM e transmita o conteúdo de um ficheiro local para ser usado como o script de arranque através do comando gcloud compute instances create com a flag --metadata-from-file:

gcloud compute instances create VM_NAME `
  --image-project=windows-cloud `
  --image-family=windows-2019-core `
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Substitua o seguinte:

  • VM_NAME: o nome da VM
  • FILE_PATH: o caminho relativo para o ficheiro de script de arranque
Transmitir um script de arranque do Windows de um ficheiro local para uma VM existente

Transmita um script de arranque a uma VM existente a partir de um ficheiro local através do seguinte gcloud compute instances add-metadata comando:

gcloud compute instances add-metadata VM_NAME `
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Substitua o seguinte:

  • VM_NAME: o nome da VM
  • FILE_PATH: o caminho relativo para o ficheiro de script de arranque
A validar o script de arranque

Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de inicialização de exemplo termine.

Transmitir um script de arranque do Windows a partir do Cloud Storage

Pode armazenar um script de arranque como um ficheiro de comandos, um script de shell de comandos, um script do PowerShell assinado/não assinado ou um executável no Cloud Storage e transmiti-lo a uma VM quando a criar. Depois de adicionar um script de arranque ao Cloud Storage, tem um URL que pode usar para referenciar o script de arranque quando cria uma VM.

Antes de adicionar um script de arranque a partir de um contentor do Cloud Storage, faça o seguinte:

  1. Crie um ficheiro para armazenar o script de arranque. Este exemplo usa um ficheiro do PowerShell (.ps1).

  2. Adicione o seguinte script do PowerShell ao ficheiro, que instala um servidor Web e cria uma página Web simples:

    # Installing IIS
    Import-Module servermanager
    Install-WindowsFeature Web-Server -IncludeAllSubFeature
    
    # Ensure the directory exists
    if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory}
    
    # Write the expanded string out to the file, overwriting the file if it already exists.
    "<html><body><p>Windows startup script passed from Cloud Storage.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
    
  3. Crie um contentor do Cloud Storage.

  4. Adicione o ficheiro ao contentor do Cloud Storage.

Implicações de segurança

  • Por predefinição, os proprietários e os editores de projetos podem aceder aos ficheiros do Cloud Storage no mesmo projeto, a menos que existam controlos de acesso explícitos que o impeçam.

  • Se o objeto ou o contentor do Cloud Storage for menos seguro do que os metadados, existe um risco de escalada de privilégios se o script de arranque for modificado e a VM for reiniciada. Isto deve-se ao facto de, após o reinício da VM, o script de arranque ser executado como LocalSystem e, em seguida, poder usar as autorizações da conta de serviço anexada para aceder a outros recursos.

Consola

Transmitir um script de arranque armazenado no Cloud Storage a uma nova VM

  1. Na Trusted Cloud consola, aceda à página Criar uma instância.

    Aceda a Criar uma instância

  2. Para Disco de arranque, selecione Alterar e faça o seguinte:

    1. No separador Imagens públicas, escolha um sistema operativo Windows Server.
    2. Clique em Selecionar.
  3. Na secção Identidade e acesso à API, selecione uma conta de serviço que tenha a função Storage Object Viewer.

  4. Expanda a secção Opções avançadas e, de seguida, faça o seguinte:

    1. Expanda a secção Gestão.
    2. Na secção Metadados, adicione valores para o seguinte:

      • Chave: a chave de metadados. Especifique a chave de metadados para que o script seja executado durante cada arranque após o arranque inicial.windows-startup-script-url

      • Valor: o valor dos metadados. Defina a localização do ficheiro de script de arranque no armazenamento na nuvem através de um dos seguintes formatos:

        • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
        • URI do gcloud storage: gs://BUCKET/FILE

        Substitua o seguinte:

        • BUCKET: o nome do contentor que contém o ficheiro do script de arranque
        • FILE: o nome do ficheiro do script de arranque
  5. Para criar a VM, clique em Criar.

Transmitir um script de arranque armazenado no Cloud Storage a uma VM existente

  1. Na Trusted Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no Nome da VM.

  3. Clique em Edit.

  4. Em Metadados, adicione os seguintes valores:

    • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
    • URI do gcloud storage: gs://BUCKET/FILE

A validar o script de arranque

Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos até que o script de início de exemplo termine.

gcloud (Bash)

Transmitir um script de arranque armazenado no Cloud Storage a uma nova VM

Transmita um script de arranque armazenado no Cloud Storage para uma VM do Windows Server através do seguinte gcloud compute instances create. Para o valor da flag --scopes, use storage-ro para que a VM possa aceder ao Cloud Storage.

gcloud compute instances create VM_NAME \
  --image-project=windows-cloud \
  --image-family=windows-2019-core \
  --scopes=storage-ro \
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Substitua o seguinte:

  • VM_NAME: o nome da VM.
  • CLOUD_STORAGE_URL: os valores dos metadados. Defina a localização do ficheiro de script de arranque através de um dos seguintes formatos:
    • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
    • URI do gcloud storage: gs://BUCKET/FILE
Transmitir um script de arranque armazenado no Cloud Storage a uma VM existente

Transmita um script de arranque armazenado no Cloud Storage para uma VM existente através do seguinte gcloud compute instances add-metadata comando:

gcloud compute instances add-metadata VM_NAME \
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Substitua o seguinte:

  • VM_NAME: o nome da VM.
  • CLOUD_STORAGE_URL: os valores dos metadados. Defina a localização do ficheiro de script de arranque através de um dos seguintes formatos:
    • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
    • URI do gcloud storage: gs://BUCKET/FILE
A validar o script de arranque

Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo termine.

gcloud (linha de comandos)

Transmitir um script de arranque armazenado no Cloud Storage a uma nova VM

Transmita um script de arranque armazenado no Cloud Storage para uma VM do Windows Server através do seguinte gcloud compute instances create. Para o valor da flag --scopes, use storage-ro para que a VM possa aceder ao Cloud Storage.

gcloud compute instances create VM_NAME ^
  --image-project=windows-cloud ^
  --image-family=windows-2019-core ^
  --scopes=storage-ro ^
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Substitua o seguinte:

  • VM_NAME: o nome da VM.
  • CLOUD_STORAGE_URL: os valores dos metadados. Defina a localização do ficheiro de script de arranque através de um dos seguintes formatos:
    • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
    • URI do gcloud storage: gs://BUCKET/FILE
Transmitir um script de arranque armazenado no Cloud Storage a uma VM existente

Transmita um script de arranque armazenado no Cloud Storage para uma VM existente através do seguinte gcloud compute instances add-metadata comando:

gcloud compute instances add-metadata VM_NAME ^
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Substitua o seguinte:

  • VM_NAME: o nome da VM.
  • CLOUD_STORAGE_URL: os valores dos metadados. Defina a localização do ficheiro de script de arranque através de um dos seguintes formatos:
    • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
    • URI do gcloud storage: gs://BUCKET/FILE
A validar o script de arranque

Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo termine.

gcloud (PowerShell)

Transmitir um script de arranque armazenado no Cloud Storage a uma nova VM

Transmita um script de arranque armazenado no Cloud Storage para uma VM do Windows Server através do seguinte gcloud compute instances create. Para o valor da flag --scopes, use storage-ro para que a VM possa aceder ao Cloud Storage.

gcloud compute instances create VM_NAME `
  --image-project=windows-cloud `
  --image-family=windows-2019-core `
  --scopes=storage-ro `
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Substitua o seguinte:

  • VM_NAME: o nome da VM.
  • CLOUD_STORAGE_URL: os valores dos metadados. Defina a localização do ficheiro de script de arranque através de um dos seguintes formatos:
    • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
    • URI do gcloud storage: gs://BUCKET/FILE
Transmitir um script de arranque armazenado no Cloud Storage a uma VM existente

Transmita um script de arranque armazenado no Cloud Storage para uma VM existente através do seguinte gcloud compute instances add-metadata comando:

gcloud compute instances add-metadata VM_NAME `
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Substitua o seguinte:

  • VM_NAME: o nome da VM.
  • CLOUD_STORAGE_URL: os valores dos metadados. Defina a localização do ficheiro de script de arranque através de um dos seguintes formatos:
    • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
    • URI do gcloud storage: gs://BUCKET/FILE
A validar o script de arranque

Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo termine.

REST

Transmitir um script de arranque armazenado no Cloud Storage a uma nova VM

Transmita um script de arranque armazenado no Cloud Storage para uma VM do Windows Server através do seguinte instances.insert método. No campo scopes, adicione https://www.googleapis.com/auth/devstorage.read_only para que a VM possa aceder ao Cloud Storage.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  ...
  "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "serviceAccounts": [
    {
      "email": "default",
      "scopes": [
        "https://www.googleapis.com/auth/devstorage.read_only"
      ]
    }
  ],
  "metadata": {
    "items": [
      {
        "key": "windows-startup-script-url",
        "value": "CLOUD_STORAGE_URL"
      },
      ...
    ]
  },
  ...
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto.

  • ZONE: a zona na qual criar a VM.

  • CLOUD_STORAGE_URL: o valor de metadados. Definido para a localização do Cloud Storage do ficheiro de script de arranque com um dos seguintes formatos:

    • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
    • URI do gcloud storage: gs://BUCKET/FILE

Transmitir um script de arranque armazenado no Cloud Storage a uma VM existente

  1. Obtenha o valor metadata.fingerprint da VM através do método instances.get:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto onde a VM existe.

    • ZONE: a zona da VM.

    • VM_NAME: o nome da VM

  2. Transmita o script de arranque através do valor fingerprint, juntamente com a chave e o valor dos metadados para o script de arranque, numa chamada ao método instances.setMetadata:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
      "fingerprint": FINGERPRINT,
      "items": [
        {
            "key": "windows-startup-script-url",
            "value": "CLOUD_STORAGE_URL"
        }
      ],
      ...
    }
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto onde a VM existe.

    • ZONE: a zona da VM.

    • VM_NAME: o nome da VM.

    • FINGERPRINT: o valor metadata.fingerprint obtido através do método instances.get.

    • CLOUD_STORAGE_URL: o valor de metadados. Definido para a localização do Cloud Storage do ficheiro de script de arranque com um dos seguintes formatos:

      • URL autenticado: https://storage.googleapis.com/BUCKET/FILE
      • URI do gcloud storage: gs://BUCKET/FILE

A validar o script de arranque

Veja o IP externo num navegador de Internet para verificar se o script de arranque criou o Website. Pode ter de aguardar cerca de 10 minutos até que o script de início de exemplo termine.

Aceder a metadados a partir de um script de arranque do Windows

Num script de arranque, pode aceder aos valores dos metadados. Por exemplo, pode usar o mesmo script para várias VMs e parametrizar cada script individualmente transmitindo diferentes valores de metadados a cada VM.

Para aceder a um valor de metadados personalizado a partir de um script de arranque, faça o seguinte:

  1. Crie um script de arranque que consulte o valor de uma chave de metadados. Por exemplo, o seguinte script de arranque do PowerShell (.ps1) consulta o valor da chave de metadados foo.

    $METADATA_VALUE = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'} -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo")
    
    # Installing IIS
    Import-Module servermanager
    Install-WindowsFeature Web-Server -IncludeAllSubFeature
    
    # Ensure the directory exists
    if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory}
    
    # Write the expanded string out to the file, overwriting the file if it already exists.
    "<html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
    
  2. Defina o valor da chave de metadados foo quando criar uma VM através do seguinte gcloud compute instances createcomando. Para este exemplo, o script de arranque é transmitido à VM a partir de um ficheiro local.

    gcloud

    gcloud compute instances create VM_NAME \
      --image-project=windows-cloud \
      --image-family=windows-2019 \
      --metadata-from-file=windows-startup-script-ps1=FILE_PATH \
      --metadata=foo=bar
    

    Substitua o seguinte:

    • VM_NAME: o nome da VM

    • FILE_PATH: o caminho relativo para o ficheiro de script de arranque

    Para mais informações sobre como especificar um par chave-valor de metadados, consulte o artigo Defina e remova metadados personalizados.

  3. Veja o IP externo num navegador de Internet para verificar se o script de arranque apresenta o valor de foo. Pode ter de aguardar cerca de 10 minutos para que o script de arranque de exemplo termine.

Voltar a executar um script de arranque do Windows

Volte a executar um script de arranque numa VM do Windows fazendo o seguinte:

  1. A estabelecer ligação à VM.

  2. Executando o seguinte comando:

    C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
    

Ver a saída de um script de arranque do Windows

Veja o resultado de um script de arranque do Windows Server através de qualquer uma das seguintes opções e verifique se existem eventos GCEMetadataScripts:

  • Porta de série 1 na Trusted Cloud consola. Para mais informações, consulte o artigo Ver a saída da porta série.

  • Registo de aplicações do Event Viewer do Windows.

  • IAP Desktop a partir de uma estação de trabalho do Windows. Para mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.

O que se segue?