Crea uno script di avvio

Questa pagina descrive come creare uno script di avvio per il servizio web e poi convalidarlo.

Per assicurarti che l'avvio del servizio web non richieda intervento manuale, devi creare uno script di avvio.Lo script di avvio esegue le seguenti attività:

  • Legge i metadati della macchina virtuale (VM) e imposta la variabile di ambiente per i metadati con il prefisso CONNECTOR_ENV. Tutti i dati richiesti dai consumatori vengono acquisiti durante la creazione della VM dal marketplace e impostati come variabili di ambiente in Docker. Queste variabili di ambiente possono quindi essere lette ed elaborate di conseguenza nell'applicazione.
  • Avvia il contenitore Docker contenente il servizio web con le variabili di ambiente appropriate.

Il seguente codice è uno script di avvio di esempio:

#!/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

Convalida lo script di avvio

  1. Nell'istanza VM, aggiungi i metadati per la porta e tutti gli altri parametri richiesti durante la creazione della VM.
    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata=CONNECTOR_ENV_PORT=8081
  2. Modifica la VM dall'interfaccia utente e aggiungi lo script di avvio indicato nella sezione sull'automazione.

    Puoi anche utilizzare il seguente comando gcloud:

    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata-from-file startup-script=gcp-start.sh
  3. Dopo aver aggiunto lo script di avvio, connettiti alla VM tramite SSH ed esegui il seguente comando:
    sudo google_metadata_script_runner startup
  4. Esegui il seguente comando per assicurarti che il container Docker sia in esecuzione sulla porta indicata.
    sudo docker ps
  5. Esegui questo comando per arrestare e rimuovere il servizio Docker. Al termine del test, il servizio non deve essere in esecuzione sulla VM.
    sudo docker rm -f connector-service
  6. Passaggi successivi