Una secuencia de comandos de inicio es un archivo que realiza tareas durante el proceso de inicio de una instancia de máquina virtual (VM). Las secuencias de comandos de inicio se pueden aplicar a todas las VM de un proyecto o a una sola VM. Las secuencias de comandos de inicio especificadas en los metadatos a nivel de VM anulan las secuencias de comandos de inicio que se especifican en los metadatos a nivel de proyecto, y estas solo se ejecutan cuando hay una red disponible. En este documento, se describe cómo usar secuencias de comandos de inicio en instancias de VM de Windows Server. Si deseas obtener información para agregar una secuencia de comandos de inicio a nivel de proyecto, consulta gcloud compute project-info add-metadata
.
Las secuencias de comandos de inicio de Windows deben ser secuencias de comandos de shell (.cmd
), PowerShell (.ps1
) o archivos por lotes (.bat
), y deben tener la extensión de archivo adecuada.
Si especificas una secuencia de comandos de inicio con uno de los procedimientos de este documento, Compute Engine hace lo siguiente:
Copia la secuencia de comandos de inicio en la VM.
El programador de tareas ejecuta la secuencia de comandos de inicio como la cuenta
LocalSystem
cuando se inicia la VM.
Para obtener información sobre las diversas tareas relacionadas con las secuencias de comandos de inicio y cuándo realizar cada una, consulta el documento de descripción general de las secuencias de comandos de inicio.
Antes de comenzar
- Lee la descripción general de las secuencias de comandos de inicio.
- Lee sobre los conceptos básicos de los metadatos de VM.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las APIs de Google Cloud .
Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
-
Claves de metadatos para secuencias de comandos de inicio de Windows
Se pasa una secuencia de comandos de inicio a una VM desde una ubicación que se especifica mediante una clave de metadatos. Una clave de metadatos especifica si la secuencia de comandos de inicio se almacena de forma local, en Cloud Storage o si se pasa directamente a la VM. La clave de metadatos que usas también puede depender del tamaño o el tipo de archivo de la secuencia de comandos de inicio.
En la siguiente tabla, se muestran las claves de metadatos que puedes usar para las secuencias de comandos de inicio de Windows y se proporciona información sobre qué clave usar según la ubicación de almacenamiento, el tamaño y el tipo de archivo de la secuencia de comandos de inicio.
Clave de metadatos | Usos para |
---|---|
sysprep-specialize-script-ps1 |
Pasa una secuencia de comandos de PowerShell sin firma que se almacena de forma local o se agrega directamente y tiene un tamaño máximo de 256 KB. |
sysprep-specialize-script-cmd |
Pasa una secuencia de comandos de shell que se almacena de forma local o se agrega directamente y tiene un tamaño de hasta 256 KB. |
sysprep-specialize-script-bat |
Pasa una secuencia de comandos de archivo por lotes que se almacena de forma local o se agrega directamente y tiene un tamaño de hasta 256 KB. |
sysprep-specialize-script-url |
Pasar un archivo por lotes, una shell de comandos, una secuencia de comandos de PowerShell firmada o sin firmar o un ejecutable que se almacene en Cloud Storage y tenga un tamaño superior a 256 KB |
windows-startup-script-ps1 |
Pasa una secuencia de comandos de PowerShell sin firma que se almacena de forma local o se agrega directamente y tiene un tamaño máximo de 256 KB. |
windows-startup-script-cmd |
Pasa una secuencia de comandos de shell que se almacena de forma local o se agrega directamente y tiene un tamaño de hasta 256 KB. |
windows-startup-script-bat |
Pasa una secuencia de comandos de archivo por lotes que se almacena de forma local o se agrega directamente y tiene un tamaño de hasta 256 KB. |
windows-startup-script-url |
Pasar un archivo por lotes, una shell de comandos, una secuencia de comandos de PowerShell firmada o sin firmar o un ejecutable que se almacene en Cloud Storage y tenga un tamaño superior a 256 KB |
Para obtener más información sobre el orden de ejecución de los distintos tipos de secuencias de comandos de inicio, consulta el repositorio GoogleCloudPlatform/compute-image-windows en GitHub.
Orden de ejecución de las secuencias de comandos de inicio de Windows
Puedes usar múltiples secuencias de comandos de inicio. Las secuencias de comandos de inicio almacenadas de forma local o agregadas directamente se ejecutan antes que las secuencias de comandos de inicio almacenadas en Cloud Storage. El tipo de archivo que contiene la secuencia de comandos también afecta el orden de ejecución. En la siguiente tabla, se muestra, en función de la clave de metadatos, el orden de ejecución de las secuencias de comandos de inicio de Windows.
Clave de metadatos | Orden de ejecución |
---|---|
sysprep-specialize-script-ps1 |
Primero durante el primer inicio |
sysprep-specialize-script-cmd |
Segundo durante el primer inicio |
sysprep-specialize-script-bat |
Tercero durante el primer inicio |
sysprep-specialize-script-url |
Cuarto durante el primer inicio |
windows-startup-script-ps1 |
Primero durante cada inicio después del primer inicio |
windows-startup-script-cmd |
Segundo durante cada inicio después del primer inicio |
windows-startup-script-bat |
Tercero durante cada inicio después del primer inicio |
windows-startup-script-url |
Cuarto durante cada inicio después del primer inicio |
Pasa una secuencia de comandos de inicio de Windows directamente
Permisos necesarios para esta tarea
Para hacer esta tarea, debes tener los siguientes permisos:
- Todos los permisos necesarios para crear una VM nueva
-
compute.instances.setMetadata
en la VM
Pasa el contenido de un archivo por lotes, una shell de comandos o una secuencia de comandos de inicio de PowerShell sin firmar directamente a una VM de Windows Server. En los siguientes procedimientos, se muestra cómo pasar una secuencia de comandos de PowerShell sin firma.
Pasar una secuencia de comandos de inicio de Windows directamente a una VM nueva
En la consola de Google Cloud, ve a la página Crear una instancia.
En Disco de arranque, elige Cambiar y haz lo siguiente:
- En la pestaña Imágenes públicas, elige un sistema operativo de Windows Server.
- Haz clic en Seleccionar.
Expande la sección Opciones avanzadas y haz lo siguiente:
- Expande la sección Administración.
En la sección Metadatos, haz clic en Agregar elemento para configurar la Clave y la Valor:
Clave: Configurada como
windows-startup-script-ps1
.Las secuencias de comandos de inicio que se pasan a la VM mediante claves de metadatos que comienzan con
windows-startup-script
se ejecutan en cada inicio después del primer inicio de la VM.Value: Agrega la siguiente secuencia de comandos:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script added directly.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Haz clic en Crear.
Pasa una secuencia de comandos de inicio de Windows directamente a una VM existente
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en el nombre de la VM.
Haz clic en Editar.
En Metadatos, especifique los siguientes datos:
key
:windows-startup-script-ps1
value
: El contenido de la secuencia de comandos de inicio
Verifica la secuencia de comandos de inicio
Después de que se inicie la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio haya creado el sitio web. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Transferir una secuencia de comandos de inicio de Windows directamente a una VM nueva
Pasa el contenido de una secuencia de comandos de inicio directamente a una VM de Windows Server cuando la crees. Para ello, usa el siguiente comando gcloud compute
instances create
:
gcloud compute instances createVM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Reemplaza VM_NAME por el nombre de la VM.
Pasa una secuencia de comandos de inicio de Windows directamente a una VM existente
Agrega la secuencia de comandos de inicio directamente a una VM existente con el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Reemplaza VM_NAME por el nombre de la VM.
Verifica la secuencia de comandos de inicioDespués de que se inicie la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio haya creado el sitio web. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Transferir una secuencia de comandos de inicio de Windows directamente a una VM nueva
Pasa el contenido de una secuencia de comandos de inicio directamente a una VM de Windows Server cuando la crees. Para ello, usa el siguiente comando gcloud compute
instances create
:
gcloud compute instances createVM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Reemplaza VM_NAME por el nombre de la VM.
Pasa una secuencia de comandos de inicio de Windows directamente a una VM existente
Agrega la secuencia de comandos de inicio directamente a una VM existente con el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Reemplaza VM_NAME por el nombre de la VM.
Verifica la secuencia de comandos de inicioDespués de que se inicie la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio haya creado el sitio web. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Transferir una secuencia de comandos de inicio de Windows directamente a una VM nueva
Pasa el contenido de una secuencia de comandos de inicio directamente a una VM de Windows Server cuando la crees. Para ello, usa el siguiente comando gcloud compute
instances create
:
gcloud compute instances createVM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Reemplaza VM_NAME por el nombre de la VM.
Pasa una secuencia de comandos de inicio de Windows directamente a una VM existente
Agrega la secuencia de comandos de inicio directamente a una VM existente con el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Reemplaza VM_NAME por el nombre de la VM.
Verifica la secuencia de comandos de inicioDespués de que se inicie la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio haya creado el sitio web. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Pasar una secuencia de comandos de inicio de Windows directamente a una VM nueva
Pasa el contenido de una secuencia de comandos de inicio directamente a una VM de Windows Server cuando la crees. Para ello, usa el siguiente método instances.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE /instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "metadata": { "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ] }, ... }
Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto
ZONE: Es la zona en la que se creará la VM.
Pasa una secuencia de comandos de inicio de Windows directamente a una VM existente
Obtén el valor
tags.fingerprint
de la VM mediante el métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /instances/VM_NAME Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto
ZONE: La zona de la VM
VM_NAME: La zona de la VM
Pasa la secuencia de comandos de inicio con el valor
fingerprint
, junto con el valor y la clave de metadatos de la secuencia de comandos de inicio, en una llamada al métodoinstances.setMetadata
:POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /instances/VM_NAME /setMetadata { "fingerprint":FINGERPRINT , "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ], ... }Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto
ZONE: La zona de la VM
VM_NAME: La zona de la VM
FINGERPRINT: el valor
tags.fingerprint
obtenido mediante el métodoinstances.get
Verifica la secuencia de comandos de inicio
Después de que se inicie la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio haya creado el sitio web. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Pasa una secuencia de comandos de inicio de Windows desde un archivo local
Permisos necesarios para esta tarea
Para hacer esta tarea, debes tener los siguientes permisos:
- Todos los permisos necesarios para crear una VM nueva
-
compute.instances.setMetadata
en la VM
Puedes almacenar una secuencia de comandos de inicio en un archivo por lotes local, una secuencia de comandos de shell o una secuencia de comandos de PowerShell sin firmar en tu estación de trabajo y pasar el archivo local como metadatos a una VM cuando la crees. No puedes usar archivos almacenados en VM como secuencias de comandos de inicio.
Antes de pasar una secuencia de comandos de inicio de Windows desde un archivo local a una VM, haz lo siguiente:
Crea un archivo local (
.ps1
) para almacenar la secuencia de comandos de inicio.Ten en cuenta la ruta de acceso relativa de la CLI de gcloud a la secuencia de comandos de inicio.
Agrega la siguiente secuencia de comandos de inicio al archivo:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from a file on your local workstation.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Transferir una secuencia de comandos de inicio de Windows desde un archivo local a una VM nueva
Crea una VM y pasa el contenido de un archivo local que se usará como secuencia de comandos de inicio mediante el comando gcloud compute instances create
con la marca --metadata-from-file
:
gcloud compute instances createVM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- FILE_PATH: La ruta de acceso relativa al archivo de secuencia de comandos de inicio
Pasa una secuencia de comandos de inicio a una VM existente desde un archivo local con el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- FILE_PATH: La ruta de acceso relativa al archivo de secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio haya creado el sitio web. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Transferir una secuencia de comandos de inicio de Windows desde un archivo local a una VM nueva
Crea una VM y pasa el contenido de un archivo local que se usará como secuencia de comandos de inicio mediante el comando gcloud compute instances create
con la marca --metadata-from-file
:
gcloud compute instances createVM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- FILE_PATH: La ruta de acceso relativa al archivo de secuencia de comandos de inicio
Pasa una secuencia de comandos de inicio a una VM existente desde un archivo local con el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- FILE_PATH: La ruta de acceso relativa al archivo de secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio haya creado el sitio web. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Transferir una secuencia de comandos de inicio de Windows desde un archivo local a una VM nueva
Crea una VM y pasa el contenido de un archivo local que se usará como secuencia de comandos de inicio mediante el comando gcloud compute instances create
con la marca --metadata-from-file
:
gcloud compute instances createVM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- FILE_PATH: La ruta de acceso relativa al archivo de secuencia de comandos de inicio
Pasa una secuencia de comandos de inicio a una VM existente desde un archivo local con el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
- FILE_PATH: La ruta de acceso relativa al archivo de secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio haya creado el sitio web. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Pasa una secuencia de comandos de inicio de Windows desde Cloud Storage
Permisos necesarios para esta tarea
Para hacer esta tarea, debes tener los siguientes permisos:
- Todos los permisos necesarios para crear una VM nueva
-
compute.instances.setMetadata
en la VM - Permiso para acceder al bucket y al archivo de secuencia de comandos en Cloud Storage. Comprueba la configuración de control de acceso en el bucket y en el archivo para asegurarte de tener permiso.
Puedes almacenar una secuencia de comandos de inicio como un archivo por lotes, una secuencia de comandos de shell de comandos, una secuencia de comandos de PowerShell firmada o sin firmar o un ejecutable en Cloud Storage y pasarla a una VM cuando la crees. Después de agregar una secuencia de comandos de inicio a Cloud Storage, tendrás una URL que puedes usar para hacer referencia a la secuencia de comandos de inicio cuando crees una VM.
Antes de agregar una secuencia de comandos de inicio desde un bucket de Cloud Storage, haz lo siguiente:
Crea un archivo para almacenar la secuencia de comandos de inicio. En este ejemplo, se usa un archivo PowerShell (
.ps1
).Agrega la siguiente secuencia de comandos de PowerShell al archivo, que instala un servidor web y crea una página web simple:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from Cloud Storage.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Implicaciones de seguridad
De forma predeterminada, los propietarios y editores del proyecto pueden acceder a los archivos de Cloud Storage en el mismo proyecto, a menos que haya controles de acceso explícitos que no lo permitan.
Si el objeto o bucket de Cloud Storage es menos seguro que los metadatos, existe el riesgo de una elevación de privilegios si se modifica la secuencia de comandos de inicio y la VM se reinicia. Esto se debe a que, después de reiniciar la VM, la secuencia de comandos de inicio se ejecuta como
LocalSystem
y puede usar los permisos de la cuenta de servicio conectada para acceder a otros recursos.
Pasa una secuencia de comandos de inicio almacenada en Cloud Storage a una VM nueva
En la consola de Google Cloud, ve a la página Crear una instancia.
En Disco de arranque, elige Cambiar y haz lo siguiente:
- En la pestaña Imágenes públicas, elige un sistema operativo de Windows Server.
- Haz clic en Seleccionar.
En la sección Identidad y acceso a la API, selecciona una cuenta de servicio que tenga el rol Visualizador de objetos de Storage.
Expande la sección Opciones avanzadas y sigue estos pasos:
- Expande la sección Administración.
En la sección Metadatos, agrega valores para lo siguiente:
Clave: Es la clave de metadatos. Especifica la clave de metadatos
windows-startup-script-url
para que la secuencia de comandos se ejecute durante cada inicio después del primer inicio.Valor: El valor de los metadatos. Configúralo en la ubicación de Cloud Storage del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/BUCKET/FILE
- URI de almacenamiento de gcloud:
gs://BUCKET/FILE
Reemplaza lo siguiente:
- BUCKET: Es el nombre del bucket que contiene el archivo de la secuencia de comandos de inicio
- FILE: Es el nombre del archivo de secuencia de comandos de inicio
- URL autenticada
Para crear la VM, haz clic en Crear.
Pasar una secuencia de comandos de inicio que se almacena en Cloud Storage a una VM existente
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en el nombre de la VM.
Haz clic en Editar.
En Metadatos, agrega los siguientes valores:
- URL autenticada
https://storage.googleapis.com/BUCKET/FILE
- URI de almacenamiento de gcloud:
gs://BUCKET/FILE
- URL autenticada
Verifica la secuencia de comandos de inicio
Visualiza la IP externa en un navegador web para verificar que la secuencia de comandos de inicio creó el sitio web. Es posible que debas esperar alrededor de 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Pasar una secuencia de comandos de inicio que se almacena en Cloud Storage a una VM nueva
Pasa una secuencia de comandos de inicio almacenada en Cloud Storage a una VM de Windows Server con el siguiente comando gcloud compute instances create
. Para el valor de la marca --scopes
, usa storage-ro
a fin de que la VM pueda acceder a Cloud Storage.
gcloud compute instances createVM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --scopes=storage-ro \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
-
CLOUD_STORAGE_URL: Son los valores de metadatos. Se establece en la ubicación del archivo de secuencia de comandos de inicio mediante uno de los siguientes formatos:
-
URL autenticada
https://storage.googleapis.com/BUCKET/FILE
-
URI de almacenamiento de gcloud:
gs://BUCKET/FILE
-
URL autenticada
Pasa una secuencia de comandos de inicio que se almacena en Cloud Storage a una VM existente mediante el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
-
CLOUD_STORAGE_URL: Son los valores de metadatos. Se establece en la ubicación del archivo de secuencia de comandos de inicio mediante uno de los siguientes formatos:
-
URL autenticada
https://storage.googleapis.com/BUCKET/FILE
-
URI de almacenamiento de gcloud:
gs://BUCKET/FILE
-
URL autenticada
Visualiza la IP externa en un navegador web para verificar que la secuencia de comandos de inicio creó el sitio web. Es posible que debas esperar alrededor de 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Pasar una secuencia de comandos de inicio que se almacena en Cloud Storage a una VM nueva
Pasa una secuencia de comandos de inicio almacenada en Cloud Storage a una VM de Windows Server con el siguiente comando gcloud compute instances create
. Para el valor de la marca --scopes
, usa storage-ro
a fin de que la VM pueda acceder a Cloud Storage.
gcloud compute instances createVM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --scopes=storage-ro ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
-
CLOUD_STORAGE_URL: Son los valores de metadatos. Se establece en la ubicación del archivo de secuencia de comandos de inicio mediante uno de los siguientes formatos:
-
URL autenticada
https://storage.googleapis.com/BUCKET/FILE
-
URI de almacenamiento de gcloud:
gs://BUCKET/FILE
-
URL autenticada
Pasa una secuencia de comandos de inicio que se almacena en Cloud Storage a una VM existente mediante el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
-
CLOUD_STORAGE_URL: Son los valores de metadatos. Se establece en la ubicación del archivo de secuencia de comandos de inicio mediante uno de los siguientes formatos:
-
URL autenticada
https://storage.googleapis.com/BUCKET/FILE
-
URI de almacenamiento de gcloud:
gs://BUCKET/FILE
-
URL autenticada
Visualiza la IP externa en un navegador web para verificar que la secuencia de comandos de inicio creó el sitio web. Es posible que debas esperar alrededor de 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Pasar una secuencia de comandos de inicio que se almacena en Cloud Storage a una VM nueva
Pasa una secuencia de comandos de inicio almacenada en Cloud Storage a una VM de Windows Server con el siguiente comando gcloud compute instances create
. Para el valor de la marca --scopes
, usa storage-ro
a fin de que la VM pueda acceder a Cloud Storage.
gcloud compute instances createVM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --scopes=storage-ro ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
-
CLOUD_STORAGE_URL: Son los valores de metadatos. Se establece en la ubicación del archivo de secuencia de comandos de inicio mediante uno de los siguientes formatos:
-
URL autenticada
https://storage.googleapis.com/BUCKET/FILE
-
URI de almacenamiento de gcloud:
gs://BUCKET/FILE
-
URL autenticada
Pasa una secuencia de comandos de inicio que se almacena en Cloud Storage a una VM existente mediante el siguiente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadataVM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Reemplaza lo siguiente:
- VM_NAME: El nombre de la VM
-
CLOUD_STORAGE_URL: Son los valores de metadatos. Se establece en la ubicación del archivo de secuencia de comandos de inicio mediante uno de los siguientes formatos:
-
URL autenticada
https://storage.googleapis.com/BUCKET/FILE
-
URI de almacenamiento de gcloud:
gs://BUCKET/FILE
-
URL autenticada
Visualiza la IP externa en un navegador web para verificar que la secuencia de comandos de inicio creó el sitio web. Es posible que debas esperar alrededor de 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Pasa una secuencia de comandos de inicio almacenada en Cloud Storage a una VM nueva
Pasa una secuencia de comandos de inicio almacenada en Cloud Storage a una VM de Windows Server con el siguiente método instances.insert
. En el campo scopes
, agrega https://www.googleapis.com/auth/devstorage.read_only
para que la VM pueda acceder a Cloud Storage.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE /instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "serviceAccounts": [ { "email": "default", "scopes": [ "https://www.googleapis.com/auth/devstorage.read_only" ] } ], "metadata": { "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL " }, ... ] }, ... }
Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto.
ZONE: Es la zona en la que se creará la VM.
CLOUD_STORAGE_URL: Es el valor de metadatos. Se establece en la ubicación de Cloud Storage del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/BUCKET/FILE
- URI de almacenamiento de gcloud:
gs://BUCKET/FILE
- URL autenticada
Pasar una secuencia de comandos de inicio que se almacena en Cloud Storage a una VM existente
Obtén el valor
tags.fingerprint
de la VM mediante el métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /instances/VM_NAME Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto
ZONE: La zona de la VM
VM_NAME: La zona de la VM
Pasa la secuencia de comandos de inicio con el valor
fingerprint
, junto con el valor y la clave de metadatos de la secuencia de comandos de inicio, en una llamada al métodoinstances.setMetadata
:POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /instances/VM_NAME /setMetadata { "fingerprint":FINGERPRINT , "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL " } ], ... }Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto.
ZONE: La zona de la VM
VM_NAME: la zona de la VM.
FINGERPRINT: el valor
tags.fingerprint
obtenido mediante el métodoinstances.get
.CLOUD_STORAGE_URL: Es el valor de metadatos. Se establece en la ubicación de Cloud Storage del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
- URL autenticada
https://storage.googleapis.com/BUCKET/FILE
- URI de almacenamiento de gcloud:
gs://BUCKET/FILE
- URL autenticada
Verifica la secuencia de comandos de inicio
Visualiza la IP externa en un navegador web para verificar que la secuencia de comandos de inicio creó el sitio web. Es posible que debas esperar alrededor de 10 minutos para que finalice la secuencia de comandos de inicio de muestra.
Accede a los metadatos desde una secuencia de comandos de inicio de Windows
En una secuencia de comandos de inicio, puedes acceder a los valores de metadatos. Por ejemplo, puedes usar la misma secuencia de comandos para múltiples VM y parametrizar cada secuencia de forma individual si pasas valores de metadatos diferentes a cada VM.
Para acceder a un valor de metadatos personalizados desde una secuencia de comandos de inicio, haz lo siguiente:
Crea una secuencia de comandos de inicio que consulte el valor de una clave de metadatos. Por ejemplo, la siguiente secuencia de comandos de inicio de PowerShell (
.ps1
) consulta el valor de la clave de metadatosfoo
.$METADATA_VALUE = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'} -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo") # Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Configura el valor de la clave de metadatos
foo
cuando crees una VM mediante el siguiente comandogcloud compute instances create
. Para este ejemplo, la secuencia de comandos de inicio se pasa a la VM desde un archivo local.gcloud compute instances create
VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019 \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH \ --metadata=foo=barReemplaza lo siguiente:
VM_NAME: El nombre de la VM
FILE_PATH: La ruta de acceso relativa al archivo de secuencia de comandos de inicio
Para obtener más información sobre cómo especificar un par clave-valor de metadatos, consulta Configura y quita metadatos personalizados.
Observa la IP externa en un navegador web para verificar que la secuencia de comandos de inicio muestre el valor de
foo
. Es posible que debas esperar unos 10 minutos para que finalice la secuencia de comandos de inicio de la muestra.
Vuelve a ejecutar una secuencia de comandos de inicio de Windows
Vuelve a ejecutar una secuencia de comandos de inicio en una VM de Windows de la siguiente manera:
Ejecuta el siguiente comando:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Visualiza el resultado desde una secuencia de comandos de inicio de Windows
Puedes ver el resultado de una secuencia de comandos de inicio de Windows Server mediante alguna de las siguientes opciones y buscando eventos GCEMetadataScripts
:
Puerto en serie 1 en la consola de Google Cloud. Para obtener más información, consulta Visualiza la salida de puertos en serie
Registro de aplicaciones del visualizador de eventos de Windows
IAP Desktop desde una estación de trabajo de Windows. Para obtener más información, consulta el repositorio GoogleCloudPlatform/iap-desktop en GitHub.
¿Qué sigue?
Aprende a usar secuencias de comandos de inicio en VM de Linux.
Obtén más información sobre cómo agregar una secuencia de comandos de cierre.
Obtén más información sobre los metadatos de VM.
Obtén información sobre cómo ejecutar secuencias de comandos de inicio en VM de Windows y unirte a un dominio de Microsoft AD administrado.