Programa trabajos de aplicación de parches

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

Puedes programar los trabajos de parche mediante Google Cloud Console, la herramienta de línea de comandos de gcloud o la API de configuración del SO de Cloud.

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 los siguientes elementos:

  • project-id: el ID del proyecto
  • user-id: El nombre del usuario en G Suite

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 la herramienta de línea de comandos de gcloud y la API de configuración del SO de Cloud, el nombre de la implementación de parches se conoce como patch-deployment-id.

Una vez que hayas iniciado una implementación de parches, puedes supervisar los parches mediante el panel de administración de parches de SO. 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 Google Cloud Console, ve a la página Administración de parches del SO.

    Ir a la página Administración de parches del SO

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

    Por ejemplo, a fin de ejecutar un trabajo de aplicación de parche para las VM ubicadas en asia-east1-c y asia-east2-b y tienen los siguientes filtros:

    • Prefijo del nombre: test-
    • Etiquetas: env=dev y app=web

    Tu selección sería similar a lo siguiente:

    Página Administración de parches de SO con filtros de instancia.

  4. En la sección Configuración del parche, completa estos datos:

    1. Especifica un Nombre para el parche.
    2. Selecciona 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 Patch rollout options, configura las opciones de lanzamiento:

    • Selecciona 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 realizar las siguientes tareas en la sección Opciones avanzadas:

    • Seleccionar una opción de reinicio
    • Subir 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 los siguientes elementos:

  • 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 a fin de 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'

API

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 los siguientes elementos:

  • project-id: Tu 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 Google Cloud Console, ve a la página Administración de parches de SO.

    Ir a la página Administración de parches de SO

  2. Selecciona 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

API

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 parches

Console

  1. En Google Cloud Console, ve a la página Administración de parches de SO.

    Ir a la página Administración de parches de SO

  2. Selecciona 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

API

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 parches

Console

  1. En Google Cloud Console, ve a la página Administración de parches de SO.

    Ir a la página Administración de parches de SO

  2. Selecciona 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

API

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