Una secuencia de comandos de inicio realiza tareas durante el proceso de inicio de una máquina virtual (VM). En esta página, se proporcionan los pasos que debes seguir para usar secuencias de comandos de inicio en instancias de VM.
Antes de comenzar
Para usar los comandos de la interfaz de línea de comandos (CLI) de gdcloud
, asegúrate de haber descargado, instalado y configurado la CLI de gdcloud
.
Todos los comandos para el dispositivo aislado de GDC usan la CLI de gdcloud
o kubectl
, y requieren un entorno de sistema operativo (SO).
Obtén la ruta de acceso del archivo kubeconfig
Para ejecutar comandos en el servidor de la API de Management, asegúrate de tener los siguientes recursos:
Ubica el nombre del servidor de la API de Management o pregúntale a tu administrador de la plataforma (PA) cuál es el nombre del servidor.
Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.
Usa la ruta de acceso para reemplazar
MANAGEMENT_API_SERVER{"</var>"}}
en estas instrucciones.
Solicita permisos y acceso
Para realizar las tareas que se indican en esta página, debes tener el rol de administrador de la VM del proyecto. Sigue los pasos para verificar tu acceso o para que el administrador de IAM del proyecto te asigne el rol de administrador de máquinas virtuales del proyecto (project-vm-admin
) en el espacio de nombres del proyecto en el que reside la VM.
Formatea los nombres de las secuencias de comandos de inicio de Windows
Las secuencias de comandos de inicio para las VMs de Windows deben seguir un formato de nomenclatura específico con el nombre de la secuencia de comandos y la extensión de archivo anexados, separados por guiones. Por ejemplo, create-directory-ps1
, con create-directory
como nombre de la secuencia de comandos y ps1
como extensión de archivo. Los formatos incorrectos 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 de Símbolo del sistema.bat
: Contiene comandos por lotes.
Ejecuta las secuencias de comandos de inicio de Windows en orden
Puedes usar múltiples secuencias de comandos de inicio. El tipo de archivo que contiene la secuencia de comandos afecta el orden en que se ejecuta cada secuencia de comandos. En la siguiente tabla, se muestra el orden de ejecución de las secuencias de comandos de inicio de Windows:
Secuencia de comandos de Windows | Orden de ejecución |
---|---|
Secuencia de comandos de PowerShell | Primero en cada inicio. |
Secuencia de comandos por lotes | Segundo en cada inicio |
Secuencia de comandos | Tercero en cada inicio |
Si dos secuencias de comandos de inicio tienen la misma extensión de archivo, se ejecutan según 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 de beta-script-ps1
.
En la siguiente especificación de VM de ejemplo, se muestran 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
...
Pasa una secuencia de comandos de inicio
El dispositivo aislado de GDC 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 secuencia de comandos que debes usar según el tamaño de tu secuencia de comandos:
Tamaño del script | Formato de secuencia de comandos |
---|---|
Secuencias de comandos de hasta 2,048 bytes | Borrar texto |
Secuencias de comandos de más de 2,048 bytes | Secret de Kubernetes |
Define una secuencia de comandos de inicio
Para usar una secuencia de comandos de inicio, debes agregar el campo startupScripts
al campo spec
de la VM. En este campo, puedes especificar varias secuencias de comandos de inicio como texto sin formato o como un secreto de Kubernetes.
En el siguiente ejemplo, se especifican las secuencias de comandos de inicio como texto sin encriptar 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==
Revisa las siguientes consideraciones:
- La secuencia de comandos de inicio se ejecuta en cada inicio.
- La secuencia de comandos de inicio tiene privilegios de raíz predeterminados.
- En el secreto de Kubernetes, el nombre de
scriptSecretRef
en la VMspec
debe coincidir con el campometadata.name
. - En el secreto de Kubernetes, especifica el contenido de la secuencia de comandos de inicio agregando una clave
script
al campodata
.
Crea una VM nueva 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 Crea una VM nueva con una secuencia de comandos de inicio.