Executar scripts de inicialização personalizados na VM host

O Cloud Workstations permite executar scripts de inicialização personalizados na VM da estação de trabalho host antes que o contêiner da estação de trabalho seja iniciado. Isso é útil para realizar a configuração no nível da VM ou instalar softwares adicionais que precisam ser executados fora do contêiner da estação de trabalho.

A execução de scripts de inicialização personalizados na VM host é um recurso avançado. Em vez de usar scripts de inicialização, recomendamos que você personalize a imagem do contêiner.

Se você optar por usar scripts de inicialização, verifique se o script permanece compatível com as alterações de imagem do Container-Optimized OS (COS), porque a VM do host recebe atualizações do sistema operacional regulares com base no COS.

Antes de começar

Instale a Google Cloud CLI e faça login na CLI da gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:

gcloud init

Preparar o script de inicialização

Crie o script de inicialização que você quer executar na VM da estação de trabalho do host. Ao escrever o script, siga estas diretrizes:

  1. O Cloud Workstations executa o contêiner de estação de trabalho especificado, além de vários contêineres do sistema na VM da estação de trabalho host para garantir que ela funcione corretamente. Todos os contêineres são executados usando o ambiente de execução containerd e o cliente crictl.
  2. Execute todos os contêineres adicionais iniciados pelo script de inicialização usando containerd. O Docker está desativado na VM host para evitar interferência com o daemon do Docker em execução no contêiner da estação de trabalho.
  3. Os contêineres no nível do host iniciados pelo script de inicialização não podem interagir com o contêiner principal da estação de trabalho. Essas interações diretas não são compatíveis porque ignoram as verificações do Identity and Access Management (IAM).

Armazenar o script de inicialização no Cloud Storage

Faça upload do script para um bucket do Cloud Storage e verifique se ele pode ser acessado pela conta de serviço associada à estação de trabalho.

  1. Faça upload do script para um bucket:

    gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAME
    

    Substitua:

    • LOCAL_SCRIPT_PATH: o caminho local para o arquivo de script de inicialização.
    • BUCKET_NAME: o nome do bucket do Cloud Storage.
    • SCRIPT_NAME: o nome que você quer dar ao arquivo de script no bucket.
  2. Verifique se a conta de serviço usada pela configuração da estação de trabalho tem permissões para acessar o bucket e o arquivo de script. Como alternativa, o script pode ser acessível publicamente.

Criar uma configuração da estação de trabalho

Para usar um script de inicialização personalizado, crie uma configuração de estação de trabalho e especifique o URI do Cloud Storage do script.

Console

Para configurar um script de inicialização personalizado ao criar uma configuração de estação de trabalho:

  1. No console do Google Cloud , acesse a página Configurações da estação de trabalho.

    Acessar as configurações da estação de trabalho

  2. Clique em add Criar.

  3. Na página Informações básicas, insira um nome para a configuração, selecione um cluster de estação de trabalho e clique em Continuar.

  4. Na página Configurações da máquina, defina as configurações da máquina e clique em Continuar.

  5. Na página Configurações do ambiente, abra a seção Opções avançadas de contêiner.

  6. No campo Script de inicialização personalizado, insira o caminho do Cloud Storage para o script de inicialização (por exemplo, gs://BUCKET_NAME/SCRIPT_NAME).

  7. Conclua as etapas restantes e clique em Criar.

REST

Para configurar um script de inicialização personalizado usando a API REST, crie a configuração da estação de trabalho e defina o campo startupScriptUri em uma mensagem host.gceInstance como o URI do Cloud Storage do script:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
       "host": {
         "gceInstance": {
           "poolSize": 1,
           "startupScriptUri": "gs://BUCKET_NAME/SCRIPT_NAME",
           "serviceAccount": "SERVICE_ACCOUNT"
         }
       }
     }' \
     https://workstations.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/workstationClusters/CLUSTER_ID/workstationConfigs?workstation_config_id=CONFIG_ID

Substitua:

  • SERVICE_ACCOUNT: o endereço de e-mail da conta de serviço associada à configuração da estação de trabalho.
  • PROJECT_ID: o ID do projeto Google Cloud .
  • LOCATION: a região em que o cluster de estação de trabalho está localizado.
  • CLUSTER_ID: o ID do cluster de estação de trabalho.
  • CONFIG_ID: o ID que você quer atribuir à nova configuração da estação de trabalho.

Verificar a execução do script

Para verificar se o script foi executado corretamente, use um dos seguintes métodos:

  • Registros de saída da porta serial 3: os registros de saída gerados pelo script são enviados automaticamente para a saída da porta serial 3. Para encontrar o nome da VM atribuída à sua estação de trabalho, consulte os registros da plataforma.
  • Conecte-se à VM por SSH: é possível conectar-se à VM da estação de trabalho por SSH para depurar ainda mais o script, se necessário.
  • Verificações de prontidão: os scripts de inicialização são de melhor esforço e não impedem que a estação de trabalho seja iniciada. Se o script demorar muito para ser executado ou falhar, a estação de trabalho ainda poderá ser marcada como pronta. Para garantir que a estação de trabalho não seja marcada como pronta até que o script seja concluído, implemente verificações de prontidão.

A seguir