Una secuencia de comandos de inicio realiza tareas durante el proceso de inicio de una máquina virtual (VM). En esta página se indican los pasos que debes seguir para usar secuencias de comandos de inicio en instancias de VM.
Antes de empezar
Para usar los comandos de la gdcloud
interfaz de línea de comandos (CLI), asegúrate de haber descargado, instalado y configurado la gdcloud
CLI.
Todos los comandos de Distributed Cloud usan la CLI gdcloud
o kubectl
y requieren un entorno de sistema operativo.
Obtener la ruta del archivo kubeconfig
Para ejecutar comandos en el servidor de la API Management, asegúrate de tener los siguientes recursos:
Inicia sesión y genera el archivo kubeconfig del servidor de la API Management si no tienes uno.
Usa la ruta al archivo kubeconfig del servidor de la API Management para sustituir
MANAGEMENT_API_SERVER
en estas instrucciones.
Solicitar permisos y acceso
Para realizar las tareas que se indican en esta página, debes tener el rol de administrador de máquinas virtuales de proyecto. Sigue los pasos para verificar tu acceso o pide al administrador de gestión de identidades y accesos de proyectos que te asigne el rol Administrador de máquinas virtuales de proyectos (project-vm-admin
) en el espacio de nombres del proyecto en el que se encuentra la VM.
Formatear nombres de secuencias de comandos de inicio de Windows
Los scripts de inicio de las VMs Windows deben seguir un formato de nomenclatura específico con el nombre del script y la extensión del archivo añadidos, separados por guiones. Por ejemplo, create-directory-ps1
, donde create-directory
es el nombre de la secuencia de comandos y ps1
es la extensión del archivo. Entre los formatos incorrectos se incluyen el uso de puntos en lugar de guiones y la omisión de la extensión del archivo, como create-directory.ps1
y create-directory
.
A continuación, se muestran las extensiones de archivo que se deben usar para las secuencias de comandos de inicio de Windows:
ps1
: contiene comandos de PowerShell.cmd
: contiene comandos por lotes para el intérprete del símbolo del sistema.bat
: contiene comandos por lotes.
Ejecutar secuencias de comandos de inicio de Windows en orden
Puedes usar varias secuencias de comandos de inicio. El tipo de archivo que contiene la secuencia de comandos influye en el orden en el que se ejecuta cada secuencia de comandos. En la siguiente tabla se muestra el orden en el que se ejecutan las secuencias de comandos de inicio de Windows:
Script de Windows | Orden de ejecución |
---|---|
Secuencia de comandos de PowerShell | Se ejecuta en cada arranque. |
Secuencia de comandos por lotes | Segundo en cada arranque. |
Secuencia de comandos | Tercero en cada arranque. |
Si dos secuencias de comandos de inicio tienen la misma extensión de archivo, se ejecutan en función de la extensión y el nombre del archivo en orden alfabético. Por ejemplo, si los nombres de tus secuencias de comandos de inicio son alpha-script-ps1
y beta-script-ps1
, alpha-script-ps1
se ejecuta antes que beta-script-ps1
.
En la siguiente especificación de VM se muestra el orden y la estructura de la secuencia de comandos de inicio de Windows en el 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
...
Transferir una secuencia de comandos de inicio
Distributed Cloud ejecuta las secuencias de comandos de inicio en orden alfabético, según el nombre de cada secuencia de comandos de inicio.
En la siguiente tabla se muestra el formato de guion que debes usar en función de su tamaño:
Tamaño de la secuencia de comandos | Formato de secuencia de comandos |
---|---|
Scripts de hasta 2048 bytes | Borrar texto |
Scripts de más de 2048 bytes | Secreto de Kubernetes |
Definir una secuencia de comandos de inicio
Para usar una secuencia de comandos de inicio, debes añadir el campo startupScripts
al campo spec
de la máquina virtual. En este campo, puede especificar varias secuencias de comandos de inicio como texto sin formato o como secreto de Kubernetes.
En el siguiente ejemplo se especifican las secuencias de comandos de inicio como texto sin cifrar y un secreto de 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==
Tenga en cuenta lo siguiente:
- La secuencia de comandos de inicio se ejecuta en cada arranque.
- La secuencia de comandos de inicio tiene privilegios de superusuario predeterminados.
- En el secreto de Kubernetes, el nombre de
scriptSecretRef
de la VMspec
debe coincidir con el campometadata.name
. - En el secreto de Kubernetes, especifica el contenido del script de inicio añadiendo una clave
script
al campodata
.
Crear una VM con una secuencia de comandos de inicio de Windows
Para crear una VM con una secuencia de comandos de inicio de Windows, sigue los pasos que se indican en Crear una VM con una secuencia de comandos de inicio.