Programar jobs de patch

Além de executar jobs de patch sob demanda, convém criar jobs de patch automaticamente com base em uma programação definida. Para isso, crie uma implantação de patch.

Cada implantação de patch pode ter uma programação única, que executa um job de patch em uma data e hora específica, ou uma programação recorrente, que executa um job de patch em um intervalo especificado.

Os filtros de instâncias permitem que você aplique vários patches ao mesmo tempo. Estes filtros são aplicados a cada job de patch individual no momento da execução. Isso garante que as alterações no projeto sejam capturadas em tempo real. Por exemplo, digamos que uma implantação de patch seja criada para aplicar patches a todas as instâncias na zona asia-souteast1-b, começando daqui a duas semanas. No momento da criação do patch, você tinha 20 instâncias na zona. Alguns dias depois, 40 novas instâncias foram adicionadas à ela. Como o filtro é aplicado no momento em que o patch é iniciado, todas as 60 instâncias são atualizadas. Isso permite adicionar e remover instâncias sem precisar atualizar o cronograma de implantação do patch.

Antes de começar

  • Revise as cotas de configuração do SO.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

É possível programar seus jobs de patch usando o console do Google Cloud, a Google Cloud CLI ou a REST de dois minutos.

Permissões

Os proprietários de um projeto têm acesso total para criar e gerenciar implantações de patch. Para todos os outros usuários, você precisa conceder permissões. É possível conceder um dos seguintes papéis granulares:

  • roles/osconfig.patchDeploymentAdmin: contém permissões para criar, excluir, receber e listar implantações de patch.
  • roles/osconfig.patchDeploymentViewer: contém permissões para acesso somente leitura a fim de receber e listar implantações de patch.

Por exemplo, para conceder acesso às implantações de patch a um administrador de usuários, execute o seguinte comando:

gcloud projects add-iam-policy-binding project-id \
    --member user:user-id@gmail.com \
    --role roles/osconfig.patchDeploymentAdmin

Substitua:

  • project-id: o ID do projeto.
  • user-id: o nome de usuário do Google Workspace.

Como criar uma implantação de patch

Quando você cria uma implantação de patch, o nome dela precisa atender aos seguintes requisitos de nomenclatura:

  • Cada nome precisa ser exclusivo em um projeto
  • Ter somente letras minúsculas, números e hifens
  • Começar com uma letra
  • Terminar com um número ou uma letra
  • Ter entre 1 e 63 caracteres

Na Google Cloud CLI e no REST, o nome da implantação de patch é patch-deployment-id.

Depois de iniciar uma implantação de patch, é possível monitorar seus patches usando o painel de patches. Depois que um job de patch é iniciado, leva cerca de 30 minutos para que os dados sejam preenchidos no painel.

Console

  1. No console do Google Cloud, acesse a página Compute Engine > VM Manager > Patch.

    Acesse a página "Patch"

  2. Clique em Nova implantação de patch.
  3. Na seção VMs de destino, selecione a zona que contém as VMs que você quer corrigir. Se preferir, selecione todas as zonas.

    Por exemplo, para corrigir VMs específicas nas zonas selecionadas, insira os filtros de nome e rótulo semelhantes aos seguintes:

    • Prefixo de nome: test-
    • Rótulos: env=dev e app=web
  4. Na seção Configuração do patch, configure o patch.

    1. Especifique um Nome para seu patch.
    2. Selecione as atualizações necessárias para o sistema operacional. Para mais informações, consulte o que está incluído em um job de patch do SO.
  5. Na seção Programação, conclua o seguinte:

  6. Na seção Opções de lançamento, configure as opções de lançamento do patch:

    • Selecione se quer corrigir uma zona por vez ou várias zonas simultaneamente.
    • Defina um orçamento de interrupção. Um orçamento de interrupção é o número ou a porcentagem de VMs em uma zona que você quer que seja interrompida de uma só vez pelo processo de aplicação de patches.
  7. (Opcional) Na seção Opções avançadas, é possível concluir as seguintes tarefas:

  8. Clique em Implantar.

gcloud

Use o comando os-config patch-deployments create para criar uma implantação de patch.

gcloud compute os-config patch-deployments create patch-deployment-id \
    --file patch-deployment-file

Substitua:

  • patch-deployment-id: o nome da implantação de patch.
  • patch-deployment-file: o caminho para o arquivo YAML ou JSON que contém as configurações da implantação de patch.

Exemplo de arquivos YAML de implantação de patch

O arquivo YAML de amostra a seguir pode ser usado para criar uma programação recorrente em todas as instâncias nas zonas us-west2-b e us-west2-c. A programação recorrente tem as seguintes especificações:

  • A data de início é 9 de janeiro de 2019, às 19h30.
  • A data de término é 9 de janeiro de 2020, às 19h30.
  • O fuso horário a ser usado é "América/Los_Angeles"
  • Executada toda semana em uma terça-feira
instanceFilter:
  zones:
  - us-west2-b
  - us-west2-c
