Configurar una instancia de Windows utilizando EC2Launch - Amazon Elastic Compute Cloud

Configurar una instancia de Windows utilizando EC2Launch

EC2Launch es un conjunto de scripts de Windows PowerShell que sustituyó al servicio EC2Config en las AMI de Windows Server 2016 y 2019. Muchas de estas AMI siguen disponibles. El último servicio de inicialización para todas las versiones compatibles de Windows Server es EC2Launch v2, que reemplaza tanto EC2Config como EC2Launch. Para obtener más información, consulte Configurar una instancia de Windows mediante EC2Launch v2.

nota

Para utilizar EC2Launch con IMDSv2, la versión debe ser la 1.3.2002730 o posterior.

Tareas de EC2Launch

EC2Launch realiza las siguientes tareas de manera predeterminada cuando la instancia se inicia por primera vez:

  • Configura un fondo de pantalla nuevo en el que se representa información sobre la instancia.

  • Establece el nombre del equipo en la dirección IPv4 privada de la instancia.

  • Envía información sobre la instancia a la consola de Amazon EC2.

  • Envía la huella digital del certificado RDP a la consola de EC2.

  • Establece una contraseña aleatoria para la cuenta de administrador.

  • Añade sufijos de DNS.

  • Amplía dinámicamente la partición del sistema operativo para incluir cualquier espacio sin particionar.

  • Ejecuta datos de usuario (si se especifica). Para obtener más información acerca de cómo especificar datos de usuario, consulte Trabajar con los datos de usuario de la instancia.

  • Establece rutas estáticas persistentes para alcanzar el servicio de metadatos y los servidores AWS KMS.

    importante

    Si se crea una AMI personalizada desde esta instancia, estas rutas se capturan como parte de la configuración del SO y todas las instancias nuevas iniciadas desde la AMI conservarán las mismas rutas, independientemente de la ubicación de la subred. Para actualizar las rutas, consulte Actualice las rutas de metadatos/KMS para Server 2016 y versiones posteriores al iniciar una AMI personalizada..

La siguientes tareas ayudan a mantener la compatibilidad con versiones anteriores del servicio EC2Config. También puede configurar EC2Launch para que realice estas tareas al inicio:

  • Inicializar volúmenes de EBS secundarios.

  • Enviar registros de eventos de Windows a los registros de la consola de EC2.

  • Enviar el mensaje Windows is ready to use (Windows está listo para utilizarse) a la consola de EC2.

Para obtener más información acerca de Windows Server 2019, consulte Comparación de características entre las versiones de Windows Server en Microsoft.com.

Telemetría

La telemetría es información adicional que ayuda a AWS a comprender mejor sus requisitos, diagnosticar problemas y ofrecer recursos para mejorar su experiencia con los servicios de AWS.

La versión 1.3.2003498 de EC2Launch y posteriores recopilan telemetría, como métricas de uso y errores. Estos datos se recopilan de la instancia de Amazon EC2 en la que se ejecuta EC2Launch. Esto incluye todas las AMI de Windows que son propiedad de AWS.

EC2Launch recopila los siguientes tipos de telemetría:

  • Información de uso: comandos del agente, método de instalación y frecuencia de ejecución programada.

  • Errores e información de diagnóstico: instalación del agente y ejecución de códigos de error.

Ejemplos de datos recopilados:

2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true 2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsUserDataScheduledPerBoot=true 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandCode=1 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandErrorCode=5 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallCode=2 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallErrorCode=0

La telemetría se encuentra habilitada de forma predeterminada. Puede desactivar la recopilación de telemetría en cualquier momento. Si la telemetría se encuentra habilitada, EC2Launch envía datos de telemetría sin notificaciones adicionales de los clientes.

Se recopila la elección de habilitar o desactivar la telemetría.

Puede optar por activar o desactivar la recolección de telemetría. Se recopila la opción elegida para participar o no de la telemetría a fin de garantizar que se cumpla con la opción de telemetría seleccionada.

Visibilidad de telemetría

Cuando la telemetría se encuentra habilitada, aparece en el resultado de la consola de Amazon EC2 de la siguiente manera:

2021/07/15 21:44:12Z: Telemetry: <Data>
Desactivar la telemetría en una instancia

Para desactivar la telemetría al establecer una variable de entorno de sistema, ejecute el siguiente comando como administrador:

