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:
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_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 VMspec
precisa corresponder ao campometadata.name
. - No secret do Kubernetes, especifique o conteúdo do script de inicialização adicionando uma chave
script
ao 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.