Enimbos.com
Close

Automatic Patching – AWS

En esta nueva entrada de Blog, nuestro compañero Asier Hernández explicará de manera detallada el procedimiento para realizar un parcheo automático en un entorno AWS. Para ello lo vamos a separar en tres apartados: El primero consistirá en los prerrequisitos que se deben cumplir para poder realizar este proceso, el segundo consistirá en explicar la creación de una stack en cloudformation que usaremos, y por último como crear las ventanas de mantenimiento y a qué instancias queremos que afecten.

 

Prerrequisitos:

Primero se debe comprobar si el agente SSM está instalado en la instancia. En caso de que no esté instalado debemos instalarlo. Si es una instancia Windows primero debemos conectarnos a la máquina en la que vamos a instalar el agente y descargar el ejecutable desde el siguiente enlace.

Una vez se ha descargado ejecutamos el archivo para instalar el agente. Para iniciar o reiniciar el agente podemos hacerlo usando el siguiente comando en la consola de PowerShell: Restart-Service AmazonSSMAgent

El proceso de instalación viene expicado de forma más detallada en el siguiente enlace.

Para que todo funcione correctamente es necesario que el el servicio de Windows Update este activo.

En este caso se ha escogido que Windows Update no compruebe nunca actualizaciones, ya que se instalarán en función de la ventana de mantenimiento que configuraremos más adelante.

Si la instancia es Linux en función de el tipo de Linux que sea se realizará de una forma diferente. En el siguiente enlace se explica como hacerlo para los distintos tipos de Linux.

Una vez tenemos instalado el agente para que este funcione debemos asignar a la instancia los permisos adecuados. Estas instancias deben tener un rol que posea la política AmazonEC2RoleforSSM. El resumen de la política es el siguiente:

Una vez hemos hecho estos pasos podemos comprobar que el agente está funcionando entrando a Systems Manager en AWS.

Ahora pinchamos en el apartado Managed Instances.

Una vez aquí deberían aparecer todas las instancias que tengan el agente configurado, si no aparece nada más configurarse hay que esperar unos 5 minutos para que AWS actualice la información.

 

CloudFormation:

Se usará un stack de CloudFormation para que cree los recursos necesarios para el correcto funcionamiento de las ventanas de mantenimiento que posteriormente se crearán. Primero vamos al apartado de CloudFormation.

Una vez en el menú de CloudFormation seleccionamos la opción de Create Stack y dentro de esa descripción With new resources (standard).

En el menú que se abre seleccionamos la opción ‘Create template in Designer’ y lo pulsamos.

Una vez en el diseñador se introduce la plantilla en la pestaña de Template. El archivo yaml es el siguiente documento: PatchBaseline

Al crearse ya estará localizado en un bucket S3 y ya solo habría que pulsar Next.

Pulsamos en next y le damos nombre a la stack, los parámetros deberían aparecer completados.

Al pulsar en next aparecerán configuraciones referentes a tags, permisos o políticas. Para este ejemplo lo dejaremos como predeterminado y seguiremos adelante.

Una vez avanzamos marcamos la casilla que nos muestra AWS y pulsamos en Create stack.

 

Creación de ventanas de mantenimiento

Ahora vamos al apartado Systems Manager y dentro vamos a Maintenance Windows, en ese apartado podremos crear ventanas de mantenimiento para realizar las actualizaciones automáticas de las distintas instancias desplegadas. La selección se establece mediante reglas definidas.

Una vez estamos en Create Maintenance Window lo primero que se debe introducir es el nombre y una descripción opcional.

Una vez hecho esto configuramos la periodicidad de la ventana. Existen diversas opciones de configuración, en este caso se ha establecido un cron.

La duración establece el tiempo que permanecerá activa la ventana y el campo stop initianting tasks el tiempo antes del fin de la ventana donde no se permite comenzar con nuevas tareas. También se puede definir el periodo mediante fechas específicas.

Una vez creada la ventana se añaden las tareas que se realizarán, lo primero que haremos será crear una imagen de seguridad de la instancia que vamos a actualizar, después se ejecutará el documento encargado de instalar las actualizaciones.

Antes de eso debemos registrar las instancias sobre las que se efectuaran las tareas. Creamos un nuevo grupo y le asignamos un nombre y una descripción.

Para seleccionar las instancias se puede realizar de varias formas, en este caso lo haremos mediante tag. Si una instancia tiene un tag con un valor predeterminado se actualizará.

Ahora crearemos las tareas. Para crear la imagen primero debemos crear la imagen registrando una automation task.

Se elige el documento AWS-CreateImage y se le establece prioridad 1, ya que esta tarea debe ejecutarse la primera. Luego seleccionaremos el target que hemos creado anteriormente.

A continuación, se muestra el porcentaje de máquinas que podrán ejecutar esta tarea de forma concurrente y la cantidad de fallos que se permiten.

También debemos establecer un rol adecuado para la tarea que se va a realizar. En este caso, se debe permitir al SSM crear imágenes de las instancias. El rol que hace falta ya se ha creado con el CloudFormation.

Este documento necesita como entrada el ID del target, que introduciéndolo como viene a continuación, se elegirá el asociado a la tarea. También podemos elegir si las máquinas se reiniciarán las instancias al acabar la tarea. Para que se reinicien se pone el valor a false.

La segunda tarea será un Run command. Esta será la encargada de ejecutar las actualizaciones en las instancias.

En este caso el documento que se selecciona es AWS-RunPatachBaseline y establecemos la prioridad a II, para asegurarnos que no se hace antes que la copia de las instancias.

Ahora las opciones son las mismas que las anteriores.

Los parámetros importantes de este documento son el modo de operación y si debe reiniciarse la instancia o no. En este caso elegiremos install y RebootIfNeeded.

Al acabar podemos ver en la pestaña de descripción de la ventana los detalles como cuando será la siguiente ejecución, su duración, estado o la zona horaria en la que se basa.

En la pestaña task se podrá ver de forma esquemática el orden de las tareas y sus documentos asociados.

Con esto ya tendríamos configurada una parcheo automático en AWS.

Related Posts