setx /M EC2LAUNCH_TELEMETRY 0

Para desactivar la telemetría durante la instalación, ejecute install.ps1 de la siguiente manera:

. .\install.ps1 -EnableTelemetry:$false

Verificación de la versión de EC2Launch

Use el siguiente comando de Windows PowerShell para verificar la versión instalada de EC2Launch.

PS C:\> Test-ModuleManifest -Path "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1" | Select Version

Estructura de directorios de EC2Launch

EC2Launch se instala de manera predeterminada en las AMI para Windows Server 2016 y versiones posteriores, en el directorio raíz C:\ProgramData\Amazon\EC2-Windows\Launch.

nota

De manera predeterminada, Windows oculta los archivos y las carpetas en C:\ProgramData. Para ver los directorios y los archivos de EC2Launch, debe escribir la ruta de acceso en el Explorador de Windows o cambiar las propiedades de carpeta para ver los archivos y carpetas ocultos.

El directorio Launch contiene los subdirectorios siguientes.

  • Scripts — contiene los scripts de PowerShell que conforman EC2Launch.

  • Module — contiene el módulo para crear scripts relacionados con Amazon EC2.

  • Config — contiene archivos de configuración de scripts que se pueden personalizar.

  • Sysprep — contiene los recursos de Sysprep.

  • Settings — contiene una aplicación para la interfaz gráfica de usuario de Sysprep.

  • Library: contiene bibliotecas de uso compartido para los agentes de inicialización de EC2.

  • Logs — contiene los archivos de registro generados por los scripts.

Versión 1.3.2004592 y posteriores de EC2Launch

Los usuarios del grupo Administrators tienen permisos Full control para acceder a todos los directorios de EC2launch. Los usuarios que no están en el grupo Administradores tienen permisos Read & execute para acceder a todos los directorios de EC2launch excepto C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Config. El directorio Config está restringido a los usuarios que son miembros del grupo Administrators.

Versión 1.3.2004491 y anteriores de EC2Launch

Todos los directorios EC2Launch heredan sus permisos de C:\ProgramData, excepto C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Scripts. Esta carpeta hereda todos los permisos iniciales de C:\ProgramData cuando se crea, pero quita el acceso de los usuarios normales a CreateFiles en el directorio.

Configurar EC2Launch

Después de inicializar por primera vez la instancia, puede volver a configurar EC2Launch para que se vuelva a ejecutar y realice diferentes tareas al inicio.

Configurar tareas de inicialización

Especifique las opciones en el archivo LaunchConfig.json para habilitar o deshabilitar las siguientes tareas de inicialización:

  • Establezca el nombre del equipo en la dirección IPv4 privada de la instancia.

  • Configura el monitor para que permanezca siempre encendido.

  • Configurar un fondo de pantalla nuevo.

  • Añadir una lista de sufijos de DNS.

    nota

    Esto agrega una búsqueda de sufijos de DNS para el siguiente dominio y configura otros sufijos estándar. Para obtener más información acerca de cómo los agentes de inicialización configuran los sufijos de DNS, consulte Configuración del sufijo de DNS.

    region.ec2-utilities.amazonaws.com
  • Ampliar el tamaño del volumen de arranque.

  • Establecer la contraseña del administrador.

Para configurar los ajustes de inicialización
  1. En la instancia que se va a configurar, abra el archivo siguiente en un editor de texto: C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json.

  2. Actualice la configuración siguiente como sea necesario y guarde los cambios. Proporcione una contraseña en adminPassword solo si adminPasswordtype es Specify.

    { "setComputerName": false, "setMonitorAlwaysOn": true, "setWallpaper": true, "addDnsSuffixList": true, "extendBootVolumeSize": true, "handleUserData": true, "adminPasswordType": "Random | Specify | DoNothing", "adminPassword": "password that adheres to your security policy (optional)" }

    Los tipos de contraseñas se definen de la siguiente manera:

    Random

    EC2Launch genera una contraseña y la cifra usando la clave del usuario. El sistema deshabilita esta configuración tras la inicialización de la instancia para que esta contraseña persista si la instancia se reinicia o si se detiene y se inicia.

    Specify

    EC2Launch usa la contraseña que ha especificado en adminPassword. Si la contraseña no cumple los requisitos del sistema, EC2Launch genera una contraseña aleatoria en su lugar. La contraseña se almacena en LaunchConfig.json como texto sin cifrar y se elimina cuando Sysprep define la contraseña del administrador. EC2Launch cifra la contraseña usando la clave del usuario.

    DoNothing

    EC2Launch usa la contraseña que ha especificado en el archivo unattend.xml. Si no especifica una contraseña en el archivo unattend.xml, la cuenta del administrador se deshabilitará.

  3. En Windows PowerShell, ejecute el siguiente comando para programar el script para que se ejecute como una tarea programada de Windows. El script se ejecuta una vez durante el siguiente arranque y, luego, deshabilita estas tareas para que no vuelvan a ejecutarse.

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule

