Programar tareas de parches

Además de ejecutar tareas de parche a petición, puede que quieras que las tareas de parche se ejecuten automáticamente según una programación determinada. Para ello, crea una implementación de parches.

Cada despliegue de parches puede tener una programación única, que ejecuta una tarea de parche en una fecha y hora específicas, o una programación periódica, que ejecuta una tarea de parche en un intervalo especificado.

Los filtros de instancias te permiten parchear muchas instancias al mismo tiempo. Estos filtros se aplican a cada trabajo de parche individual en el momento en que se ejecuta. De esta forma, los cambios que hagas en tu proyecto se registrarán en tiempo real. Por ejemplo, supongamos que se crea un despliegue de parches para aplicar parches a todas las instancias de la zona asia-souteast1-b a partir de dentro de dos semanas. En el momento de crear el parche, tenías 20 instancias en la zona, pero unos días después se añadieron 40 instancias nuevas. Como el filtro se aplica cuando empieza el parche, se actualizan las 60 instancias. De esta forma, puedes añadir y quitar instancias sin tener que actualizar la programación de la implementación de parches.

Antes de empezar

  • Consulta las cuotas de OS Config.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Puedes programar tus tareas de parche mediante la Google Cloud consola, la CLI de Google Cloud o REST.

Permisos

Los propietarios de un proyecto tienen acceso completo para crear y gestionar implementaciones de parches. En el caso del resto de los usuarios, debes conceder permisos. Puedes conceder uno de los siguientes roles granulares:

  • roles/osconfig.patchDeploymentAdmin: contiene permisos para crear, eliminar, obtener y mostrar despliegues de parches.
  • roles/osconfig.patchDeploymentViewer: contiene permisos de acceso de solo lectura para obtener y enumerar despliegues de parches.

Por ejemplo, para conceder acceso de administrador a un usuario 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

Haz los cambios siguientes:

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

Crear un despliegue de parches

Cuando creas un despliegue de parche, el nombre debe cumplir los siguientes requisitos:

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

En Google Cloud CLI y REST, el nombre del despliegue de parches se denomina patch-deployment-id.

Una vez que hayas iniciado un despliegue de parches, podrás monitorizar tus parches mediante el panel de parches. Los datos tardan aproximadamente 30 minutos en aparecer en el panel de control después de que se inicie una tarea de parche.

consola

  1. En la Google Cloud consola, ve a Compute Engine > Gestor de VMs > Parche.

    Ir a la página de parches

  2. Haga clic en Nuevo despliegue de parches.
  3. En la sección VMs de destino, selecciona la zona que contiene las VMs a las que quieres aplicar el parche. También puedes seleccionar todas las zonas.

    Por ejemplo, para aplicar el parche solo a ciertas VM de las zonas seleccionadas, introduce los filtros correspondientes a su nombre y etiqueta, como se muestra a continuación:

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

    1. Especifica un nombre para el parche.
    2. Selecciona las actualizaciones necesarias para tu sistema operativo. Para obtener más información, consulta qué se incluye en un trabajo de parche del SO.
  5. En la sección Programación, haz lo siguiente:

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

    • Selecciona si quieres aplicar el parche a una zona cada vez o a varias zonas simultáneamente.
    • Define un presupuesto de interrupción. Un presupuesto de interrupciones es el número o el porcentaje de VMs de una zona que quieres que se interrumpan a la vez durante el proceso de aplicación de parches.
  7. (Opcional) En la sección Opciones avanzadas, puedes completar las siguientes tareas:

  8. Haz clic en Desplegar.

gcloud

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

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

Haz los cambios siguientes:

  • patch-deployment-id: el nombre de tu implementación de parche.
  • patch-deployment-file: ruta al archivo YAML o JSON que contiene las configuraciones de la implementación de parches.

Ejemplos de archivos YAML de despliegue de parches

El siguiente archivo YAML de ejemplo se puede usar para crear una programación periódica para todas las instancias de las zonas us-west2-b y us-west2-c. La programación periódica tiene las siguientes especificaciones:

  • Fecha de inicio: 9 de enero del 2019 a las 19:30
  • La fecha de finalización es el 9 de enero del 2020 a las 19:30.
  • La zona horaria que se va a usar es "America/Los_Angeles".
  • Se ejecuta todas las semanas 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 parche. Debe definir explícitamente todos los campos de configuración obligatorios, tal como se describe en la documentación de la API patchDeployments.create. Por ejemplo, una implementación de parche con los campos mínimos obligatorios (filtro de instancia y programación) tiene el siguiente aspecto. Sustituye project-id por el ID de tu 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
}

Haz los cambios siguientes:

  • project-id: tu ID de proyecto.
  • instance-filter: los parámetros de filtro que quieras. Para obtener más información sobre los filtros de instancias, consulte Filtros de instancias.
  • schedule: proporciona el parámetro oneTimeSchedule o recurringSchedule, que incluye detalles sobre los parámetros de programación, como la fecha, la hora y la frecuencia con la que se debe ejecutar la tarea de parche.

Ejemplos

Ejemplo 1: Crea una programación única para ejecutar un trabajo de parche el 10 de enero del 2020 a las 00:00 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 una programación periódica para todas las instancias de las zonas us-west2-b y us-west2-c. La programación periódica tiene las siguientes especificaciones:

  • Fecha de inicio: 9 de enero del 2019 a las 19:30
  • La fecha de finalización es el 9 de enero del 2020 a las 19:30.
  • La zona horaria que se va a usar es "America/Los_Angeles".
  • Se ejecuta todas las semanas 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"
  }
}

Mostrar despliegues de parches

consola

  1. En la Google Cloud consola, ve a Compute Engine > Gestor de VMs > Parche.

    Ir a la página de parches

  2. Seleccione la pestaña Despliegues programados.

gcloud

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

gcloud compute os-config patch-deployments list

Este comando devuelve todas las implementaciones de parches. La salida es similar a la siguiente:

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 tu búsqueda. Por ejemplo, para enumerar las 10 primeras implementaciones de parches en páginas de 2, ejecuta el siguiente comando. Sustituye project-id por el ID de tu proyecto.

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

REST

En la API, crea una solicitud GET al método patchDeployments.list. Sustituye project-id por el ID de tu proyecto.

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

Describe un despliegue de parche

consola

  1. En la Google Cloud consola, ve a Compute Engine > Gestor de VMs > Parche.

    Ir a la página de parches

  2. Seleccione la pestaña Despliegues programados.
  3. Haga clic en el nombre de la implementación que quiera revisar.

gcloud

Usa el comando os-config patch-deployments describe para describir una implementación de parche. Sustituye patch-deployment-id por el nombre de tu implementación de parches.

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

REST

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

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

Haz los cambios siguientes:

  • project-id: tu ID de proyecto.
  • patch-deployment-id: el nombre del despliegue del parche.

Eliminar un despliegue de parches

consola

  1. En la Google Cloud consola, ve a Compute Engine > Gestor de VMs > Parche.

    Ir a la página de parches

  2. Seleccione la pestaña Despliegues programados.
  3. Haga clic en el nombre de la implementación que quiera eliminar.
  4. Haz clic en Eliminar esta programación.

gcloud

Usa el comando os-config patch-deployments delete para eliminar una implementación de parches. Sustituye patch-deployment-id por el nombre de tu implementación de parches.

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

REST

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

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

Haz los cambios siguientes:

  • project-id: tu ID de proyecto.
  • patch-deployment-id: el nombre del despliegue del parche.

Siguientes pasos