Um script de inicialização executa tarefas durante o processo de inicialização de uma máquina virtual (VM). Este documento mostra as etapas a serem seguidas para usar scripts de inicialização em instâncias de VM.
Um script de inicialização é uma ferramenta de automação que executa tarefas durante o processo de inicialização da VM. Use scripts de inicialização para automatizar tarefas de configuração e implantação de VMs em instâncias novas ou atuais, economizando tempo e reduzindo o esforço de configuração manual.
Este documento é destinado a desenvolvedores em grupos de administradores de plataforma ou operadores de aplicativos que querem usar scripts de inicialização para VMs em um ambiente do Distributed Cloud. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.
Antes de começar
Para usar comandos da interface de linha de comando (CLI) gdcloud, faça o download, a instalação,
e a configuração da gdcloud CLI.
Todos os comandos do Distributed Cloud usam a CLI gdcloud ou kubectl e exigem um ambiente de sistema operacional (SO).
Receber o caminho do arquivo kubeconfig
Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:
Faça login e gere o arquivo kubeconfig para o servidor da API Management, se você não tiver um.
Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir
MANAGEMENT_API_SERVERnestas instruções.
Solicitar papéis do IAM
Para usar scripts de inicialização em uma VM, entre em contato com o administrador do IAM do projeto para solicitar os seguintes papéis no projeto:
Administrador do projeto de máquina virtual (
project-vm-admin): cria, modifica, lista e exclui VMs no namespace do projeto.Administrador de secrets (
secret-admin): recebe, lista, cria, atualiza, exclui, corrige e monitora secrets do Kubernetes no namespace do projeto. Use esse papel para especificar secrets de script de inicialização. Não é necessário ter esse papel para especificar scripts de inicialização de texto simples.
Todos os papéis de VM precisam ser vinculados ao namespace do projeto em que a VM reside. Siga as etapas para verificar seu acesso.
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. Os 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.
A seguir, mostramos 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 | Ordem de execução |
|---|---|
| Script do PowerShell | Primeiro em cada inicialização. |
| 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.
A especificação de VM de exemplo 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 do script:
| Tamanho do script | Formato do script |
|---|---|
| Scripts de até 2.048 bytes | Texto não criptografado |
| Scripts maiores que 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 não criptografado 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==
Analise as considerações a seguir:
- O script de inicialização é executado em cada inicialização.
- O script de inicialização tem privilégios de raiz padrão.
- No secret do Kubernetes, o nome de
scriptSecretRefnaspecda VM precisa corresponder ao campometadata.name. - No secret do Kubernetes, especifique o conteúdo do script de inicialização adicionando uma chave
scriptao campodata.
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.