recurringSchedule:
  frequency: WEEKLY
  weekly:
    dayOfWeek: TUESDAY
  timeOfDay:
    hours: 19
    minutes: 30
  timeZone:
    id: America/Los_Angeles
  startTime: '2019-09-01T12:00:00Z'
  endTime: '2020-09-01T12:00:00Z'

REST

Na API, crie uma solicitação POST para criar uma nova implantação de patch. Você precisa definir explicitamente todos os campos de configuração obrigatórios, conforme descrito na documentação da API patchDeployments.create. Por exemplo, uma implantação de patch com os campos mínimos obrigatórios (filtro e programação da instância) tem a seguinte aparência. Substitua project-id pelo ID do projeto.

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter": instance-filter

  // Add one of the following parameters:
  "recurringSchedule": schedule
  "oneTimeSchedule": schedule
}

Substitua:

  • project-id: o ID do projeto
  • instance-filter: os parâmetros de filtro que você quer Para mais informações sobre filtros de instância, consulte filtros de instância.
  • schedule: forneça o parâmetro oneTimeSchedule ou recurringSchedule que detalha os parâmetros de programação, como data, hora e frequência, para executar o job de patch.

Exemplos

Exemplo 1: crie uma programação única para executar um job de patch em 10 de janeiro de 2020 às 12h UTC em todas as instâncias nas zonas us-west2-b e us-west2-c.

{
 "instanceFilter":{
   "zones":[
     "us-west2-b",
     "us-west2-c"
   ]
 },
 "oneTimeSchedule": {
   "executeTime": "2020-01-10T00:00:00Z"
 }
}

Exemplo 2: crie uma programação recorrente para todas as instâncias nas zonas us-west2-b e us-west2-c. A programação recorrente tem as seguintes especificações:

  • A data de início é 9 de janeiro de 2019, às 19h30.
  • A data de término é 9 de janeiro de 2020, às 19h30.
  • O fuso horário a ser usado é "América/Los_Angeles"
  • Executada toda semana em uma terça-feira
POST https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments
{
  "instanceFilter":{
    "zones":[
      "us-west2-b",
      "us-west2-c"
    ]
  },
  "recurringSchedule":{
    "frequency":"WEEKLY",
    "weekly":{
      "dayOfWeek":"TUESDAY"
    },
    "timeOfDay":{
      "hours":19,
      "minutes":30
    },
    "timeZone":{
      "id":"America/Los_Angeles"
    },
    "startTime":"2019-09-01T12:00:00Z",
    "endTime":"2020-09-01T12:00:00Z"
  }
}

Listar implantações de patch

Console

  1. No console do Google Cloud, acesse a página Compute Engine > VM Manager > Patch.

    Acesse a página "Patch"

  2. Selecione a guia Implantações programadas.

gcloud

Use o comando os-config patch-deployments list para listar implantações de patch.

gcloud compute os-config patch-deployments list

Este comando retorna todas as implantações de patch. A saída será assim:

NAME              LAST_RUN                  NEXT_RUN              FREQUENCY
first-deployment  2019-12-18T00:07:00.738Z  ---                   Once: Scheduled for 2019-12-18T00:07:00.000Z
my-deployment1    2020-01-05T14:00:00.228Z  2020-01-12T14:00:00Z  Recurring - Weekly
my-deployment2    ---                       2020-01-15T05:30:00Z  Recurring - Monthly on specific date(s)

Também é possível usar mais sinalizações para limitar e formatar sua pesquisa. Por exemplo, para listar as 10 primeiras implantações de patch em páginas de dois, execute o seguinte comando. Substitua project-id pelo código do projeto:

gcloud compute os-config patch-deployments list --limit 10 --page-size 2

REST

Na API, crie uma solicitação GET para o método patchDeployments.list. Substitua project-id pelo ID do projeto.

GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments

Descrever uma implantação de patch

Console

  1. No console do Google Cloud, acesse a página Compute Engine > VM Manager > Patch.

    Acesse a página "Patch"

  2. Selecione a guia Implantações programadas.
  3. Clique no nome da implantação que você quer analisar.

gcloud

Use o comando os-config patch-deployments describe para descrever uma implantação de patch. Substitua patch-deployment-id pelo nome da implantação de patch.

gcloud compute os-config patch-deployments describe patch-deployment-id

REST

Na API, crie uma solicitação GET para o método patchDeployments.get.

GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id

Substitua:

  • project-id: o ID do projeto.
  • patch-deployment-id: o nome da implantação de patch.

Excluir uma implantação de patch

Console

  1. No console do Google Cloud, acesse a página Compute Engine > VM Manager > Patch.

    Acesse a página "Patch"

  2. Selecione a guia Implantações programadas.
  3. Clique no nome da implantação que você quer excluir.
  4. Clique em Excluir esta programação.

gcloud

Use o comando os-config patch-deployments delete para excluir uma implantação de patch. Substitua patch-deployment-id pelo nome da implantação de patch.

gcloud compute os-config patch-deployments delete patch-deployment-id

REST

Na API, crie uma solicitação DELETE para o método patchDeployments.delete.

DELETE https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id

Substitua:

  • project-id: o ID do projeto.
  • patch-deployment-id: o nome da implantação de patch.

A seguir