Crear 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, a continuación, validar la secuencia de comandos.
Para asegurarte de que el 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 define la variable de entorno de los metadatos con el prefijo
CONNECTOR_ENV
. Los datos que necesitan los consumidores se obtienen de Marketplace durante la creación de la máquina virtual y se definen como variables de entorno en Docker. Estas variables de entorno se pueden leer y procesar 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 un ejemplo de secuencia de comandos de inicio:
#!/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
Validar la secuencia de comandos de inicio
- En la instancia de VM, añade los metadatos del puerto y todos los demás parámetros necesarios 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 interfaz de usuario y añade la secuencia de comandos de inicio mencionada en la sección de automatización.
También puedes usar el siguiente comando 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 añadir la secuencia de comandos de inicio, accede a la VM mediante SSH y ejecuta el siguiente comando:
sudo google_metadata_script_runner startup
- Ejecuta el siguiente comando para asegurarte de que el contenedor de Docker se está ejecutando en el puerto mencionado.
sudo docker ps
- Ejecuta el siguiente comando para detener y eliminar el servicio de Docker. Después de las pruebas, el servicio no debe ejecutarse en la VM.
sudo docker rm -f connector-service
- Consulta cómo crear una secuencia de comandos de implementación de una VM.