Configurar uma instância do Windows usando o EC2Launch - Amazon Elastic Compute Cloud

Configurar uma instância do Windows usando o EC2Launch

O EC2Launch é um conjunto de scripts do Windows PowerShell que substitui o serviço do EC2Config nas AMIs do Windows Server 2016 e 2019. O Windows Server 2022 usa o EC2Launch v2, o serviço mais recente lançado para todas as versões do Windows compatíveis, que substitui o EC2Config e o EC2Launch.

Tarefas do EC2Launch

Por padrão, o EC2Launch executa as seguintes tarefas durante a primeira inicialização da instância:

  • Configura novo papel de parede que produz informações sobre a instância.

  • Define o nome do computador.

  • Envia informações da instância ao console do Amazon EC2.

  • Envia a impressão digital do certificado RDP ao console do EC2.

  • Define uma senha aleatória para a conta do administrador.

  • Adiciona sufixos DNS.

  • Estende dinamicamente a partição do sistema operacional para incluir qualquer espaço não particionado.

  • Executa dados do usuário (se especificado). Para obter mais informações sobre como especificar os dados do usuário, consulte Trabalhar com dados do usuário da instância.

  • Define rotas estáticas persistentes para alcançar o serviço de metadados e os servidores AWS KMS.

    Importante

    Se uma AMI personalizada for criada a partir dessa instância, essas rotas serão capturadas como parte da configuração do sistema operacional e quaisquer novas instâncias iniciadas a partir da AMI manterão as mesmas rotas, independentemente do posicionamento da sub-rede. Para atualizar as rotas, consulte Para atualizar rotas de metadados/KMS para o Server 2016 e posterior ao iniciar uma AMI personalizada.

As seguintes tarefas ajudam a manter a compatibilidade com versões anteriores do serviço do EC2Config. Também é possível configurar o EC2Launch para executar essas tarefas durante o startup:

  • Inicializar volumes de EBS secundários.

  • Enviar logs de eventos do Windows aos logs do console do EC2.

  • Enviar a mensagem O Windows está pronto para uso ao console do EC2.

Para obter mais informações sobre o Windows Server 2019, consulte Comparar recursos nas versões do Windows Server em Microsoft.com.

Telemetria

Telemetria é informação adicional que ajuda o AWS a entender melhor suas necessidades, diagnosticar problemas e fornecer recursos para melhorar sua experiência com os serviços da AWS.

O EC2Launch versão 1.3.2003498 e posteriores coleta telemetria, como métricas de uso e erros. Esses dados são coletados na instância do Amazon EC2 na qual o EC2Launch é executado. Isso inclui todas as AMIs do Windows de propriedade da AWS.

Os seguintes tipos de telemetria são coletados pelo EC2Launch:

  • Informações de uso: comandos do agente, método de instalação e frequência de execução programada.

  • Erros e informações de diagnóstico: instalação do agente e execução dos códigos de erro.

Exemplos de dados coletados pelo:

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

A telemetria está habilitada por padrão. É possível desativar a coleta de telemetria a qualquer momento. Se a telemetria estiver habilitada, o EC2Launch enviará dados de telemetria sem notificações adicionais do cliente.

Sua escolha de habilitar ou desabilitar a telemetria é coletada.

É possível optar por habilitar ou desabilitar a coleta de telemetria. Sua seleção de optar por habilitar ou desabilitar telemetria é coletada para garantir que atenderemos à sua opção de telemetria.

Visibilidade de telemetria

Quando a telemetria é ativada, ela aparece na saída do console do Amazon EC2 da seguinte maneira:

2021/07/15 21:44:12Z: Telemetry: <Data>

Desativar telemetria em uma instância

Para desativar a telemetria definindo uma variável de ambiente do sistema, execute o seguinte comando como administrador:

setx /M EC2LAUNCH_TELEMETRY 0

Para desabilitar a telemetria durante a instalação, execute install.ps1 da seguinte forma:

. .\install.ps1 -EnableTelemetry:$false

Verificar a versão do EC2Launch

Use o comando do Windows PowerShell a seguir para verificar a versão instalada do EC2Launch.

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

Estrutura de diretório do EC2Launch

Por padrão, o EC2Launch é instalado nas AMIs do Windows Server 2016 e posterior no diretório raiz C:\ProgramData\Amazon\EC2-Windows\Launch.

nota

Por padrão, o Windows oculta os arquivos e as pastas sob C:\ProgramData. Para visualizar os diretórios e arquivos do EC2Launch, digite o caminho no Windows Explorer ou altere as propriedades da pasta para os arquivos e as pastas ocultos.

O diretório Launch contém os seguintes subdiretórios.

  • Scripts — contém os scripts do PowerShell que compõem o EC2Launch.

  • Module — contém o módulo para compilação dos scripts relacionados ao Amazon EC2.

  • Config — contém arquivos script de configuração que é possível personalizar.

  • Sysprep — contém recursos de Sysprep.

  • Settings: contém uma aplicação para a interface gráfica do usuário do Sysprep.

  • Library – Contém bibliotecas compartilhadas para agentes de inicialização do EC2.

  • Logs — Contém arquivos de log gerados por scripts.

Todos os diretórios do EC2Launch herdam suas permissões de C:\ProgramData, com exceção do seguinte:

  • C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Scripts — Esta pasta herda todas as permissões iniciais de C:\ProgramData quando é criada, mas remove o acesso para usuários normais a CreateFiles no diretório.

