Use um script de arranque em VMs do Windows

Um script de arranque executa tarefas durante o processo de arranque de uma máquina virtual (VM). Esta página fornece os passos a seguir para usar scripts de arranque em instâncias de VM.

Antes de começar

Para usar os comandos da gdcloud interface de linhas de comando (CLI), certifique-se de que transferiu, instalou e configurou a CLI gdcloud. Todos os comandos para a nuvem distribuída usam a CLI gdcloud ou kubectl e requerem um ambiente de sistema operativo (SO).

Obtenha o caminho do ficheiro kubeconfig

Para executar comandos no servidor da API Management, certifique-se de que tem os seguintes recursos:

  1. Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.

  2. Use o caminho para o ficheiro kubeconfig do servidor da API de gestão para substituir MANAGEMENT_API_SERVER nestas instruções.

Peça autorizações e acesso

Para realizar as tarefas indicadas nesta página, tem de ter a função de administrador da máquina virtual do projeto. Siga os passos para validar o seu acesso ou peça ao administrador de IAM do projeto que lhe atribua a função de administrador de máquinas virtuais do projeto (project-vm-admin) no espaço de nomes do projeto onde a VM reside.

Formate os nomes dos scripts de arranque do Windows

Os scripts de arranque para VMs do Windows têm de seguir um formato de nomenclatura específico com o nome do script e a extensão do ficheiro anexados, separados por travessões. Por exemplo, create-directory-ps1, com create-directory como nome do script e ps1 como extensão do ficheiro. Os formatos incorretos incluem a utilização de pontos em vez de traços e a omissão da extensão do ficheiro, como create-directory.ps1 e create-directory.

Seguem-se as extensões de ficheiros a usar para scripts de arranque do Windows:

  • ps1: Contém comandos do PowerShell.
  • cmd: contém comandos de lote para o intérprete de linha de comandos.
  • bat: contém comandos em lote.

Execute scripts de arranque do Windows por ordem

Pode usar vários scripts de arranque. O tipo de ficheiro que contém o script afeta a ordem de execução de cada script. A tabela seguinte mostra a ordem de execução dos scripts de arranque do Windows:

Script do Windows Ordem de execução
Script do PowerShell Primeiro em cada arranque.
Script de lote Segundos em cada arranque.
Script de comando Terceiro em cada arranque.

Se dois scripts de arranque tiverem a mesma extensão de ficheiro, os scripts são executados com base na extensão de ficheiro e no nome por ordem alfabética. Por exemplo, se os nomes dos scripts de inicialização forem alpha-script-ps1 e beta-script-ps1, o script alpha-script-ps1 é executado antes do script beta-script-ps1.

A especificação de VM de exemplo seguinte mostra a ordem do script de arranque do Windows e a estrutura no campo startupScripts:

...
  startupScripts:
  - name: create-directory-ps1
    script: |-
      New-Item -ItemType Directory -Path C:\ -Name NewDir
      Get-ChildItem -Path C:\
  - name: hello-world-bat
    script: |-
      ECHO "Hello World!"
  - name: list-directories-cmd
    script: |-
      dir C:\Windows  > files.txt
...

Transmita um script de arranque

O Distributed Cloud executa scripts de arranque por ordem alfabética, com base no nome de cada script de arranque.

A tabela seguinte mostra o formato do guião a usar com base no tamanho do guião:

Tamanho do script Formato de script
Scripts até 2048 bytes Limpar texto
Scripts com mais de 2048 bytes Segredo do Kubernetes

Defina um script de arranque

Para usar um script de arranque, tem de adicionar o campo startupScripts ao campo spec da VM. Neste campo, pode especificar vários scripts de arranque como texto simples ou como um segredo do Kubernetes.

O exemplo seguinte especifica os scripts de arranque como texto não cifrado e um segredo do Kubernetes:

apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
  name: "vm-test"
spec:
  ...
  startupScripts:
  - name: create-directory-ps1
    script: |-
      New-Item -ItemType Directory -Path C:\ -Name NewDir
      Get-ChildItem -Path C:\
  - name: list-directories-cmd
    scriptSecretRef:
      name: list-directories
---

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: list-directories
data: 
  script:
    ZGlyIEM6XFdpbmRvd3MgID4gZmlsZXMudHh0Cg==

Reveja as seguintes considerações:

  • O script de arranque é executado sempre que o sistema é iniciado.
  • O script de arranque tem privilégios de raiz predefinidos.
  • No segredo do Kubernetes, o nome do scriptSecretRef na VM spec tem de corresponder ao campo metadata.name.
  • No secret do Kubernetes, especifique o conteúdo do guião de arranque adicionando uma chave script ao campo data.

Crie uma nova VM com um script de arranque do Windows

Para criar uma VM com um script de arranque do Windows, siga os passos em Crie uma nova VM com um script de arranque.