Exécuter des scripts d'arrêt

Créez et exécutez des scripts d'arrêt exécutant des commandes juste avant l'arrêt ou le redémarrage d'une instance. Cette fonctionnalité est utile si vous utilisez des scripts automatisés pour démarrer et arrêter des instances, ce qui permet à ces dernières d'effectuer un nettoyage ou d'exécuter des tâches telles que l'exportation de journaux ou la synchronisation avec d'autres systèmes.

Les scripts d'arrêt sont particulièrement utiles pour les instances d'un groupe d'instances géré avec autoscaler. Si l'autoscaler arrête une instance du groupe, le script d'arrêt s'exécute avant l'arrêt de l'instance et effectue les actions que vous définissez. Le script s'exécute pendant la courte période de temps précédent l'arrêt de l'instance. Par exemple, le script d'arrêt peut copier des données traitées dans Cloud Storage ou sauvegarder des journaux.

Les scripts d'arrêt fonctionnent de manière semblable aux scripts de démarrage. Une grande partie de la documentation au sujet des scripts de démarrage s'applique également aux scripts d'arrêt.

Avant de commencer

Autorisations requises pour cette tâche

Pour effectuer cette tâche, vous devez disposer des autorisations suivantes.

  • Toutes les autorisations requises pour créer une instance
  • compute.instances.setMetadata sur l'instance

Caractéristiques

Limites

Tenez compte de l'existence de certaines limites lors de l'utilisation de scripts d'arrêt :

  • Les scripts d'arrêt disposent d'un temps d'exécution limité avant l'arrêt de l'instance :
    • Instances à la demande : 90 secondes après l'arrêt ou la suppression d'une instance
    • Instances préemptives : 30 secondes après le début de la préemption d'instance
  • Compute Engine exécute les scripts d'arrêt de façon la plus optimale possible. Dans de rares cas, Compute Engine ne peut pas garantir l'exécution du script d'arrêt.
  • Pour les instances Linux, vous pouvez utiliser des scripts d'arrêt uniquement avec l'image v20141007 ou les images suivantes. Pour les instances Windows Server, vous pouvez utiliser des scripts d'arrêt uniquement avec l'image v20150310 ou les images suivantes.

Appel du script d'arrêt

Les scripts d'arrêt sont déclenchés par certains événements ACPI (Advanced Configuration and Power Interface), tels que des redémarrages ou des interruptions. Il existe plusieurs manières de redémarrer ou d'arrêter une instance, mais seules certaines déclenchent l'exécution du script d'arrêt. Un script d'arrêt s'exécute dans le cadre des actions suivantes :

Le script d'arrêt ne s'exécute pas si l'instance est réinitialisée à l'aide de instances().reset.

Un script d'arrêt peut être constitué de n'importe quel type de fichier. En présence d'un script d'arrêt, Compute Engine :

  1. Copie le script dans un fichier local de l'instance.
  2. Définit des autorisations pour rendre le fichier exécutable.
  3. Exécute le fichier à l'arrêt de l'instance.

Vous pouvez, par exemple, fournir un script Python au lieu d'un script bash. Sachez que Compute Engine exécutera le script intégralement, quel que soit son type.

Pour exécuter un script qui n'est pas bash, ajoutez une ligne shebang en haut du fichier pour que le système d'exploitation sache quel interpréteur utiliser. Par exemple, pour un script Python, vous pouvez ajouter une ligne shebang comme :

#!/usr/bin/python

Temps d'exécution du script d'arrêt

Avant l'arrêt ou le redémarrage d'une instance, le script d'arrêt dispose d'un temps d'exécution limité. Au cours de ce délai, Compute Engine tente d'exécuter le script d'arrêt. Si l'exécution du script excède cette période de temps, l'instance se termine automatiquement et toutes les tâches en cours d'exécution sont supprimées. Si vous arrêtez ou redémarrez une instance en envoyant une requête au système d'exploitation invité avec la commande sudo shutdown, la limite de temps ne s'applique pas.

La durée du temps d'exécution avant l'arrêt varie selon le type d'instance. Les instances préemptives disposent d'un temps d'exécution plus court que les instances normales. Pour plus d'informations sur les limitations liées au temps d'exécution de chaque type d'instance, voir temps d'exécution avant l'arrêt.

En règle générale, votre script d'arrêt doit être exécuté pendant le temps d'exécution précédent l'arrêt afin que le système d'exploitation ait le temps de terminer son processus d'arrêt et de vider les tampons sur le disque.

Utiliser un script d'arrêt local