Configurar o EC2Launch

Quando a instância tiver sido inicializada pela primeira vez, é possível configurar o EC2Launch para iniciar novamente e executar diferentes tarefas de startup.

Configurar as tarefas de inicialização

Especifique as configurações no arquivo LaunchConfig.json para ativar ou desativar as seguintes tarefas de inicialização:

  • Definir o nome do computador.

  • Defina o monitor para ficar sempre ligado.

  • Configurar novo papel de parede.

  • Adicionar a lista de sufixos DNS.

  • Estender o tamanho do volume de inicialização.

  • Defina a senha de administrador.

Para definir as configurações de inicialização

  1. Na instância a ser configurada, abra o seguinte arquivo em um editor de texto: C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json.

  2. Atualize as seguintes configurações conforme necessário e salve suas alterações. Forneça uma senha em adminPassword somente se adminPasswordtype for 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)" }

    Os tipos de senha são definidos da seguinte maneira:

    Random

    O EC2Launch gera uma senha e criptografa-a usando a chave de usuário. O sistema desativa essa configuração depois da execução da instância, portanto, essa senha persistirá se a instância for reinicializada ou parada e iniciada.

    Specify

    O EC2Launch usa a senha que você especifica adminPassword. Se a senha não atender aos requisitos de sistema, o EC2Launch gera uma senha aleatória. A senha é armazenada em LaunchConfig.json como texto não criptografado e será excluída depois que Sysprep definir a senha do administrador. O EC2Launch criptografa a senha usando a chave de usuário.

    DoNothing

    O EC2Launch usa a senha que você especifica o arquivo unattend.xml. Se você não especificar uma senha em unattend.xml, a conta de administrador ficará desativada.

  3. No Windows PowerShell, execute o seguinte comando para programar a execução do script como uma tarefa agendada do Windows. O script é executado uma vez durante a próxima inicialização e desativa essas tarefas para que não sejam executadas novamente.

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

Programar o EC2Launch para ser executado em cada inicialização

É possível programar o EC2Launch para ser executado em cada inicialização e não apenas na inicialização inicial.

Para programar o EC2Launch para ser executado em cada inicialização:

  1. Abra o Windows PowerShell e execute o seguinte comando:

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
  2. Ou execute o executável com o seguinte comando:

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

    Em seguida, selecione Run EC2Launch on every boot. É possível especificar que sua instância do EC2 seja Shutdown without Sysprep ou Shutdown with Sysprep.

nota

Quando você habilita o EC2Launch para ser executado em cada inicialização, acontecerá o seguinte na próxima vez que o EC2Launch for executado:

  • Se o AdminPasswordType ainda estiver definido como Random, o EC2Launch gerará uma nova senha na próxima inicialização. Após a reinicialização, o AdminPasswordType é automaticamente definido como DoNothingpara impedir que o EC2Launch gere novas senhas em inicializações subsequentes. Para evitar que o EC2Launch gere uma nova senha na primeira inicialização, defina manualmente o AdminPasswordType como DoNothing antes de reiniciar.

  • HandleUserData será redefinido como false a menos que os dados do usuário tenham persist definido como true. Para obter mais informações sobre scripts de dados, consulte Scripts de dados de usuário no Guia do usuário do Amazon EC2.

Inicializar unidades e mapear as letras de unidades

Especifique as configurações no arquivo DriveLetterMappingConfig.json para mapear letras de unidades para volumes na instância do EC2. O script inicializa drives que ainda não foram inicializados e particionados.

Para mapear letras de unidade a volumes

  1. Abra o arquivo C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json em um editor de textos.

  2. Especifique as seguintes configurações de volume e salve suas alterações:

    { "driveLetterMapping": [ { "volumeName": "sample volume", "driveLetter": "H" } ] }
  3. Abra o Windows PowerShell e use o seguinte comando para executar o script do EC2Launch que inicializa os discos:

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

    Para inicializar os discos sempre que a instância for inicializada, adicione o sinalizador -Schedule da seguinte forma:

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

Enviar logs de eventos do Windows ao console do EC2

Especifique configurações no arquivo EventLogConfig.json para enviar logs de eventos do Windows aos logs do console do EC2.

Para definir as configurações para enviar logs de eventos do Windows

  1. Na instância, abra o arquivo C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json em um editor de texto.

  2. Configure as seguintes configurações de registro e salve suas alterações:

    { "events": [ { "logName": "System", "source": "An event source (optional)", "level": "Error | Warning | Information", "numEntries": 3 } ] }
  3. No Windows PowerShell, execute o seguinte comando para que o sistema agende o script para execução como uma tarefa agendada do Windows sempre que a instância for inicializada.

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

    Os logs podem demorar três minutos ou mais para aparecerem no console do EC2.

Enviar a mensagem O Windows está pronto após uma inicialização bem-sucedida

O serviço de EC2Config envia a mensagem “O Windows está pronto” ao console do EC2 após cada inicialização. O EC2Launch envia essa mensagem somente após a primeira inicialização. Para compatibilidade com versões anteriores do serviço de EC2Config, é possível agendar o EC2Launch para enviar essa mensagem após cada inicialização. Na instância, abra o Windows PowerShell e execute o seguinte comando. O sistema agenda o script para ser executado como uma tarefa agendada do Windows.

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