Usar um script de inicialização em VMs do Windows

Um script de inicialização realiza tarefas durante o processo de inicialização de uma máquina virtual (VM). Nesta página, você encontra as etapas para usar scripts de inicialização em instâncias de VM.

Antes de começar

Para usar os comandos da interface de linha de comando (CLI) gdcloud, verifique se você baixou, instalou e configurou a CLI gdcloud. Todos os comandos do Distributed Cloud usam a CLI gdcloud ou kubectl e exigem um ambiente de sistema operacional (SO).

Extrair o caminho do arquivo kubeconfig

Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:

  1. Faça login e gere o arquivo kubeconfig para o servidor da API Management se você não tiver um.

  2. Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir MANAGEMENT_API_SERVER nestas instruções.

Solicitar permissões e acesso

Para executar as tarefas listadas nesta página, você precisa ter o papel de administrador de máquina virtual do projeto. Siga as etapas para verificar seu acesso ou peça ao administrador do IAM do projeto para atribuir a você o papel de administrador de máquinas virtuais do projeto (project-vm-admin) no namespace do projeto em que a VM está localizada.

Formatar nomes de script de inicialização do Windows

Os scripts de inicialização para VMs do Windows precisam seguir um formato de nomenclatura específico com o nome do script e a extensão do arquivo anexados, separados por traços. Por exemplo, create-directory-ps1, com create-directory como o nome do script e ps1 como a extensão do arquivo. Formatos incorretos incluem o uso de pontos em vez de traços e a omissão da extensão do arquivo, como create-directory.ps1 e create-directory.

Confira abaixo as extensões de arquivo a serem usadas para scripts de inicialização do Windows:

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

Executar scripts de inicialização do Windows em ordem

É possível usar vários scripts de inicialização. O tipo de arquivo que contém o script afeta a ordem de execução de cada script. A tabela a seguir mostra a ordem de execução dos scripts de inicialização do Windows:

Script do Windows Comando a ser executado
Script do PowerShell Primeiro em todas as inicializações.
Script em lote Segundo em cada inicialização.
Script de comando Terceiro em cada inicialização.

Se dois scripts de inicialização tiverem a mesma extensão de arquivo, eles serão executados com base na extensão e no nome do arquivo em ordem alfabética. Por exemplo, se os nomes script de inicialização forem alpha-script-ps1 e beta-script-ps1, alpha-script-ps1 será executado antes de beta-script-ps1.

O exemplo de especificação de VM a seguir mostra a ordem e a estrutura do script de inicialização do Windows 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
...

Transmitir um script de inicialização

O Distributed Cloud executa scripts de inicialização em ordem alfabética, com base no nome de cada script de inicialização.

A tabela a seguir mostra o formato de script a ser usado com base no tamanho dele:

Tamanho do script Formato do script
Scripts de até 2.048 bytes Limpar texto
Scripts com mais de 2.048 bytes Secret do Kubernetes

Definir um script de inicialização

Para usar um script de inicialização, adicione o campo startupScripts ao campo spec da VM. Nesse campo, é possível especificar vários scripts de inicialização como texto simples ou como um secret do Kubernetes.

O exemplo a seguir especifica os scripts de inicialização como texto não criptografado e um secret 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==

Confira as seguintes considerações:

  • O script de inicialização é executado em todas as inicializações.
  • O script de inicialização tem privilégios raiz padrão.
  • No secret do Kubernetes, o nome do scriptSecretRef na VM spec precisa corresponder ao campo metadata.name.
  • No secret do Kubernetes, especifique o conteúdo do script de inicialização adicionando uma chave script ao campo data.

Criar uma VM com um script de inicialização do Windows

Para criar uma VM com um script de inicialização do Windows, siga as etapas em Criar uma VM com um script de inicialização.