Programar trabajos de aplicación de parche.

Además de ejecutar trabajos de parche a pedido, es posible que desees tener trabajos de aplicación de parches que se ejecuten automáticamente en función de un programa establecido mediante la creación de una implementación de parches.

Cada implementación de parches puede tener una programación única, que ejecuta un trabajo de parche en una fecha y hora específicas, o una programación recurrente, que ejecuta un trabajo de parche en un intervalo especificado.

Los filtros de instancias te permiten aplicar un parche de manera simultánea a muchas instancias al mismo tiempo. Estos filtros se aplican a cada trabajo de parche individual en el momento en que se ejecuta. Esto garantiza que los cambios en el proyecto se capturen en tiempo real. Por ejemplo, supongamos que se crea una implementación de parches para aplicar parches a todas las instancias en la zona asia-souteast1-b en dos semanas. Cuando creaste el parche, tenías 20 instancias en la zona, pero, luego, se agregaron 40 nuevas. Debido a que el filtro se aplica en el momento en que se inicia el parche, se actualizan las 60 instancias. Esto te permite agregar y quitar instancias sin necesidad de actualizar el programa de implementación de parches.

Antes de comenzar

  • Revisa las cuotas de configuración del SO.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    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 las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

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

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Puedes programar tus trabajos de aplicación de parches mediante la consola de Google Cloud, Google Cloud CLI o REST.

Permisos

Los propietarios de un proyecto tienen acceso completo para crear y administrar implementaciones de parches. Para el resto de los usuarios, debes otorgar permisos. Puedes otorgar una de las siguientes funciones detalladas:

  • roles/osconfig.patchDeploymentAdmin: Contiene permisos para crear, borrar, obtener y enumerar implementaciones de parches.
  • roles/osconfig.patchDeploymentViewer: Contiene permisos de acceso de solo lectura para obtener y enumerar implementaciones de parches.

Por ejemplo, para otorgar acceso de administrador de usuarios a las implementaciones de parches, ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

  • project-id: El ID del proyecto
  • user-id: El nombre de usuario de Google Workspace.

Crea una implementación de parches

Cuando creas una implementación de parches, su nombre debe cumplir con los siguientes requisitos de denominación:

  • Cada nombre debe ser único dentro de un proyecto
  • Contener solo letras en minúscula, números y guiones
  • Comenzar con una letra
  • Terminar con un número o una letra
  • Tener entre 1 y 63 caracteres

En Google Cloud CLI y REST, el nombre de la implementación de parches se conoce como patch-deployment-id.

Después de iniciar un trabajo de implementación de parche, puedes supervisar los parches con el panel de aplicación de parches. Una vez que se inicia un trabajo de aplicación de parche, los datos demoran unos 30 minutos en propagarse al panel.

Console

  1. En la consola de Google Cloud, ve a la página Compute Engine > VM Manager > Parche.

    Ir a la página Parche

  2. Haz clic en Nueva implementación de parche.
  3. En la sección VM de destino, elige la zona que contiene las VM a las que deseas aplicarles el parche. También puedes elegir seleccionar todas las zonas.

    Por ejemplo, para aplicar parches a VM específicas en las zonas que seleccionaste, ingresa el nombre y los filtros de etiqueta similares a los siguientes:

    • Prefijo del nombre: test-
    • Etiquetas: env=dev y app=web
  4. En la sección Configuración del parche, completa estos datos:

    1. Especifica un Nombre para el parche.
    2. Elige las actualizaciones necesarias para el sistema operativo. Para obtener más información, consulta qué se incluye en un trabajo de aplicación de parches de SO.
  5. En la sección Programa, completa lo siguiente:

  6. En la sección Opciones de lanzamiento, configura las opciones de lanzamiento de parches:

    • Elige si deseas aplicar parches en una zona por vez o en varias zonas de forma simultánea.
    • Establece un presupuesto de interrupción. Un presupuesto de interrupción es la cantidad o el porcentaje de VM en la zona que deseas que el proceso de aplicación de parches interrumpa al mismo tiempo.
  7. De manera opcional, puedes hacer las siguientes tareas en la sección Opciones avanzadas:

    • Elegir una opción de reinicio
    • Sube secuencias de comandos para antes y después de la aplicación del parche. Para obtener más información sobre las secuencias de comandos para antes y después de aplicar un parche, consulta esta sección.
  8. Haz clic en Implementar.

gcloud

Usa el comando os-config patch-deployments create para crear una implementación de parches.

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

