Actualización de AMIs
Los siguientes tutoriales explican cómo actualizar Amazon Machine Image (AMIs) para incluir las revisiones más recientes.
Temas
Actualizar una AMI (AWS CLI) de Linux
En esta explicación de AWS Systems Manager Automation, se muestra cómo utilizar la AWS Command Line Interface (AWS CLI) y el manual de procedimientos AWS-UpdateLinuxAmi
de Systems Manager para aplicar revisiones de forma automática a una Amazon Machine Image (AMI) de Linux con las versiones más recientes de los paquetes que usted 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 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 Amazon Linux Red Hat Enterprise Linux, Ubuntu Server, SLES, o Cent OS Amazon Machine Image (AMI). 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. Puede referenciar automáticamente el último ID de una AMI de Amazon EC2 para Linux mediante un parámetro de AWS Systems Manager Parameter Store público. Para obtener más información, consulte Query for the latest Amazon Linux AMI IDs using AWS Systems Manager Parameter Store |
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. |
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 los siguientes pasos 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 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 Simple Storage Service (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
Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).
Para obtener más información, consulte Instalación o actualización de la última versión de la AWS CLI.
-
Ejecute el siguiente comando para ejecutar el manual de procedimientos
AWS-UpdateLinuxAmi
. Reemplace cadaexample resource placeholder
con su propia información.aws ssm start-automation-execution \ --document-name "AWS-UpdateLinuxAmi" \ --parameters \ SourceAmiId=
AMI ID
, \ IamInstanceProfileName=IAM instance profile
, \ AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole
'El comando devuelve un ID de ejecución. Copie este ID en el portapapeles. Utilizará este ID para ver el estado de la automatización.
{ "AutomationExecutionId": "
automation execution ID
" } -
Ejecute el siguiente comando para ver la automatización con la AWS CLI:
aws ssm describe-automation-executions
-
Ejecute el siguiente comando para ver detalles acerca del progreso de la automatización. Reemplace
automation execution ID
con su propia información.aws ssm get-automation-execution --automation-execution-id
automation execution ID
El proceso de actualización puede tardar 30 minutos o más en completarse.
nota
También puede monitorear el estado de la automatización en la consola. En la lista, elija la automatización que acaba de ejecutar y, a continuación, elija la pestaña Steps (Pasos). Esta pestaña le muestra el estado de las acciones de la automatización.
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.