Criar um script de inicialização

Esta página descreve como criar um script de inicialização para o serviço da Web e validar o script.

Para garantir que a exibição do serviço da Web não exija intervenção manual, crie um script de inicialização.O script de inicialização realiza as seguintes tarefas:

  • Lê os metadados da máquina virtual (VM) e define a variável de ambiente para metadados com o prefixo CONNECTOR_ENV. Todos os dados necessários pelos consumidores são retirados do Marketplace durante a criação da VM e definidos como variáveis de ambiente no Docker. Essas variáveis de ambiente podem ser lidas e processadas adequadamente no aplicativo.
  • Inicia o contêiner do Docker que contém o serviço da Web com as variáveis de ambiente adequadas.

O código a seguir é um exemplo de script de inicialização:

#!/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 o script de inicialização

  1. Na instância da VM, adicione os metadados da porta e todos os outros parâmetros necessários durante a criação da VM.
    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata=CONNECTOR_ENV_PORT=8081
  2. Edite a VM pela UI e adicione o script de inicialização mencionado na seção de automação.

    Também é possível usar o seguinte comando gcloud:

    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata-from-file startup-script=gcp-start.sh
  3. Depois de adicionar o script de inicialização, faça login na VM por SSH e execute o seguinte comando:
    sudo google_metadata_script_runner startup
  4. Execute o comando a seguir para garantir que o contêiner do Docker esteja em execução na porta mencionada.
    sudo docker ps
  5. Execute o comando a seguir para interromper e remover o serviço do Docker. Após o teste, o serviço não pode estar em execução na VM.
    sudo docker rm -f connector-service
  6. A seguir