Criar uma AMI usando o Sysprep do Windows com o EC2Config - Amazon Elastic Compute Cloud

Criar uma AMI usando o Sysprep do Windows com o EC2Config

Quando você cria uma imagem de uma instância com o serviço EC2Config instalado, ele realiza tarefas específicas à medida que a imagem é preparada. Isso inclui trabalhar com o Sysprep do Windows. Para obter mais informações, consulte Fases do Sysprep do Windows.

Ações do Sysprep do Windows

O Sysprep do Windows e o serviço do EC2Config executam as ações a seguir na preparação de uma imagem.

  1. Quando você escolhe Encerrar com o Sysprep na caixa de diálogo Propriedades do EC2 Service), o sistema executa o comando ec2config.exe -sysprep.

  2. O serviço EC2Config lê o conteúdo do arquivo BundleConfig.xml. Esse arquivo está localizado no diretório a seguir, por padrão: C:\Program Files\Amazon\Ec2ConfigService\Settings.

    O arquivo BundleConfig.xml inclui as seguintes configurações. É possível alterar essas configurações:

    • AutoSysprep: indica se o Sysprep do Windows deve ser usado automaticamente. Você não precisará mudar esse valor se estiver executando o Sysprep do Windows pela caixa de diálogo de propriedades do serviço do EC2. O valor padrão é No.

    • SetRDPCertificate: define um certificado autoassinado para o servidor de Desktop Remoto. Isso permite que você use com segurança o Remote Desktop Protocol (RDP) para se conectar à instância. Altere o valor para Yes se as novas instâncias precisarem usar um certificado. Essa configuração não é usada com instâncias Windows Server 2012 porque esses sistemas operacionais podem gerar seus próprios certificados. O valor padrão é No.

    • SetPasswordAfterSysprep: define uma senha aleatória em uma instância recém-executada, criptografa-a com a chave de execução do usuário e gera a senha criptografada no console. Altere o valor para No se novas instâncias não precisarem ser definidas com uma senha criptografada aleatória. O valor padrão é Yes.

    • PreSysprepRunCmd: o local do comando para execução. Por padrão, o comando está localizado no seguinte diretório:: C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd

  3. O sistema executa o BeforeSysprep.cmd. Esse comando cria uma chave de registro da seguinte maneira:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f

    A chave de registro desabilita as conexões RDP até serem re-habilitadas. Desabilitar as conexões RDP é uma medida de segurança necessária, pois, na primeira sessão de inicialização após o Sysprep do Windows ser executado, há um breve período no qual o RDP permite conexões e a senha do Administrador fica em branco.

  4. O serviço do EC2Config chama o Sysprep do Windows ao executar o seguinte comando:

    sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown

Generalizar a fase

  • A ferramenta remove informações específicas da imagem e as configurações, como nome de computador e SID. Se a instância pertencer a um domínio, ela será removida do domínio. O arquivo de resposta sysprep2008.xml inclui as seguintes configurações que afetam a fase:

    • PersistAllDeviceInstalls: essa configuração impede que a Configuração do Windows remova e reconfigure dispositivos, o que acelera o processo de preparação de imagem, pois as AMIs da Amazon exigem a execução de determinados drivers e a nova detecção desses drivers tomaria o tempo.

    • DoNotCleanUpNonPresentDevices: essa configuração retém informações de plug and play para dispositivos que não estão presentes no momento.

  • O Sysprep do Windows fecha o SO à medida que se prepara para criar a AMI. O sistema executa uma nova instância ou inicia a instância original.

Fase especializada

