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 |
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)
Abra la consola de AWS Systems Manager en https://console.aws.amazon.com/systems-manager/
. En el panel de navegación, elija automatización.
-
Elija Ejecutar automatización.
-
En la lista Automation document (Documento de Automation), elija
AWS-UpdateLinuxAmi
. -
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).
-
Elija Siguiente.
-
En la sección Execution mode (Modo de ejecución), seleccione Simple Execution (Ejecución sencilla).
-
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).
-
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.