Actualización de un Windows Server AMI - AWS Systems Manager

Actualización de un Windows Server AMI

El manual de procedimientos AWS-UpdateWindowsAmi le permite automatizar las tareas de mantenimiento de imágenes en sus Amazon Machine Image (AMI) de Amazon Windows sin tener que crear el manual de procedimientos en JSON o YAML. Este manual de procedimientos es compatible con Windows Server 2008 R2 o versiones posteriores. Puede utilizar el manual de procedimientos AWS-UpdateWindowsAmi para realizar los siguientes tipos de tareas.

  • Instalar todas las actualizaciones de Windows y actualizar el software de Amazon (comportamiento predeterminado).

  • Instalar actualizaciones de Windows específicas y actualizar el software de Amazon.

  • Personalizar una AMI con sus propios scripts.

Antes de empezar

Antes de empezar a trabajar con manuales de procedimientos, configure roles para Automation a fin de agregar una política iam:PassRole que referencie el ARN del perfil de instancia al que desea conceder acceso. De forma opcional, configure Amazon EventBridge para Automation, una capacidad de AWS Systems Manager. 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.

nota

Las actualizaciones de AWS Systems Manager SSM Agent normalmente se implementan en diferentes regiones y en distintos momentos. Al personalizar o actualizar una AMI, utilice únicamente las AMI de origen publicadas para la región en la que está trabajando. De este modo, se asegurará de que está trabajando con el último SSM Agent lanzado para esa región y evitará problemas de compatibilidad.

El manual de procedimientos AWS-UpdateWindowsAmi 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 ID de la versión más reciente de la AMI de Windows Server mediante un parámetro de Systems Manager Parameter Store público. Para obtener más información, consulte Query for the latest Windows AMI IDs using AWS Systems ManagerParameter Store.

SubnetId

Cadena

(Opcional) La subred en la que quiere lanzar la instancia temporal. Debe especificar un valor para este parámetro si ha eliminado su VPC predeterminada.

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 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.medium.

PreUpdateScript

Cadena

(Opcional) Un script que se ejecutará antes de actualizar la AMI. Ingrese un script en el manual de procedimientos o en el tiempo de ejecución como parámetro.

PostUpdateScript

Cadena

(Opcional) Un script que se ejecutará después de actualizar la AMI. Ingrese un script en el manual de procedimientos o en el tiempo de ejecución como parámetro.

IncludeKbs

Cadena

(Opcional) Especifique uno o varios ID de artículo de la Base de conocimientos de Microsoft (KB) para incluirlos. Puede instalar varios ID utilizando valores separados por comas. Formatos válidos: KB9876543 o 9876543.

ExcludeKbs

Cadena

(Opcional) Especifique uno o varios ID de artículo de la Base de conocimientos de Microsoft (KB) para excluirlos. Puede excluir varios ID utilizando valores separados por comas. Formatos válidos: KB9876543 o 9876543.

Categorías

Cadena

(Opcional) Especifique una o más categorías de actualización. Puede filtrar las categorías usando valores separados por comas. Opciones: Critical Update, Security Update, Definition Update, Update Rollup, Service Pack, Tool, Update o Driver. Los formatos válidos incluyen una sola entrada, por ejemplo: Critical Update. O bien, puede especificar una lista separada por comas: Critical Update,Security Update,Definition Update.

SeverityLevels

Cadena

(Opcional) Especifique uno o varios niveles de seguridad de MSRC asociados con una actualización. Puede filtrar los niveles de gravedad usando valores separados por comas. Opciones: Critical, Important, Low, Moderate o Unspecified. Los formatos válidos incluyen una sola entrada, por ejemplo: Critical. O bien, puede especificar una lista separada por comas: Critical,Important,Low.

Pasos de Automation

El manual de procedimientos AWS-UpdateWindowsAmi incluye los siguientes pasos de forma predeterminada.

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

Este paso lanza una instancia con un rol de perfil de instancia de IAM desde el SourceAmiID especificado.

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