O sistema gera requisitos específicos de SO, como um nome de computador e um SID. O sistema também executa as ações a seguir com base em configurações que você especifica no arquivo de resposta sysprep2008.xml.

  • CopyProfile: o Sysprep do Windows pode ser configurado para excluir todos os perfis de usuário, incluindo o perfil incorporado do Administrador. Essa configuração retém a conta de Administrador incorporada, de forma que todas as personalizações que você fizer nessa conta serão transferidas para a nova imagem. O valor padrão é Verdadeiro.

    CopyProfile substitui o perfil padrão pelo perfil de administrador local existente. Todas as contas conectadas depois da execução de Sysprep do Windows receberão uma cópia desse perfil e do conteúdo dele no primeiro login.

    Se você não tiver personalizações específicas do perfil do usuário que deseja transferir para a nova imagem, altere essa configuração para falso. O Sysprep do Windows removerá todos os perfis de usuário; isso economiza tempo e espaço em disco.

  • TimeZone: o fuso horário é definido como Coordinated Universal Time (UTC – Tempo universal coordenado), por padrão.

  • Comando síncrono com pedido 1: o sistema executa o comando a seguir, que habilita a conta do administrador e especifica o requisito de senha.

    net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES

  • Comando síncrono com pedido 2: o sistema vasculha a senha do administrador. Essa medida de segurança é criada para impedir que a instância fique acessível após o Sysprep do Windows ser concluído, caso você não tenha habilitado a configuração ec2setpassword.

    C:\Program Files\Amazon\Ec2ConfigService\ScramblePassword.exe" -u Administrator

  • Comando síncrono com pedido 3: o sistema executa o seguinte comando:

    C:\Program Files\Amazon\Ec2ConfigService\Scripts\SysprepSpecializePhase.cmd

    Esse comando adiciona a seguinte chave de registro, que re-habilita a RDP:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

Fase OOBE

  1. Usando o arquivo de resposta do serviço EC2Config, o sistema especifica as seguintes configurações:

    • <InputLocale>en-US</InputLocale>

    • <SystemLocale>en-US</SystemLocale>

    • <UILanguage>en-US</UILanguage>

    • <UserLocale>en-US</UserLocale>

    • <HideEULAPage>true</HideEULAPage>

    • <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>

    • <NetworkLocation>Other</NetworkLocation>

    • <ProtectYourPC>3</ProtectYourPC>

    • <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>

    • <TimeZone>UTC</TimeZone>

    • <RegisteredOrganization>Amazon.com</RegisteredOrganization>

    • <RegisteredOwner>Amazon</RegisteredOwner>

    nota

    Durante as fases de generalização e especialização, o serviço EC2Config monitora o status do SO. Se o EC2Config detectar que o sistema operacional está na fase Sysprep, ele publicará a seguinte mensagem no log do sistema:

    EC2ConfigMonitorState: 0 O Windows está sendo configurado. SysprepState=IMAGE_STATE_UNDEPLOYABLE

  2. Após a conclusão da fase OOBE, o sistema executa SetupComplete.cmd a partir do seguinte local: C:\Windows\Setup\Scripts\SetupComplete.cmd. Na AMIs públicas da Amazon antes de abril de 2015 este arquivo estava vazio e não executava nada na imagem. Em AMIs públicas posteriores a abril de 2015, o arquivo inclui o seguinte valor: call "C:\Program Files\Amazon\Ec2ConfigService\Scripts\PostSysprep.cmd".

  3. O sistema executa PostSysprep.cmd, que realiza as seguintes operações:

    • Define a senha do Administrador para não expirar. Se a senha expirou, os Administradores podem não conseguir fazer login.

    • Define o nome da máquina MSSQLServer (se instalada) para que o nome esteja em sincronia com a AMI.

Após Sysprep

Após o Sysprep do Windows ser concluído, os serviços do EC2Config enviam a seguinte mensagem para a saída do console:

Windows sysprep configuration complete.
			Message: Sysprep Start
			Message: Sysprep End

