Crea una secuencia de comandos de inicio
En esta página, se describe cómo crear una secuencia de comandos de inicio para el servicio web y, luego, validar la secuencia.
Para asegurarte de que la activación del servicio web no requiera intervención manual, debes crear una secuencia de comandos de inicio.Esta secuencia de comandos realiza las siguientes tareas:
- Lee los metadatos de la máquina virtual (VM) y establece la variable de entorno para los metadatos con el prefijo
CONNECTOR_ENV
. Los datos que requieren los consumidores se toman durante la creación de la VM desde Marketplace y se establecen como variables de entorno en Docker. Luego, estas variables de entorno se pueden leer y procesar según corresponda en la aplicación. - Inicia el contenedor de Docker que contiene el servicio web con las variables de entorno adecuadas.
El siguiente código es una secuencia de comandos de inicio de ejemplo:
#!/bin/bash # 1. Fetch Metadata Keys metadata_keys_url="http://metadata.google.internal/computeMetadata/v1/instance/attributes/" metadata_keys=$(curl -H "Metadata-Flavor: Google" "$metadata_keys_url") # 2. Set Environment Variables for CONNECTOR_ENV Keys (with error handling) for key in $metadata_keys; do if [[ $key == CONNECTOR_ENV_* ]]; then metadata_value_url="http://metadata.google.internal/computeMetadata/v1/instance/attributes/$key" # Fetch value with error handling value=$(curl -H "Metadata-Flavor: Google" "$metadata_value_url" 2>/dev/null) if [[ -z "$value" ]]; then echo "Warning: No value found for key '$key'. Skipping." >&2 # Log the warning to stderr continue # Skip to the next iteration fi export "$key=$value" fi done # 3. Run Docker with Environment Variables sudo docker stop connector-service || true sudo docker run \ --name connector-service \ $(env | grep CONNECTOR_ENV_ | sed 's/=/="/;s/$/"/' | sed 's/^/-e /') \ -d -p $CONNECTOR_ENV_PORT:$CONNECTOR_ENV_PORT \ --restart=unless-stopped \ connector-container
Valida la secuencia de comandos de inicio
- En la instancia de la VM, agrega los metadatos del puerto y todos los demás parámetros que se requieren durante la creación de la VM.
gcloud compute instances add-metadata VM_NAME \ --zone=VM_ZONE \ --project=PROJECT_NAME \ --metadata=CONNECTOR_ENV_PORT=8081
- Edita la VM desde la IU y agrega la secuencia de comandos de inicio que se menciona en la sección de automatización.
También puedes usar el siguiente comando de gcloud:
gcloud compute instances add-metadata VM_NAME \ --zone=VM_ZONE \ --project=PROJECT_NAME \ --metadata-from-file startup-script=gcp-start.sh
- Después de agregar la secuencia de comandos de inicio, establece una conexión SSH con la VM y ejecuta el siguiente comando:
sudo google_metadata_script_runner startup
- Ejecuta el siguiente comando para asegurarte de que el contenedor de Docker se ejecute en el puerto mencionado.
sudo docker ps
- Ejecuta el siguiente comando para detener y quitar el servicio de Docker. Después de la prueba, el servicio no debe estar ejecutándose en la VM.
sudo docker rm -f connector-service
- Obtén más información para crear una secuencia de comandos de implementación de VM.