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). Este documento fornece os passos a seguir para usar scripts de arranque em instâncias de VM.

Um script de arranque é uma ferramenta de automatização que executa tarefas durante o processo de arranque da VM. Use scripts de arranque para automatizar tarefas de configuração e implementação de VMs em instâncias novas ou existentes, poupando tempo e reduzindo o esforço de configuração manual.

Este documento destina-se a programadores em grupos de administrador da plataforma ou operador de aplicações que querem usar scripts de arranque para VMs num ambiente de nuvem distribuída. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.

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 funções de IAM

Para usar scripts de arranque para uma VM, contacte o administrador do IAM do projeto para pedir as seguintes funções no seu projeto:

  • Administrador do projeto da máquina virtual (project-vm-admin): criar, modificar, listar e eliminar VMs no espaço de nomes do projeto.

  • Administrador de segredos (secret-admin): obter, listar, criar, atualizar, eliminar, aplicar patch e monitorizar segredos do Kubernetes no espaço de nomes do projeto. Use esta função para especificar segredos de scripts de arranque. Não precisa desta função para especificar scripts de início em texto simples.

Todas as funções de VMs têm de ser associadas ao espaço de nomes do projeto onde a VM reside. Siga os passos para validar o seu acesso.

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 traços. 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 travessões 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 em 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 Segundo em cada arranque.
Script de comandos 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 da 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 simples 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.