O EC2Config então executa as ações a seguir:

  1. Lê o conteúdo do arquivo config.xml e lista todos os plug-ins habilitados.

  2. Executa todos os plug-ins "Antes que o Windows esteja pronto" ao mesmo tempo.

    • Ec2SetPassword

    • Ec2SetComputerName

    • Ec2InitializeDrives

    • Ec2EventLog

    • Ec2ConfigureRDP

    • Ec2OutputRDPCert

    • Ec2SetDriveLetter

    • Ec2WindowsActivate

    • Ec2DynamicBootVolumeSize

  3. Após estar concluído, envia uma mensagem "O Windows está pronto" para os logs do sistema de instância.

  4. Executa todos os plug-ins "Após o Windows estar pronto" ao mesmo tempo.

    • Amazon CloudWatch Logs

    • UserData

    • AWS Systems Manager (Systems Manager)

Para obter mais informações sobre plug-ins do Windows, consulte Usar o serviço EC2Config para realizar tarefas durante a execução da instância herdada do sistema operacional Windows do EC2.

Executar o Sysprep do Windows com o serviço do EC2Config

Use o procedimento a seguir para criar uma AMI padronizada usando o Sysprep do Windows e o serviço do EC2Config.

  1. No console do Amazon EC2, localize ou crie a AMI que deseja duplicar.

  2. Execute e conecte-se à sua instância do Windows.

  3. Personalize-a.

  4. Especifique as definições de configuração no arquivo de resposta do serviço EC2Config:

    C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml

  5. No menu Iniciar do Windows, escolha Todos os Programas e Configurações do EC2ConfigService.

  6. Escolha a guia Image (Imagem) na caixa de diálogo Ec2 Service Properties (Propriedades do serviço Ec2). Para obter mais informações sobre as opções e as configurações da caixa de diálogo Ec2 Service Properties (Propriedades do serviço Ec2), consulte Propriedades do serviço Ec2.

  7. Selecione uma opção para a senha do Administrador e selecione Shutdown with Sysprep (Desativação com Sysprep) ou Shutdown without Sysprep (Desativação sem Sysprep). O EC2Config edita os arquivos de configuração com base na opção de senha selecionada.

    • Random (Aleatório): o EC2Config gera uma senha, criptografa-a com a chave do usuário e exibe a senha criptografada no console. Nós desabilitamos essa configuração depois da primeira execução, de forma que essa senha persistirá se a instância for reinicializada ou parada e inicializada.

    • Especificar: a senha é armazenada no arquivo de resposta do Sysprep do Windows de forma não criptografada (texto não criptografado). Quando o Sysprep do Windows é executado em seguida, ele define a senha do Administrador. Se você fechar agora, a senha será definida imediatamente. Quando o serviço é reiniciado novamente, a senha do Administrador é removida. É importante recordar essa senha, pois você não poderá recuperá-la depois.

    • Manter existente: a senha existente para a conta do Administrador não muda quando o Sysprep do Windows é executado ou o EC2Config é reiniciado. É importante recordar essa senha, pois você não poderá recuperá-la depois.

  8. Escolha OK.

Quando você receber uma solicitação para confirmar que deseja executar o Sysprep do Windows e desativar a instância, clique em Sim. Você verá que o EC2Config executa o Sysprep do Windows. Em seguida, você é desconectado da instância e a instância é desligada. Se você verificar a página Instances (Instâncias) no console do Amazon EC2, o estado da instância mudará de Running para Stopping e, finalmente, para Stopped. Nesse momento, é seguro criar uma AMI com base nessa instância.

Você pode invocar manualmente a ferramenta Sysprep do Windows pela linha de comando usando o seguinte comando:

"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep""
nota

As aspas duplas no comando não serão necessárias se o shell do seu CMD já estiver no diretório C:\Program Files\Amazon\EC2ConfigService\.

Contudo, é necessário ser muito cuidadoso para que as opções do arquivo XML especificadas na pasta Ec2ConfigService\Settings estejam corretas; caso contrário, pode não conseguir conectar-se à instância. Para obter mais informações sobre os arquivos de configurações, consulte Arquivos de configurações do EC2Config. Para ver um exemplo de como configurar e executar o Sysprep do Windows pela linha de comando, consulte Ec2ConfigService\Scripts\InstallUpdates.ps1.