Actualizar una AMI de Linux - AWS Systems Manager

Actualizar una AMI de Linux

Este tutorial de Automatización de Systems Manager le muestra cómo utilizar la consola o AWS CLI y el manual de procedimientos de AWS-UpdateLinuxAmi para actualizar una AMI de Linux con las revisiones más recientes de los paquetes que especifique. Automation es una capacidad de AWS Systems Manager. El manual de procedimientos AWS-UpdateLinuxAmi también automatiza la instalación de paquetes y configuraciones adicionales que sean específicos del sitio. Puede actualizar diversas distribuciones de Linux con esta explicación, incluidas Ubuntu Server, CentOS, RHEL, SLES o Amazon Linux AMIs. Para obtener una lista completa de las versiones de Linux compatibles, consulte Requisitos previos de Patch Manager.

El manual de procedimientos de AWS-UpdateLinuxAmi le permite automatizar las tareas de mantenimiento de imágenes sin tener que crear el manual de procedimientos en JSON o YAML. Puede utilizar el manual de procedimientos AWS-UpdateLinuxAmi para realizar los siguientes tipos de tareas.

  • Actualizar todos los paquetes de distribución y el software de Amazon en una Amazon Machine Image (AMI) de Amazon Linux, Red Hat Enterprise Linux, Ubuntu Server, SUSE Linux Enterprise Server o CentOS. Este es el comportamiento predeterminado del manual de procedimientos.

  • Instalar AWS Systems Manager SSM Agent en una imagen existente para habilitar las capacidades de Systems Manager, como la ejecución remota de comandos mediante AWS Systems Manager Run Command o la recopilación de inventario de software con Inventory.

  • Instalar paquetes de software adicionales.

Antes de empezar

Antes de empezar a trabajar con los manuales de procedimientos, configure los roles y, opcionalmente, EventBridge para Automation. Para obtener más información, consulte Configuración de Automation. Esta explicación también requiere que especifique el nombre de un perfil de instancia de AWS Identity and Access Management (IAM). Para obtener más información sobre cómo crear un perfil de instancia de IAM, consulte Configuración de permisos de instancia requeridos para Systems Manager.

El manual de procedimientos AWS-UpdateLinuxAmi acepta los siguientes parámetros de entrada.

Parámetro Tipo Descripción

SourceAmiId

Cadena

(Obligatorio) ID de AMI de origen.

IamInstanceProfileName

Cadena

(Obligatorio) Nombre del rol de perfil de instancia de IAM que ha creado en Configuración de permisos de instancia requeridos para Systems Manager. El rol de perfil de instancia concede permiso a Automation para que realice acciones en sus instancias, como ejecutar comandos o iniciar y detener servicios. El manual de procedimientos utiliza únicamente el nombre del rol de perfil de instancia. Si especifica el nombre de recurso de Amazon (ARN), se produce un error en la automatización.

AutomationAssumeRole

Cadena

(Obligatorio) El nombre del rol de servicio de IAM que ha creado en Configuración de Automation. El rol de servicio (también denominado rol de asunción) concede permiso a Automation para asumir el rol de IAM y realizar acciones en su nombre. Por ejemplo, el rol de servicio permite a Automation crear una AMI nueva al ejecutar la acción aws:createImage en un manual de procedimientos. Para este parámetro, debe especificarse el ARN completo.

TargetAmiName

Cadena

(Opcional) El nombre de la nueva AMI después de que se cree. El nombre predeterminado es una cadena generada por el sistema que incluye el ID de la AMI de origen, así como la hora y la fecha de creación.

InstanceType

Cadena

(Opcional) El tipo de instancia que se lanzará como el host de espacio de trabajo. Los tipos de instancia varían según la región. El tipo predeterminado es t2.micro.

PreUpdateScript

Cadena