Este paso le permite especificar un script como una cadena que se ejecuta antes de que se instalen las actualizaciones.

Paso 3: updateEC2Config (acción aws:runCommand)

En este paso, se utiliza el manual de procedimientos AWS-InstallPowerShellModule para descargar un módulo de PowerShell de AWS público. Systems Manager verifica la integridad del módulo con un hash SHA-256. A continuación, Systems Manager revisa el sistema operativo para determinar si debe actualizar EC2Launch o EC2Config. EC2Config se ejecuta desde Windows Server 2008 R2 a Windows Server 2012 R2. EC2Launch se ejecuta en Windows Server 2016.

Paso 4: updateSSMAgent (acción aws:runCommand)

Este paso actualiza SSM Agent con el manual de procedimientos AWS-UpdateSSMAgent.

Paso 5: updateAWSPVDriver (acción aws:runCommand)

Este paso actualiza controladores PV de AWS con el manual de procedimientos AWS-ConfigureAWSPackage.

Paso 6: updateAwsEnaNetworkDriver (acción aws:runCommand)

Este paso actualiza controladores de red ENA de AWS con el manual de procedimientos AWS-ConfigureAWSPackage.

Paso 7: installWindowsUpdates (acción aws:runCommand)

Este paso instala actualizaciones de Windows con el manual de procedimientos AWS-InstallWindowsUpdates. De forma predeterminada, Systems Manager busca e instala todas las actualizaciones que faltan. Puede cambiar el comportamiento predeterminado si especifica uno de los siguientes parámetros: IncludeKbs, ExcludeKbs, Categories o SeverityLevels.

Paso 8: runPostUpdateScript (acción aws:runCommand)

Este paso le permite especificar un script como una cadena que se ejecuta después de que se hayan instalado las actualizaciones.

Paso 9: runSysprepGeneralize (acción aws:runCommand)

En este paso, se utiliza el manual de procedimientos AWS-InstallPowerShellModule para descargar un módulo de PowerShell de AWS público. Systems Manager verifica la integridad del módulo con un hash SHA-256. A continuación, Systems Manager ejecuta sysprep mediante el uso de métodos admitidos por AWS para EC2Launch (Windows Server 2016) o EC2Config (Windows Server 2008 R2 a 2012 R2).

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

Este paso detiene la instancia actualizada.

Paso 11: 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 12: TerminateInstance (acción aws:changeInstanceState)

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

Salida

Esta sección le permite designar las salidas de diversos pasos o los valores de cualquier parámetro como la salida de Automation. De forma predeterminada, la salida es el ID de la AMI de Windows actualizada que se creó con la automatización.

nota

De forma predeterminada, cuando Automation ejecuta el manual de procedimientos AWS-UpdateWindowsAmi y crea una instancia temporal, el sistema usa 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-UpdateWindowsAmi y especificar un ID de subred. Para obtener más información, consulte VPC not defined 400.

Para crear una AMI de Windows con revisiones mediante Automation
  1. 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.

  2. Ejecute el siguiente comando para ejecutar el manual de procedimientos AWS-UpdateWindowsAmi. Reemplace cada example resource placeholder con su propia información. El comando de ejemplo que aparece a continuación utiliza una AMI de Amazon EC2 reciente para minimizar el número de revisiones que es necesario aplicar. Si ejecuta este comando más de una vez, debe especificar un valor único para targetAMIname. Los nombres para las AMI deben ser únicos.

    aws ssm start-automation-execution \ --document-name="AWS-UpdateWindowsAmi" \ --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"
    }
  3. Ejecute el siguiente comando para ver la automatización con la AWS CLI:

    aws ssm describe-automation-executions
  4. Ejecute el siguiente comando para ver detalles acerca del progreso de la automatización.

    aws ssm get-automation-execution --automation-execution-id automation execution ID
nota

En función del número de revisiones aplicados, el proceso de aplicación de revisiones de Windows que se ejecuta en esta automatización de muestra puede tardar 30 minutos o más en completarse.