He estado mirando cómo parchear periódicamente mis instancias de EC2 de manera automática. En un principio había pensado en AWS Systems Manager, que tiene un módulo de parcheo, pero las buenas prácticas dicen que antes de parchear nada tienes que apagar el servidor y hacer un snapshot del disco de sistema operativo y, SSM no tiene o no he sabido ver la manera de realizar este punto.
Así que me he decantado por CloudWatch y Lambda para parchear una instancia T2 medium de pruebas.
Desde CloudWatch podemos llamar a las funciones para:
- Parar instancias EC2
- Crear un snapshot de un disco EBS
- Ejecutar un comando en remoto con SSM
Pero le falta la función de arranque de instancias EC2. Por eso he utilzado Lambda.
El código fuente de esta función es el siguiente:
import boto3
ec2 = boto3.client(‘ec2′, region_name=’eu-west-1’)
def lambda_handler(event, context):
instances=event[‘instanceid’]
ec2.start_instances(InstanceIds=[instances])
print ‘Instancia arranc ada: ‘ + str([instances])
Como se puede observar, le paso por parámetro el ID de la instancia que quiero arrancar.
Seguidamente, defino el diagrama de flujo de CloudWatch y lo programo mensualmente. Veréis que fácil:
- Programamos la tarea cada 30 días:
Por cierto, si la quisiéramos programar a las 22:30 de cada mes, elegiríamos «Cron expression» con el siguiente valor:
30 19 07 * ? *
Tienes más información de cron expresion en este enlace.
Seguidamente, configuramos el diagrama de flujo de parcheo:
- Paramos la instancia (pasamos por parámetro su ID).
- Creamos un snapshot del disco de root (volvemos a pasar por parámetro su ID).
- La arrancamos con la función Lambda creada anteriormente.
- Con AWS Systems Manager ejecutamos el comando de actualización de parches (yum update) y de reboot.
Estas son las capturas de pantalla del diagrama de flujo:
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,