Un script de démarrage est un fichier qui effectue des tâches au cours du processus de démarrage d'une instance de machine virtuelle (VM). Les scripts de démarrage peuvent s'appliquer à toutes les VM dans un projet ou à une seule VM. Les scripts de démarrage spécifiés par les métadonnées au niveau de la VM remplacent ceux spécifiés par les métadonnées au niveau du projet. Les scripts de démarrage ne s'exécutent que lorsqu'un réseau est disponible. Ce document explique comment utiliser des scripts de démarrage sur des instances de VM Windows Server. Pour en savoir plus sur l'ajout d'un script de démarrage au niveau du projet, consultez gcloud compute project-info add-metadata
.
Les scripts de démarrage Windows doivent être des scripts shell de Commande (.cmd
), des scripts PowerShell (.ps1
) ou des scripts de fichiers par lot (.bat
), et doivent posséder l'extension de fichier appropriée.
Si vous spécifiez un script de démarrage à l'aide de l'une des procédures décrites dans ce document, Compute Engine effectue les opérations suivantes :
Il copie le script de démarrage sur la VM
Le planificateur de tâches exécute le script de démarrage en tant que compte
LocalSystem
au démarrage de la VM.
Pour savoir quelles sont les différentes tâches liées aux scripts de démarrage et quand effectuer chacune d'entre elles, consultez la présentation des scripts de démarrage.
Avant de commencer
- Consultez la présentation des scripts de démarrage.
- Découvrez les principes de base des métadonnées de VM.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Définissez une région et une zone par défaut.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Clés de métadonnées pour les scripts de démarrage Windows
Un script de démarrage est transmis à une VM à partir d'un emplacement spécifié par une clé de métadonnées. Une clé de métadonnées spécifie si le script de démarrage est stocké localement, stocké dans Cloud Storage, ou transmis directement à la VM. La clé de métadonnées que vous utilisez peut également dépendre de la taille ou du type de fichier du script de démarrage.
Le tableau suivant présente les clés de métadonnées que vous pouvez utiliser pour les scripts de démarrage Windows, et fournit des informations sur la clé à utiliser en fonction de l'emplacement de stockage, de la taille et du type de fichier du script de démarrage.
Clé de métadonnées | Utiliser pour |
---|---|
sysprep-specialize-script-ps1 |
Transmettre un script PowerShell non signé qui est stocké localement ou ajouté directement et dont la taille ne dépasse pas 256 Ko |
sysprep-specialize-script-cmd |
Transmettre un script shell de commande stocké localement ou ajouté directement et dont la taille ne dépasse pas 256 Ko |
sysprep-specialize-script-bat |
Transmettre un script de fichier par lots stocké localement ou ajouté directement et dont la taille ne dépasse pas 256 Ko |
sysprep-specialize-script-url |
Transmettre un script de fichier par lots, un script shell de commande, un script PowerShell signé ou non, ou un exécutable stocké dans Cloud Storage et dont la taille est supérieure à 256 Ko |
windows-startup-script-ps1 |
Transmettre un script PowerShell non signé qui est stocké localement ou ajouté directement et dont la taille ne dépasse pas 256 Ko |
windows-startup-script-cmd |
Transmettre un script shell de commande stocké localement ou ajouté directement et dont la taille ne dépasse pas 256 Ko |
windows-startup-script-bat |
Transmettre un script de fichier par lots stocké localement ou ajouté directement et dont la taille ne dépasse pas 256 Ko |
windows-startup-script-url |
Transmettre un script de fichier par lots, un script shell de commande, un script PowerShell signé ou non, ou un exécutable stocké dans Cloud Storage et dont la taille est supérieure à 256 Ko |
Pour plus d'informations sur l'ordre d'exécution des différents types de scripts de démarrage, consultez le dépôt GoogleCloudPlatform/compute-image-windows sur GitHub.
Ordre d'exécution des scripts de démarrage Windows
Vous pouvez utiliser plusieurs scripts de démarrage. Les scripts de démarrage stockés localement ou ajoutés directement s'exécutent avant les scripts de démarrage stockés dans Cloud Storage. Le type de fichier contenant le script influe également sur l'ordre d'exécution. Le tableau suivant présente l'ordre d'exécution des scripts de démarrage Windows en fonction de la clé de métadonnées.
Clé de métadonnées | Ordre d'exécution |
---|---|
sysprep-specialize-script-ps1 |
En premier lors du démarrage initial |
sysprep-specialize-script-cmd |
En deuxième lors du démarrage initial |
sysprep-specialize-script-bat |
En troisième lors du démarrage initial |
sysprep-specialize-script-url |
En quatrième lors du démarrage initial |
windows-startup-script-ps1 |
En premier lors de chaque démarrage après le démarrage initial |
windows-startup-script-cmd |
En deuxième lors de chaque démarrage après le démarrage initial |
windows-startup-script-bat |
En troisième lors de chaque démarrage après le démarrage initial |
windows-startup-script-url |
En quatrième lors de chaque démarrage après le démarrage initial |
Transmettre un script de démarrage Windows directement
Transmettez le contenu d'un script de démarrage de fichier par lots, d'un script shell de commande ou d'un script PowerShell non signé directement à une VM Windows Server. Les procédures suivantes montrent comment transmettre un script PowerShell non signé.
Console
Transmettre un script de démarrage Windows directement à une nouvelle VM
Accédez à la page Créer une instance dans Google Cloud Console.
Pour Disque de démarrage, sélectionnez Modifier, puis procédez comme suit :
- Dans l'onglet Images publiques, choisissez un système d'exploitation Windows Server.
- Cliquez sur Sélectionner.
Développez la section Options avancées et procédez comme suit :
- Développez la section Gestion.
Dans la section Métadonnées, cliquez sur Ajouter un élément pour définir la Clé et la Valeur :
Clé : définie sur
windows-startup-script-ps1
.Les scripts de démarrage transmis à la VM à l'aide de clés de métadonnées commençant par
windows-startup-script
s'exécutent à chaque démarrage après le démarrage initial de la VM.Valeur : ajoutez le script suivant :
# 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
Cliquez sur Créer.
Transmettre un script de démarrage Windows directement à une VM existante
Dans Google Cloud Console, accédez à la page Instances de VM.
Cliquez sur le Nom de la VM.
Cliquez sur Modifier.
Sous Metadata (Métadonnées), spécifiez la valeur suivante :
key
:windows-startup-script-ps1
value
: contenu du script de démarrage
Vérifier le script de démarrage
Une fois la VM démarrée, affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
gcloud (bash)
Transmettre un script de démarrage Windows directement à une nouvelle VM
Transmettez le contenu d'un script de démarrage directement à une VM Windows Server au moment de sa création à l'aide de la commande gcloud compute
instances create
suivante :
gcloud compute instances create VM_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'
Remplacez VM_NAME par le nom de la VM.
Transmettre un script de démarrage Windows directement à une VM existante
Ajoutez le script de démarrage directement à une VM existante à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_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'
Remplacez VM_NAME par le nom de la VM.
Vérifier le script de démarrageUne fois la VM démarrée, affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
gcloud (invite de commande)
Transmettre un script de démarrage Windows directement à une nouvelle VM
Transmettez le contenu d'un script de démarrage directement à une VM Windows Server au moment de sa création à l'aide de la commande gcloud compute
instances create
suivante :
gcloud compute instances create VM_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'
Remplacez VM_NAME par le nom de la VM.
Transmettre un script de démarrage Windows directement à une VM existante
Ajoutez le script de démarrage directement à une VM existante à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_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'
Remplacez VM_NAME par le nom de la VM.
Vérifier le script de démarrageUne fois la VM démarrée, affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
gcloud (PowerShell)
Transmettre un script de démarrage Windows directement à une nouvelle VM
Transmettez le contenu d'un script de démarrage directement à une VM Windows Server au moment de sa création à l'aide de la commande gcloud compute
instances create
suivante :
gcloud compute instances create VM_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'
Remplacez VM_NAME par le nom de la VM.
Transmettre un script de démarrage Windows directement à une VM existante
Ajoutez le script de démarrage directement à une VM existante à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_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'
Remplacez VM_NAME par le nom de la VM.
Vérifier le script de démarrageUne fois la VM démarrée, affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
REST
Transmettre un script de démarrage Windows directement à une nouvelle VM
Transmettez le contenu d'un script de démarrage directement à une VM Windows Server au moment de sa création à l'aide de la méthode instances.insert
suivante :
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" } ] }, ... }
Remplacez les éléments suivants :
PROJECT_ID : ID du projet
ZONE : zone dans laquelle créer la nouvelle VM
Transmettre un script de démarrage Windows directement à une VM existante
Récupérez la valeur
tags.fingerprint
de la VM à l'aide de la méthodeinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Remplacez les éléments suivants :
PROJECT_ID : ID du projet
ZONE : zone de la VM
VM_NAME : zone de la VM
Transmettez le script de démarrage à l'aide de la valeur
fingerprint
, ainsi que la clé de métadonnées et la valeur du script de démarrage, dans un appel à la méthodeinstances.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" } ], ... }
Remplacez les éléments suivants :
PROJECT_ID : ID du projet
ZONE : zone de la VM
VM_NAME : zone de la VM
FINGERPRINT : valeur
tags.fingerprint
obtenue à l'aide de la méthodeinstances.get
Vérifier le script de démarrage
Une fois la VM démarrée, affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
Transmettre un script de démarrage Windows à partir d'un fichier local
Vous pouvez stocker un script de démarrage dans un fichier par lot local, un script de commande shell ou un script PowerShell non signé sur votre poste de travail, et transmettre le fichier local en tant que métadonnées à une VM lors de sa création. Vous ne pouvez pas utiliser de fichiers stockés sur des VM en tant que scripts de démarrage.
Avant de transmettre un script de démarrage Windows depuis fichier local à une VM, procédez comme suit :
Créez un fichier local (
.ps1
) pour stocker le script de démarrage.Notez le chemin relatif entre gcloud CLI et le script de démarrage.
Ajoutez le script de démarrage suivant au fichier :
# 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
gcloud (bash)
Transmettre un script de démarrage Windows depuis un fichier local à une nouvelle VM
Créez une VM et transmettez le contenu d'un fichier local à utiliser comme script de démarrage. Pour ce faire, exécutez la commande gcloud compute instances create
avec l'option --metadata-from-file
:
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Remplacez les éléments suivants :
- VM_NAME : nom de la VM
- FILE_PATH : chemin relatif vers le fichier de script de démarrage
Transmettez un script de démarrage à une VM existante à partir d'un fichier local à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Remplacez les éléments suivants :
- VM_NAME : nom de la VM
- FILE_PATH : chemin relatif vers le fichier de script de démarrage
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
gcloud (invite de commande)
Transmettre un script de démarrage Windows depuis un fichier local à une nouvelle VM
Créez une VM et transmettez le contenu d'un fichier local à utiliser comme script de démarrage. Pour ce faire, exécutez la commande gcloud compute instances create
avec l'option --metadata-from-file
:
gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Remplacez les éléments suivants :
- VM_NAME : nom de la VM
- FILE_PATH : chemin relatif vers le fichier de script de démarrage
Transmettez un script de démarrage à une VM existante à partir d'un fichier local à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Remplacez les éléments suivants :
- VM_NAME : nom de la VM
- FILE_PATH : chemin relatif vers le fichier de script de démarrage
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
gcloud (PowerShell)
Transmettre un script de démarrage Windows depuis un fichier local à une nouvelle VM
Créez une VM et transmettez le contenu d'un fichier local à utiliser comme script de démarrage. Pour ce faire, exécutez la commande gcloud compute instances create
avec l'option --metadata-from-file
:
gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Remplacez les éléments suivants :
- VM_NAME : nom de la VM
- FILE_PATH : chemin relatif vers le fichier de script de démarrage
Transmettez un script de démarrage à une VM existante à partir d'un fichier local à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Remplacez les éléments suivants :
- VM_NAME : nom de la VM
- FILE_PATH : chemin relatif vers le fichier de script de démarrage
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
Transmettre un script de démarrage Windows à partir de Cloud Storage
Vous pouvez stocker un script de démarrage en tant que fichier par lot local, script de commande shell, script PowerShell signé ou non signé, ou exécutable dans Cloud Storage et le transmettre à une VM lors de sa création. Après avoir ajouté un script de démarrage à Cloud Storage, vous disposez d'une URL que vous pouvez utiliser pour référencer le script de démarrage lorsque vous créez une VM.
Avant d'ajouter un script de démarrage à partir d'un bucket Cloud Storage, procédez comme suit :
Créez un fichier pour stocker le script de démarrage. Cet exemple utilise un fichier PowerShell (
.ps1
).Ajoutez le script PowerShell suivant au fichier, qui installe un serveur Web et crée une page 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
Implications en termes de sécurité
Par défaut, les propriétaires et les éditeurs de projet peuvent accéder aux fichiers Cloud Storage qui appartiennent au même projet, sauf si des contrôles d'accès explicites l'interdisent.
Si le bucket ou l'objet Cloud Storage est moins sécurisé que les métadonnées, il existe un risque d'élévation des privilèges si le script de démarrage est modifié et que la VM redémarre. En effet, après le redémarrage de la VM, le script de démarrage s'exécute en tant que
LocalSystem
et peut utiliser les autorisations du compte de service associé pour accéder à d'autres ressources.
Console
Transmettre un script de démarrage stocké dans Cloud Storage à une nouvelle VM
Accédez à la page Créer une instance dans Google Cloud Console.
Pour Disque de démarrage, sélectionnez Modifier, puis procédez comme suit :
- Dans l'onglet Images publiques, choisissez un système d'exploitation Windows Server.
- Cliquez sur Sélectionner.
Dans la section Identité et accès à l'API, sélectionnez un compte de service doté du rôle Lecteur des objets de l'espace de stockage.
Développez la section Options avancées et procédez comme suit :
- Développez la section Gestion.
Dans la section Métadonnées, ajoutez les valeurs suivantes :
Key : clé de métadonnées. Spécifie la clé de métadonnées
windows-startup-script-url
afin que le script s'exécute à chaque démarrage après le démarrage initial.Value : valeur de métadonnées. Définie sur l'emplacement Cloud Storage du fichier de script de démarrage à l'aide de l'un des formats suivants :
- URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
Remplacez les éléments suivants :
- BUCKET : nom du bucket contenant le fichier de script de démarrage
- FILE : nom du fichier de script de démarrage
- URL authentifiée :
Pour créer la VM, cliquez sur Créer.
Transmettre un script de démarrage stocké dans Cloud Storage à une VM existante
Dans Google Cloud Console, accédez à la page Instances de VM.
Cliquez sur le Nom de la VM.
Cliquez sur Modifier.
Dans la section Métadonnées, ajoutez les valeurs suivantes :
- URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL authentifiée :
Vérifier le script de démarrage
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
gcloud (bash)
Transmettre un script de démarrage stocké dans Cloud Storage à une nouvelle VM
Transmettez un script de démarrage stocké dans Cloud Storage à une VM Windows Server à l'aide de la commande gcloud compute instances create
suivante. Pour la valeur de l'option --scopes
, utilisez storage-ro
afin que la VM puisse accéder à Cloud Storage.
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --scopes=storage-ro \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Remplacez les éléments suivants :
- VM_NAME : Nom de la VM.
-
CLOUD_STORAGE_URL : valeurs de métadonnées. Définie sur l'emplacement du fichier de script de démarrage en utilisant l'un des formats suivants :
-
URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL authentifiée :
Transmettez un script de démarrage stocké dans Cloud Storage à une VM existante à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Remplacez les éléments suivants :
- VM_NAME : Nom de la VM.
-
CLOUD_STORAGE_URL : valeurs de métadonnées. Définie sur l'emplacement du fichier de script de démarrage en utilisant l'un des formats suivants :
-
URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL authentifiée :
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
gcloud (invite de commande)
Transmettre un script de démarrage stocké dans Cloud Storage à une nouvelle VM
Transmettez un script de démarrage stocké dans Cloud Storage à une VM Windows Server à l'aide de la commande gcloud compute instances create
suivante. Pour la valeur de l'option --scopes
, utilisez storage-ro
afin que la VM puisse accéder à Cloud Storage.
gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --scopes=storage-ro ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Remplacez les éléments suivants :
- VM_NAME : Nom de la VM.
-
CLOUD_STORAGE_URL : valeurs de métadonnées. Définie sur l'emplacement du fichier de script de démarrage en utilisant l'un des formats suivants :
-
URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL authentifiée :
Transmettez un script de démarrage stocké dans Cloud Storage à une VM existante à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Remplacez les éléments suivants :
- VM_NAME : Nom de la VM.
-
CLOUD_STORAGE_URL : valeurs de métadonnées. Définie sur l'emplacement du fichier de script de démarrage en utilisant l'un des formats suivants :
-
URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL authentifiée :
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
gcloud (PowerShell)
Transmettre un script de démarrage stocké dans Cloud Storage à une nouvelle VM
Transmettez un script de démarrage stocké dans Cloud Storage à une VM Windows Server à l'aide de la commande gcloud compute instances create
suivante. Pour la valeur de l'option --scopes
, utilisez storage-ro
afin que la VM puisse accéder à Cloud Storage.
gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --scopes=storage-ro ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Remplacez les éléments suivants :
- VM_NAME : Nom de la VM.
-
CLOUD_STORAGE_URL : valeurs de métadonnées. Définie sur l'emplacement du fichier de script de démarrage en utilisant l'un des formats suivants :
-
URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL authentifiée :
Transmettez un script de démarrage stocké dans Cloud Storage à une VM existante à l'aide de la commande gcloud compute instances add-metadata
suivante :
gcloud compute instances add-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Remplacez les éléments suivants :
- VM_NAME : Nom de la VM.
-
CLOUD_STORAGE_URL : valeurs de métadonnées. Définie sur l'emplacement du fichier de script de démarrage en utilisant l'un des formats suivants :
-
URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
-
URI gcloud storage:
gs://BUCKET/FILE
-
URL authentifiée :
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
REST
Transmettre un script de démarrage stocké dans Cloud Storage à une nouvelle VM
Transmettez un script de démarrage stocké dans Cloud Storage à une VM Windows Server à l'aide de la méthode instances.insert
suivante. Dans le champ scopes
, ajoutez https://www.googleapis.com/auth/devstorage.read_only
afin que la VM puisse accéder à 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" }, ... ] }, ... }
Remplacez les éléments suivants :
PROJECT_ID : ID du projet.
ZONE : zone dans laquelle créer la nouvelle VM.
CLOUD_STORAGE_URL : valeur de métadonnées. Définie sur l'emplacement Cloud Storage du fichier de script de démarrage à l'aide de l'un des formats suivants :
- URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL authentifiée :
Transmettre un script de démarrage stocké dans Cloud Storage à une VM existante
Récupérez la valeur
tags.fingerprint
de la VM à l'aide de la méthodeinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Remplacez les éléments suivants :
PROJECT_ID : ID du projet
ZONE : zone de la VM
VM_NAME : zone de la VM
Transmettez le script de démarrage à l'aide de la valeur
fingerprint
, ainsi que la clé de métadonnées et la valeur du script de démarrage, dans un appel à la méthodeinstances.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" } ], ... }
Remplacez les éléments suivants :
PROJECT_ID : ID du projet.
ZONE : zone de la VM.
VM_NAME : zone de la VM.
FINGERPRINT : valeur
tags.fingerprint
obtenue à l'aide de la méthodeinstances.get
.CLOUD_STORAGE_URL : valeur de métadonnées. Définie sur l'emplacement Cloud Storage du fichier de script de démarrage à l'aide de l'un des formats suivants :
- URL authentifiée :
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL authentifiée :
Vérifier le script de démarrage
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage a créé le site Web. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
Accéder aux métadonnées à partir d'un script de démarrage Windows
Dans un script de démarrage, vous pouvez accéder aux valeurs de métadonnées. Par exemple, vous pouvez utiliser le même script pour plusieurs VM et paramétrer chaque script individuellement en transmettant des valeurs de métadonnées différentes à chaque VM.
Pour accéder à une valeur de métadonnées personnalisée à partir d'un script de démarrage, procédez comme suit :
Créez un script de démarrage qui interroge la valeur d'une clé de métadonnées. Par exemple, le script de démarrage PowerShell suivant (
.ps1
) interroge la valeur de la clé de métadonnéesfoo
.$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
Définissez la valeur de la clé de métadonnées
foo
lors de la création d'une VM à l'aide de la commandegcloud compute instances create
suivante. Pour cet exemple, le script de démarrage est transmis à la VM à partir d'un fichier local.gcloud
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=bar
Remplacez les éléments suivants :
VM_NAME : nom de la VM
FILE_PATH : chemin relatif vers le fichier de script de démarrage
Pour en savoir plus sur la spécification d'une paire clé/valeur de métadonnées, consultez la page Définir et supprimer des métadonnées personnalisées.
Affichez l'adresse IP externe dans un navigateur Web pour vérifier que le script de démarrage génère la valeur de
foo
. Un délai de 10 minutes environ peut être nécessaire pour que l'exemple de script de démarrage se termine.
Réexécuter un script de démarrage Windows
Réexécutez un script de démarrage sur une VM Windows en procédant comme suit :
En exécutant la commande suivante :
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Afficher le résultat d'un script de démarrage Windows
Affichez le résultat d'un script de démarrage Windows Server à l'aide de l'un des éléments suivants et en vérifiant la présence d'événements GCEMetadataScripts
:
Port série 1 de la console Google Cloud. Pour en savoir plus, consultez la section Afficher les données en sortie du port série.
Journal des applications de l'observateur d'événements Windows.
IAP Desktop à partir d'un poste de travail Windows. Pour plus d'informations, consultez le dépôt GoogleCloudPlatform/iap-desktop sur GitHub.
Étape suivante
Découvrez comment utiliser des scripts de démarrage sur des VM Linux.
Découvrez comment ajouter un script d'arrêt.
Apprenez-en plus sur les métadonnées des VM.
Découvrez comment exécuter des scripts de démarrage sur des VM Windows et joindre un domaine Microsoft AD géré.