(Opcional) La URL de un script que se ejecutará antes de que se apliquen las actualizaciones. El valor predeterminado (\"none\") es no ejecutar un script.

PostUpdateScript

Cadena

(Opcional) La URL de un script que se ejecutará después de que se apliquen las actualizaciones de paquete. El valor predeterminado (\"none\") es no ejecutar un script.

IncludePackages

Cadena

(Opcional) Actualizar solo estos paquetes designados. De forma predeterminada (\"all\"), se aplican todas las actualizaciones disponibles.

ExcludePackages

Cadena

(Opcional) Nombres de los paquetes a los que no se aplicarán las actualizaciones, en todas las condiciones. De forma predeterminada (\"none\"), no se excluye ningún paquete.

Pasos de Automation

El manual de procedimientos AWS-UpdateLinuxAmi incluye las siguientes acciones de automatización de forma predeterminada.

Paso 1: launchInstance (acción aws:runInstances)

En este paso, se lanza una instancia con los datos de usuario de Amazon Elastic Compute Cloud (Amazon EC2) y un rol de perfil de instancia de IAM. Los datos de usuario instalan el SSM Agent adecuado en función del sistema operativo. La instalación del SSM Agent le permite utilizar capacidades de Systems Manager, como Run Command, State Manager e Inventory.

Paso 2: updateOSSoftware (acción aws:runCommand)

Este paso ejecuta los siguientes comandos en la instancia lanzada:

  • Descarga un script de actualización de Amazon S3.

  • Ejecuta un script de preactualización opcional.

  • Actualiza los paquetes de distribución y el software de Amazon.

  • Ejecuta un script de posactualización opcional.

El registro de ejecución se almacena en la carpeta /tmp para que el usuario la consulte más tarde.

Si desea actualizar un conjunto específico de paquetes, puede proporcionar la lista utilizando el parámetro IncludePackages. Cuando se proporciona, el sistema intenta actualizar únicamente estos paquetes y sus dependencias. No se realizan otras actualizaciones. De forma predeterminada, cuando no se especifica ningún paquete de inclusión, el programa actualiza todos los paquetes disponibles.

Si desea excluir la actualización de un conjunto específico de paquetes, puede proporcionar la lista al parámetro ExcludePackages. Si se proporciona, estos paquetes permanecen en su versión actual, independientemente de otras opciones especificadas. De forma predeterminada, cuando no se especifica ningún paquete de exclusión, no se excluye ningún paquete.

Paso 3: stopInstance (acción aws:changeInstanceState)

Este paso detiene la instancia actualizada.

Paso 4: createImage (acción aws:createImage)

Este paso crea una AMI con un nombre descriptivo que se enlaza con ID de origen y la hora de creación. Por ejemplo: “AMI generada con EC2 Automation a la(s) {{global:DATE_TIME}} a partir de {{SourceAmiId}}” donde DATE_TIME y SourceID representan variables de Automation.

Paso 5: terminateInstance (acción aws:changeInstanceState)

Este paso limpia la automatización con la terminación de la instancia en ejecución.

Salida

La automatización devuelve el ID de la AMI nueva como salida.

nota

De forma predeterminada, cuando Automation ejecuta el manual de procedimientos AWS-UpdateLinuxAmi, el sistema crea una instancia temporal en la VPC predeterminada (172.30.0.0/16). Si ha eliminado la VPC predeterminada, recibirá el siguiente error:

VPC not defined 400

Para solucionar este problema, debe generar una copia del manual de procedimientos AWS-UpdateLinuxAmi y especificar un ID de subred. Para obtener más información, consulte VPC not defined 400.

Para crear una AMI con revisiones mediante Automation (AWS Systems Manager)
  1. Abra la consola de AWS Systems Manager en https://console.aws.amazon.com/systems-manager/.

  2. En el panel de navegación, elija automatización.

  3. Elija Ejecutar automatización.

  4. En la lista Automation document (Documento de Automation), elija AWS-UpdateLinuxAmi.

  5. En la sección Document details (Detalles del documento), compruebe que el valor de Document version (Versión del documento) es Default version at runtime (Versión predeterminada en tiempo de ejecución).

  6. Elija Siguiente.

  7. En la sección Execution mode (Modo de ejecución), seleccione Simple Execution (Ejecución sencilla).

  8. En la sección Input parameters (Parámetros de entrada), ingrese la información que ha recopilado en la sección Before you begin (Antes de empezar).

  9. Elija Ejecutar. La consola muestra el estado de la ejecución de Automation.

Una vez finalizada la automatización, lance una instancia de prueba desde la AMI actualizada para verificar los cambios.

nota

Si se produce un error en cualquier paso de la automatización, la información acerca del error se muestra en la página Automation Executions (Ejecuciones de automatizaciones). La automatización está diseñada para terminar la instancia temporal después de completar correctamente todas las tareas. Si se produce un error en un paso, puede que el sistema no finalice la instancia. Por lo tanto, si se produce un error en un paso, termine manualmente la instancia temporal.