Un script d'arrêt local est un script qui réside sur votre ordinateur local. Passez en mode script d'arrêt local via un fichier ou en basculant le contenu directement dans Compute Engine.

Les scripts d'arrêt peuvent effectuer autant d'actions que nécessaire, mais si vous utilisez le fichier local, votre script ne pourra pas dépasser le seuil de la valeur de métadonnée de 256 KB. Pour utiliser un script dépassant ce seuil, veuillez stocker votre fichier sur Google Cloud Storage. Consultez Utiliser un script d'arrêt depuis Google Cloud Storage pour obtenir plus d'informations.

Fournir un fichier de script d'arrêt

La transmission d'un fichier de script d'arrêt local ne peut se faire que via l'outil de ligne de commande gcloud.

Pour passer en mode fichier de script d'arrêt local, veuillez fournir le paramètre --metadata-from-file, suivi d'une paire de clés de métadonnées, shutdown-script=PATH/TO/FILE, où PATH/TO/FILE est un chemin d'accès relatif au script d'arrêt. Exemple :

gcloud compute instances create example-instance \
    --metadata-from-file shutdown-script=examples/scripts/install.sh

Fournir le contenu du script d'arrêt directement

Vous pouvez également transmettre directement le contenu de votre script d'arrêt.

Console

Dans la console GCP, indiquez un script d'arrêt directement à l'aide de la clé de métadonnées shutdown-script :

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cliquez sur Créer une instance.
  3. Sur la page Créer une instance, spécifiez les propriétés souhaitées pour votre instance. Pour afficher les options de configuration avancées, développez la section .
  4. Dans la section Métadonnées, saisissez shutdown-script comme clé de métadonnées.
  5. Dans la zone Valeur, indiquez le contenu de votre script d'arrêt.
  6. Cliquez sur Créer pour créer l'instance.

gcloud

À l'aide de l'outil de ligne de commande gcloud, utilisez le paramètre --metadata pour fournir le contenu de votre script d'arrêt, suivi de la paire de clés shutdown-script=CONTENTS, où CONTENTS est le contenu de votre script d'arrêt.

gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash
> # Shuts down Apache server
> /etc/init.d/apache2 stop"

API

Dans l'API, fournissez un script d'arrêt au niveau de la propriété des métadonnées dans votre requête de création d'instance. Utilisez shutdown-script comme clé de métadonnées :

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances

{...
  "metadata": {
    "items": [
      {
       "key": "shutdown-script",
       "value": "#! /bin/bash\n\n# Shuts down Apache server\n/etc/init.d/apache2 stop"
      }
    ]
  }...
}

Fournir un script d'arrêt sur les instances Windows

Exécutez des scripts d'arrêt sur des instances Windows à l'aide des clés de métadonnées spécifiques à Windows. Choisissez l'une des clés spécialisées répertoriées ci-dessous. Chaque clé doit correspondre au type de script que vous souhaitez exécuter.

Vous pouvez spécifier plusieurs scripts d'arrêt en transmettant différentes clés à votre instance, mais chaque clé ne peut être spécifiée qu'une seule fois par machine virtuelle.

Les clés suivantes peuvent être utilisées avec un script d'arrêt local, en utilisant les instructions décrites ci-dessus.

scripts d'arrêt cmd scripts d'arrêt bat scripts d'arrêt ps1
windows-shutdown-script-cmd windows-shutdown-script-bat windows-shutdown-script-ps1

Utiliser un script d'arrêt à partir de Google Cloud Storage

Vous pouvez stocker et utiliser un script d'arrêt à partir de Google Cloud Storage. Suivez les instructions de la documentation sur les scripts de démarrage, mais remplacez startup-script-url par shutdown-script-url.

Pour les instances Windows, remplacez windows-startup-script-url par windows-shutdown-script-url.

Appliquer un script d'arrêt à des instances en cours d'exécution

Pour ajouter un script d'arrêt à une instance en cours d'exécution, suivez les instructions de la documentation Application d'un script de démarrage à des instances en cours d'exécution, mais remplacez les clés de métadonnées par l'une des clés suivantes :

  • shutdown-script : fournit le contenu du script d'arrêt directement avec cette clé. Si vous utilisez l'outil de ligne de commande gcloud, vous pouvez fournir le chemin d'accès à un fichier de script d'arrêt à l'aide de l'indicateur --metadata-from-file et de la clé de métadonnées shutdown-script.
  • shutdown-script-url : fournit une URL Google Cloud Storage au fichier de script d'arrêt avec cette clé.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine