Ejecuta secuencias de comandos de inicio personalizadas en la VM host

Cloud Workstations te permite ejecutar secuencias de comandos de inicio personalizadas en la VM de la estación de trabajo host antes de que se inicie el contenedor de la estación de trabajo. Esto es útil para realizar la configuración a nivel de la VM o instalar software adicional que debe ejecutarse fuera del contenedor de la estación de trabajo.

Ejecutar secuencias de comandos de inicio personalizadas en la VM host es una función avanzada. En lugar de usar secuencias de comandos de inicio, te recomendamos que personalices la imagen de tu contenedor.

Si eliges usar secuencias de comandos de inicio, asegúrate de que tu secuencia de comandos siga siendo compatible con los cambios en la imagen de Container-Optimized OS (COS), ya que la VM host recibe actualizaciones periódicas del sistema operativo basadas en COS.

Antes de comenzar

Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.

Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:

gcloud init

Si usas un proveedor de identidad externo (IdP), primero debes acceder a la CLI de gcloud con tu identidad federada.

Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:

gcloud init

Si usas un proveedor de identidad externo (IdP), primero debes acceder a la CLI de gcloud con tu identidad federada.

Prepara tu secuencia de comandos de inicio

Crea la secuencia de comandos de inicio que deseas ejecutar en la VM de la estación de trabajo host. Cuando escribas tu secuencia de comandos, sigue los siguientes lineamientos:

  1. Cloud Workstations ejecuta el contenedor de la estación de trabajo especificado, así como varios contenedores del sistema en la VM de la estación de trabajo host para garantizar que la estación de trabajo funcione correctamente. Todos los contenedores se ejecutan con el tiempo de ejecución de containerd y el cliente crictl.
  2. Ejecuta cualquier contenedor adicional que inicie tu secuencia de comandos de inicio con containerd. Docker está inhabilitado en la VM host para evitar interferencias con el daemon de Docker que se ejecuta dentro del contenedor de la estación de trabajo.
  3. Los contenedores a nivel del host que inicia tu secuencia de comandos de inicio no pueden interactuar con el contenedor principal de la estación de trabajo. Estas interacciones directas no son compatibles porque omiten las verificaciones de Identity and Access Management (IAM).

Almacena tu secuencia de comandos de inicio en Cloud Storage

Sube tu secuencia de comandos a un bucket de Cloud Storage y asegúrate de que la cuenta de servicio asociada con tu estación de trabajo pueda acceder a ella.

  1. Sube tu secuencia de comandos a un bucket:

    gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAME
    

    Reemplaza lo siguiente:

    • LOCAL_SCRIPT_PATH: Es la ruta de acceso local al archivo de secuencia de comandos de inicio.
    • BUCKET_NAME: Es el nombre de tu bucket de Cloud Storage.
    • SCRIPT_NAME: Es el nombre que deseas darle al archivo de secuencia de comandos en el bucket.
  2. Asegúrate de que la cuenta de servicio que usa la configuración de tu estación de trabajo tenga permisos para acceder al bucket y al archivo de secuencia de comandos. De forma alternativa, se puede acceder a la secuencia de comandos de forma pública.

Crea una configuración de estación de trabajo

Para usar una secuencia de comandos de inicio personalizada, crea una configuración de estación de trabajo y especifica el URI de Cloud Storage de tu secuencia de comandos.

Console

Para configurar una secuencia de comandos de inicio personalizada cuando creas una configuración de estación de trabajo, haz lo siguiente:

  1. En la Google Cloud consola de, ve a la página Configuraciones de estación de trabajo.

    Ir a Configuraciones de estación de trabajo

  2. Haz clic en add Crear.

  3. En la página Información básica , ingresa un nombre para la configuración, selecciona un clúster de estación de trabajo y haz clic en Continuar.

  4. En la página Configuración de la máquina , configura los parámetros de configuración de la máquina y haz clic en Continuar.

  5. En la página Configuración del entorno, expande la sección Opciones avanzadas del contenedor.

  6. En el campo Secuencia de comandos de inicio personalizada, ingresa la ruta de acceso de Cloud Storage a tu secuencia de comandos de inicio (por ejemplo, gs://BUCKET_NAME/SCRIPT_NAME).

  7. Completa los pasos restantes y haz clic en Crear.

REST

Para configurar una secuencia de comandos de inicio personalizada con la API de REST, crea la configuración de la estación de trabajo y establece el campo startupScriptUri en un mensaje host.gceInstance en el URI de Cloud Storage de tu secuencia de comandos:

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

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT: Es la dirección de correo electrónico de la cuenta de servicio asociada con la configuración de la estación de trabajo.
  • PROJECT_ID: Es el ID del Google Cloud proyecto de.
  • LOCATION: Es la región en la que se encuentra el clúster de la estación de trabajo.
  • CLUSTER_ID: Es el ID del clúster de la estación de trabajo.
  • CONFIG_ID: Es el ID que deseas asignar a la nueva configuración de la estación de trabajo.

Verifica la ejecución de la secuencia de comandos

Para verificar que tu secuencia de comandos se ejecutó correctamente, usa uno de los siguientes métodos:

¿Qué sigue?