Membuat skrip startup

Halaman ini menjelaskan cara membuat skrip startup untuk layanan web, lalu memvalidasi skrip.

Untuk memastikan bahwa pengaktifan layanan web tidak memerlukan intervensi manual, Anda harus membuat skrip startup.Skrip startup melakukan tugas-tugas berikut:

  • Membaca metadata virtual machine (VM) dan menetapkan variabel lingkungan untuk metadata dengan awalan CONNECTOR_ENV. Setiap data yang diperlukan oleh konsumen diambil selama pembuatan VM dari Marketplace dan ditetapkan sebagai variabel lingkungan di docker. Variabel lingkungan ini kemudian dapat dibaca dan diproses dengan sesuai di aplikasi.
  • Memulai penampung docker yang berisi layanan web dengan variabel lingkungan yang sesuai.

Kode berikut adalah contoh skrip startup:

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

Memvalidasi skrip startup

  1. Di instance VM, tambahkan metadata untuk port dan semua parameter lain yang diperlukan selama pembuatan VM.
    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata=CONNECTOR_ENV_PORT=8081
  2. Edit VM dari UI dan tambahkan skrip startup yang disebutkan di bagian otomatisasi.

    Anda juga dapat menggunakan perintah gcloud berikut:

    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata-from-file startup-script=gcp-start.sh
  3. Setelah menambahkan skrip startup, gunakan ssh ke VM dan jalankan perintah berikut:
    sudo google_metadata_script_runner startup
  4. Jalankan perintah berikut untuk memastikan bahwa penampung docker berjalan di port yang disebutkan.
    sudo docker ps
  5. Jalankan perintah berikut untuk menghentikan dan menghapus layanan docker. Setelah pengujian, layanan tidak boleh berjalan di VM.
    sudo docker rm -f connector-service
  6. Langkah selanjutnya