Exécuter des scripts de démarrage personnalisés sur la VM hôte

Cloud Workstations vous permet d'exécuter des scripts de démarrage personnalisés sur la VM de la station de travail hôte avant le démarrage du conteneur de votre station de travail. Cela est utile pour effectuer une configuration au niveau de la VM ou installer des logiciels supplémentaires qui doivent s'exécuter en dehors du conteneur de la station de travail.

L'exécution de scripts de démarrage personnalisés sur la VM hôte est une fonctionnalité avancée. Au lieu d'utiliser des scripts de démarrage, nous vous recommandons de personnaliser votre image de conteneur.

Si vous choisissez d'utiliser des scripts de démarrage, assurez-vous que votre script reste compatible avec les modifications apportées à l'image Container-Optimized OS (COS), car la VM hôte reçoit régulièrement des mises à jour du système d'exploitation basées sur COS.

Avant de commencer

Installez la Google Cloud CLI, puis connectez-vous à la CLI gcloud avec votre identité fédérée. Après vous être connecté, initialisez la Google Cloud CLI en exécutant la commande suivante :

gcloud init

Préparer votre script de démarrage

Créez le script de démarrage que vous souhaitez exécuter sur la VM de la station de travail hôte. Lorsque vous rédigez votre script, respectez les consignes suivantes :

  1. Cloud Workstations exécute le conteneur de station de travail que vous avez spécifié, ainsi que plusieurs conteneurs système sur la VM de la station de travail hôte pour s'assurer que votre station de travail fonctionne correctement. Tous les conteneurs s'exécutent à l'aide de l'environnement d'exécution containerd et du client crictl.
  2. Exécutez tous les conteneurs supplémentaires lancés par votre script de démarrage à l'aide de containerd. Docker est désactivé sur la VM hôte pour éviter les interférences avec le daemon Docker exécuté dans le conteneur de votre poste de travail.
  3. Les conteneurs au niveau de l'hôte lancés par votre script de démarrage ne peuvent pas interagir avec le conteneur principal de la station de travail. Ces interactions directes ne sont pas prises en charge, car elles contournent les vérifications Identity and Access Management (IAM).

Stocker votre script de démarrage dans Cloud Storage

Importez votre script dans un bucket Cloud Storage et assurez-vous qu'il est accessible par le compte de service associé à votre poste de travail.

  1. Importez votre script dans un bucket :

    gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAME
    

    Remplacez les éléments suivants :

    • LOCAL_SCRIPT_PATH : chemin d'accès local à votre fichier de script de démarrage.
    • BUCKET_NAME : nom du bucket Cloud Storage.
    • SCRIPT_NAME : nom que vous souhaitez donner au fichier de script dans le bucket.
  2. Assurez-vous que le compte de service utilisé par la configuration de votre poste de travail dispose des autorisations nécessaires pour accéder au bucket et au fichier de script. Le script peut également être accessible publiquement.

Créer une configuration de station de travail

Pour utiliser un script de démarrage personnalisé, créez une configuration de station de travail et spécifiez l'URI Cloud Storage de votre script.

Console

Pour configurer un script de démarrage personnalisé lorsque vous créez une configuration de station de travail :

  1. Dans la console Google Cloud , accédez à la page Configurations de stations de travail.

    Accéder aux configurations de stations de travail

  2. Cliquez sur Ajouter Créer.

  3. Sur la page Informations de base, saisissez un nom pour la configuration, sélectionnez un cluster de stations de travail, puis cliquez sur Continuer.

  4. Sur la page Paramètres de la machine, configurez les paramètres de votre machine, puis cliquez sur Continuer.

  5. Sur la page Paramètres de l'environnement, développez la section Options avancées des conteneurs.

  6. Dans le champ Script de démarrage personnalisé, saisissez le chemin d'accès Cloud Storage à votre script de démarrage (par exemple, gs://BUCKET_NAME/SCRIPT_NAME).

  7. Suivez les étapes restantes, puis cliquez sur Créer.

REST

Pour configurer un script de démarrage personnalisé à l'aide de l'API REST, créez la configuration de la station de travail et définissez le champ startupScriptUri dans un message host.gceInstance sur l'URI Cloud Storage de votre script :

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
       "host": {
         "gceInstance": {
           "poolSize": 1,
           "startupScriptUri": "gs://BUCKET_NAME/SCRIPT_NAME",
           "serviceAccount": "SERVICE_ACCOUNT"
         }
       }
     }' \
     https://workstations.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/workstationClusters/CLUSTER_ID/workstationConfigs?workstation_config_id=CONFIG_ID

Remplacez les éléments suivants :

  • SERVICE_ACCOUNT : adresse e-mail du compte de service associé à la configuration de la station de travail.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • LOCATION : région dans laquelle se trouve votre cluster de postes de travail.
  • CLUSTER_ID : ID de votre cluster de postes de travail.
  • CONFIG_ID : ID que vous souhaitez attribuer à la nouvelle configuration de station de travail.

Vérifier l'exécution du script

Pour vérifier que votre script s'est exécuté correctement, utilisez l'une des méthodes suivantes :

  • Journaux de sortie du port série 3 : les journaux de sortie générés par votre script sont automatiquement envoyés à la sortie du port série 3. Pour trouver le nom de la VM attribuée à votre poste de travail, consultez les journaux de la plate-forme.
  • Connectez-vous en SSH à votre VM : vous pouvez vous connecter en SSH à votre VM de poste de travail pour déboguer davantage votre script si nécessaire.
  • Vérifications de l'aptitude : les scripts de démarrage sont exécutés au mieux et n'empêchent pas le démarrage de votre station de travail. Si l'exécution de votre script prend beaucoup de temps ou échoue, la station de travail peut toujours être marquée comme prête. Pour vous assurer que la station de travail n'est pas marquée comme prête tant que votre script n'est pas terminé, envisagez d'implémenter des vérifications d'aptitude.

Étapes suivantes