Instale extensões de VMs criando políticas de extensões

Este documento descreve como criar políticas de extensões de VMs, que lhe permitem instalar e gerir automaticamente extensões numa frota de máquinas virtuais (VMs) do Compute Engine. Ao definir uma política, pode garantir que extensões específicas são instaladas e mantidas em todas as VMs que correspondam aos critérios que especificar, como etiquetas de VMs.

Antes de começar

Funções de IAM necessárias

Para receber a autorização de que precisa para criar uma política de extensão, peça ao seu administrador para lhe conceder a função IAM VM Extension Policy Admin (roles/compute.vmExtensionPolicyAdmin). Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém a autorização compute.vmExtensionPolicies.create , que é necessária para criar uma política de extensão.

Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.

Para mais informações sobre as funções e as autorizações de IAM no Compute Engine, consulte o artigo Funções e autorizações do Compute Engine.

Crie uma política de extensão de VM

Use um dos seguintes métodos para criar uma política de extensões de VMs. Esta política define que extensões instalar e em que VMs.

Consola

  1. Na Google Cloud consola, aceda à página Políticas de extensão de VMs.

    Aceda às políticas de extensão de VMs

  2. Clique em Criar política de extensões.
  3. No campo Nome, introduza um nome para a política.
  4. Opcional: no campo Descrição, introduza uma descrição para a política.
  5. No campo Prioridade, especifique um número de prioridade para resolver conflitos entre políticas. Os números mais baixos indicam uma prioridade mais elevada. O valor predefinido é 1000.
  6. Na lista Zona, selecione a zona onde quer aplicar esta política.
  7. Na secção Extensões, clique em Adicionar extensão e faça o seguinte para cada extensão que quer instalar nas VMs de destino:
    1. Na lista Extensão, selecione uma extensão. Consulte as extensões suportadas.
    2. Na lista Versão, especifique o número da versão da extensão. Deixe o campo em branco para selecionar a versão mais recente.
      • Para o agente de operações, pode especificar a versão 2.58.0 ou posterior.
      • Para a extensão para SAP e a extensão para cargas de trabalho de computação, deixe o campo em branco para selecionar a versão mais recente.
    3. Opcional: no campo Conteúdo do ficheiro de configuração, introduza os parâmetros de configuração da extensão.
  8. Na secção Instâncias de VM de destino, selecione as VMs para a política. Para selecionar VMs com etiquetas específicas, clique em Adicionar etiquetas e adicione o par de chave-valor.
  9. Clique em Criar.

gcloud

Para criar uma política de extensão de VM e implementá-la em VMs numa zona específica, use o comando gcloud beta compute zone-vm-extension-policies create:

gcloud beta compute zone-vm-extension-policies create POLICY_NAME \
    --zone=ZONE \
    --description="DESCRIPTION" \
    --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
    --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
    --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
    --inclusion-labels=KEY_1=VALUE_1 \
    --priority=PRIORITY

Substitua o seguinte:

  • POLICY_NAME: um nome para a política de extensão de VM.
  • ZONE: a zona onde esta política se aplica.
  • DESCRIPTION: uma descrição opcional da política.
  • EXTENSION_NAME_1,EXTENSION_NAME_2: uma lista separada por vírgulas de extensões a adicionar à política. Tem de especificar, pelo menos, uma extensão. Os valores válidos para as extensões são:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: uma lista separada por vírgulas de pares de chaves-valores em que a chave é o nome da extensão e o valor é a versão da extensão. Se não especificar uma versão para uma extensão, o VM Extension Manager usa a versão mais recente disponível e atualiza-a automaticamente quando estiverem disponíveis novas versões.

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: uma lista de pares de chave-valor separados por vírgulas em que a chave é o nome da extensão e o valor é o caminho para o ficheiro de configuração dessa extensão. Este caminho está na VM onde executa o comando gcloud e não na VM onde instala a extensão.

    Em alternativa, para fornecer a configuração como uma string inline, use a flag --config em vez de --config-from-file, por exemplo, EXTENSION_NAME_1="CONFIG_1". Pode usar --config-from-file ou --config, mas não ambos no mesmo comando.

  • KEY_1=VALUE_1: uma lista separada por vírgulas de pares de chave-valor que definem etiquetas de inclusão para um seletor. As VMs têm de ter todas as etiquetas especificadas num seletor para serem segmentadas. Se especificar --inclusion-labels várias vezes, a política segmenta VMs que correspondem a qualquer um dos seletores fornecidos (OU lógico). Se omitir esta flag, a política segmenta todas as VMs na zona especificada.

  • PRIORITY: um número inteiro de 0 a 65535 que define a prioridade da política. Os números mais baixos indicam uma prioridade mais elevada. O valor predefinido é 1000.

    O comando falha se já existir uma política com o nome especificado na zona.

Exemplo 1

O seguinte comando cria uma política denominada test-extension-policy que instala a extensão ops-agent na zona us-central1-f para o projeto test-project. A flag --config-from-file especifica o caminho para um ficheiro local que contém uma configuração YAML para o agente de operações.

gcloud beta compute zone-vm-extension-policies create test-extension-policy  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml"

Exemplo 2

O comando seguinte cria uma política denominada test-extension-policy-2 que instala a extensão ops-agent na zona us-central1-f para o projeto test-project em VMs com a etiqueta env=prod. A prioridade da política está definida como 500 e a flag --config-from-file especifica o caminho para um ficheiro local que contém uma configuração YAML para o agente de operações.

 gcloud beta compute zone-vm-extension-policies create test-extension-policy-2  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
    --priority=500 \
    --inclusion-labels=env=prod

O que se segue?