Reemplaza lo siguiente:

  • patch-deployment-id: El nombre de la implementación de parches
  • patch-deployment-file: La ruta al archivo YAML o JSON que contiene la configuración para la implementación de parches

Ejemplo de archivos YAML de implementación de parches

Se puede usar el siguiente archivo YAML de muestra para crear una programación recurrente para todas las instancias en las zonas us-west2-b y us-west2-c. El programa recurrente tiene las siguientes especificaciones:

  • La fecha de inicio es el 9 de enero de 2019 a las 7:30 p.m.
  • La fecha de finalización es el 9 de enero de 2020 a las 7:30 p.m.
  • La zona horaria que puedes usar es “America/Los_Angeles”.
  • Se ejecuta todos los martes.
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

En la API, crea una solicitud POST para crear una implementación de parches nueva. Debes definir de manera explícita todos los campos de configuración obligatorios como se describe en la documentación de la API de patchDeployments.create. Por ejemplo, una implementación de parches con los campos obligatorios mínimos (filtro de instancias y programa) se ve de la siguiente manera. Reemplaza project-id con el ID del proyecto.

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

{
  "instanceFilter": instance-filter

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

Reemplaza lo siguiente:

  • project-id: ID del proyecto
  • instance-filter: los parámetros de filtro que deseas; Para obtener más información sobre los filtros de instancia, consulta los filtros de instancia.
  • schedule: Proporciona el parámetro oneTimeSchedule o recurringSchedule que detalla parámetros de programación, como la fecha, la hora y la frecuencia para ejecutar el trabajo de parche.

Ejemplos

Ejemplo 1: Crea un programa de una vez para ejecutar un trabajo de parche el 10 de enero de 2020 a las 12 a.m. UTC en todas las instancias de las zonas us-west2-b y us-west2-c.

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

Ejemplo 2: Crea un programa recurrente para todas las instancias en las zonas us-west2-b y us-west2-c. El programa recurrente tiene las siguientes especificaciones:

  • La fecha de inicio es el 9 de enero de 2019 a las 7:30 p.m.
  • La fecha de finalización es el 9 de enero de 2020 a las 7:30 p.m.
  • La zona horaria que puedes usar es “America/Los_Angeles”.
  • Se ejecuta todos los martes.
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"
  }
}

Enumera implementaciones de parches

Console

  1. En la consola de Google Cloud, ve a la página Compute Engine > VM Manager > Parche.

    Ir a la página Parche

  2. Elige la pestaña Implementaciones programadas.

gcloud

Usa el comando os-config patch-deployments list para enumerar las implementaciones de parches.

gcloud compute os-config patch-deployments list

Este comando muestra todas las implementaciones de parches. El resultado se ve de la siguiente manera:

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)

Puedes usar más marcas para limitar y dar formato a la búsqueda. Por ejemplo, para enumerar las primeras 10 implementaciones de parches en páginas de 2, ejecuta el siguiente comando. Reemplaza project-id con el ID del proyecto.

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

REST

En la API, crea una solicitud GET para el método patchDeployments.list. Reemplaza project-id con el ID del proyecto.

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

Describe una implementación de parche

Console

  1. En la consola de Google Cloud, ve a la página Compute Engine > VM Manager > Parche.

    Ir a la página Parche

  2. Elige la pestaña Implementaciones programadas.
  3. Haz clic en el nombre de la implementación que deseas revisar.

gcloud

Usa el comando os-config patch-deployments describe para describir una implementación de parches. Reemplaza patch-deployment-id con el nombre de la implementación de parches.

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

REST

En la API, crea una solicitud GET para el método patchDeployments.get.

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

Reemplaza lo siguiente:

  • project-id: Tu ID del proyecto
  • patch-deployment-id: El nombre de la implementación del parche

Borra una implementación de parche

Console

  1. En la consola de Google Cloud, ve a la página Compute Engine > VM Manager > Parche.

    Ir a la página Parche

  2. Elige la pestaña Implementaciones programadas.
  3. Haz clic en el nombre de la implementación que deseas borrar.
  4. Haz clic en Borrar este programa.

gcloud

Usa el comando os-config patch-deployments delete para borrar una implementación de parches. Reemplaza patch-deployment-id con el nombre de la implementación de parches.

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

REST

En la API, crea una solicitud DELETE para el método patchDeployments.delete.

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

Reemplaza lo siguiente:

  • project-id: Tu ID del proyecto
  • patch-deployment-id: El nombre de la implementación del parche

Próximos pasos