Programar EC2Launch para que se ejecute en cada arranque

Puede programar EC2Launch para que se ejecute en cada arranque en lugar de solo en el arranque inicial.

Para permitir que EC2Launch se ejecute en cada arranque:

  1. Abra Windows PowerShell y ejecute el comando siguiente:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
  2. O lance el ejecutable con el siguiente comando:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe

    A continuación, seleccione Run EC2Launch on every boot. Puede especificar que su instancia EC2 Shutdown without Sysprep o Shutdown with Sysprep.

nota

Si permite que EC2Launch se ejecute en cada arranque, sucederá lo siguiente la próxima vez que lo haga:

  • Si AdminPasswordType aún está establecida como Random, EC2Launch generará una nueva contraseña en el siguiente arranque. Luego de ese arranque, AdminPasswordType se establece automáticamente como DoNothing para impedir que EC2Launch genere nuevas contraseñas en los siguientes arranques. Para impedir que EC2Launch genere una nueva contraseña en el primer arranque, establezca manualmente AdminPasswordType en DoNothing antes de reiniciar.

  • HandleUserData se volverá a establecer en false a menos que los datos de usuarios tengan persist establecido como true. Para obtener más información acerca de los scripts de datos de usuario, consulte Scripts de datos de usuario en la guía del usuario de Amazon EC2.

Inicialización de unidades y mapeos de letras de unidad

Especifique opciones en el archivo DriveLetterMappingConfig.json para mapear letras de unidades a volúmenes en la instancia EC2. El script inicializa las unidades que aún no se han inicializado y particionado. Para obtener más información sobre cómo obtener detalles de volúmenes en Windows, consulte Get-Volume en la documentación de Microsoft.

Para mapear las letras de unidad con los volúmenes
  1. Abra el archivo C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json en un editor de texto.

  2. Especifique la siguiente configuración del volumen y guarde los cambios:

    { "driveLetterMapping": [ { "volumeName": "sample volume", "driveLetter": "H" } ] }
  3. Abra Windows PowerShell y utilice el siguiente comando para ejecutar el script de EC2Launch que inicializa los discos:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1

    Para inicializar los discos cada vez que se arranca la instancia, añada la marca -Schedule de la siguiente manera:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule

Envío de registros de eventos de Windows a la consola de EC2

Especifique opciones en el archivo EventLogConfig.json para enviar registros de eventos de Windows a los registros de la consola de EC2.

Para configurar ajustes para enviar registros de eventos de Windows
  1. En la instancia, abra el archivo C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json en un editor de texto.

  2. Configure los siguientes ajustes del registro y guarde los cambios:

    { "events": [ { "logName": "System", "source": "An event source (optional)", "level": "Error | Warning | Information", "numEntries": 3 } ] }
  3. En Windows PowerShell, ejecute el siguiente comando para que el sistema programe el script para que se ejecute como una tarea programada de Windows cada vez que se arranca la instancia.

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendEventLogs.ps1 -Schedule

    Los registros pueden tardar tres minutos o más en aparecer en los registros de la consola de EC2.

Envío del mensaje Windows Is Ready después de un arranque correcto

El servicio EC2Config envía el mensaje "Windows is ready" a la consola EC2 después de cada arranque. EC2Launch solo envía este mensaje la primera vez que se arranca. Para que sea compatible con versiones anteriores del servicio EC2Config, puede programar EC2Launch para que envíe este mensaje después de cada arranque. En la instancia, abra Windows PowerShell y ejecute el comando siguiente. El sistema programa el script para que se ejecute como una tarea programada de Windows.

PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendWindowsIsReady.ps1 -Schedule