EC2Config와 함께 Windows Sysprep을 사용하여 AMI 생성 - Amazon Elastic Compute Cloud

EC2Config와 함께 Windows Sysprep을 사용하여 AMI 생성

EC2Config 서비스가 설치된 인스턴스에서 이미지를 생성하면 이미지가 준비될 때 EC2Config가 특정 작업을 수행합니다. 여기에는 Windows Sysprep 작업이 포함됩니다. 자세한 내용은 Windows Sysprep 단계 섹션을 참조하세요.

Windows Sysprep 작업

Windows Sysprep과 EC2Config 서비스는 이미지를 준비할 때 다음 작업을 수행합니다.

  1. EC2 서비스 속성 대화 상자에서 Sysprep을 이용해 종료를 선택하면, 시스템은 ec2config.exe -sysprep 명령을 실행합니다.

  2. EC2Config 서비스는 BundleConfig.xml 파일의 내용을 읽습니다. 기본적으로 이 파일은 C:\Program Files\Amazon\Ec2ConfigService\Settings 디렉터리에 위치합니다.

    BundleConfig.xml 파일에는 다음 설정이 포함되어 있습니다. 이 설정은 변경할 수 있습니다.

    • AutoSysprep: Windows Sysprep을 자동적으로 사용할지 여부를 지정합니다. Windows Sysprep을 EC2 Service Properties 대화 상자로부터 실행하는 경우에는 이 값을 변경할 필요가 없습니다. 기본 값은 No입니다.

    • SetRDPCertificate: 원격 데스크톱 서버에 대한 자체 서명 인증서를 설정합니다. 이렇게 함으로써 원격 데스크톱 프로토콜(RDP)을 안정적으로 이용해 인스턴스에 연결할 수 있습니다. 새 인스턴스가 인증서를 사용해야 하는 경우 이 값을 Yes로 변경합니다. Windows Server 2012 인스턴스는 자신의 고유한 인증서를 생성할 수 있으므로 이 설정은 이 인스턴스에서는 사용되지 않습니다. 기본 값은 No입니다.

    • SetPasswordAfterSysprep: 새로 실행된 인스턴스에 무작위 암호를 설정하고 이를 사용자 실행 키로 암호화하고 암호화된 암호를 콘솔에 출력합니다. 새 인스턴스에 무작위의 암호화된 암호를 설정해서는 안 되는 경우에는 설정 값을 No로 변경합니다. 기본 값은 Yes입니다.

    • PreSysprepRunCmd: 실행할 명령의 위치 명령은 기본적으로 C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd 디렉터리에 위치합니다.

  3. 시스템이 BeforeSysprep.cmd를 실행합니다. 이 명령은 다음과 같은 레지스트리 키를 생성합니다.

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

    레지스트리 키는 RDP 연결이 다시 활성화될 때까지 RDP 연결을 비활성화합니다. RDP 연결을 비활성화하는 것은 필수적인 보안 조치입니다. 왜냐하면 Windows Sysprep이 실행된 이후 첫 번째 부팅 세션 동안 RDP가 연결을 허용하고 관리자 암호가 비어 있는 짧은 시간이 있기 때문입니다.

  4. EC2Config 서비스는 다음 명령을 실행하여 Windows Sysprep을 호출합니다.

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

일반화 단계

  • 이 도구는 컴퓨터 이름과 SID 같은 이미지 고유 정보 및 설정을 삭제합니다. 인스턴스가 도메인의 멤버인 경우에는 도메인에서 삭제됩니다. sysprep2008.xml 응답 파일은 이 단계에 영향을 미치는 다음의 설정을 포함합니다.

    • PersistAllDeviceInstalls: 이 설정은 Windows 설치로 하여금 장치를 제거하고 재구성하지 못하도록 함으로써 이미지 준비 과정을 가속화하는데, 이는 Amazon AMI는 특정 드라이버가 실행되는 것을 요구하고 그 드라이버들을 재검색하는 데 시간이 걸리기 때문입니다.

    • DoNotCleanUpNonPresentDevices: 이 설정은 현재 존재하지 않는 장비들에 대한 플러그-앤-플레이 정보를 담고 있습니다.

  • Windows Sysprep은 AMI를 생성하기 위한 준비를 하는 과정에서 OS를 종료합니다. 시스템은 새 인스턴스를 시작하거나 원본 인스턴스를 시작합니다.

특수화 단계

시스템은 컴퓨터 이름과 SID와 같은 OS 특정 요건을 생성합니다. 시스템은 또한 sysprep2008.xml 응답 파일에 지정된 구성에 기반을 두어 다음 작업을 수행합니다.

  • CopyProfile: Windows Sysprep을 구성해 내장된 관리자 프로파일을 비롯한 모든 사용자 프로파일을 삭제할 수 있습니다. 이 설정은 내장된 관리자 계정을 보유하고 있어서 계정에 대한 어떤 사용자 지정도 새 이미지로 전달됩니다. 기본값은 True입니다.

    CopyProfile은 기본 프로파일을 기존의 로컬 관리자 프로파일로 바꿉니다. Windows Sysprep를 실행한 후 로그인한 모든 계정은 첫 로그인 시 해당 프로파일 및 콘텐츠의 사본을 받게 됩니다.

    새 이미지로 전달하고자 하는 사용자 프로파일에 대한 특정한 사용자 지정이 없다면 이 설정을 False로 변경하세요. Windows Sysprep은 모든 사용자 프로파일을 삭제하며, 이를 통해 시간과 디스크 공간을 절약합니다.

  • TimeZone: 표준 시간대는 UTC(협정 세계시)로 기본 설정되어 있습니다.

  • Synchronous command with order 1: 시스템은 다음 명령을 실행하여 관리자 계정을 활성화하고 암호 요건을 지정합니다.

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

  • Synchronous command with order 2: 시스템은 관리자 암호를 암호화합니다. 이 보안 조치는 ec2setpassword 설정을 활성화하지 않으면 Windows Sysprep이 완료된 후 인스턴스에 액세스할 수 없도록 설계되어 있습니다.

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

  • Synchronous command with order 3: 시스템은 다음 명령을 실행합니다.

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

    이 명령은 다음과 같은 레지스트리 키를 추가하여 RDP를 재활성화합니다.

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

OOBE 단계

  1. 시스템은 EC2Config 응답 파일을 이용해 다음과 같은 구성을 지정합니다.

    • <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>

    참고

    일반화 및 특수화 단계에서 EC2Config 서비스는 OS의 상태를 모니터링합니다. EC2Config는 OS가 Sysprep 단계에 있다는 것을 탐지하면 시스템 로그에 다음 메시지를 출력합니다.

    EC2ConfigMonitorState: Windows 0개가 구성 중입니다. SysprepState=IMAGE_STATE_UNDEPLOYABLE

  2. OOBE 단계가 완료되면 SetupComplete.cmd에 있는 C:\Windows\Setup\Scripts\SetupComplete.cmd가 실행됩니다. 2015년 4월 이전의 Amazon 퍼블릭 AMI에서는 이 파일이 비어 있었고 이미지 상에서 아무 것도 실행하지 않았습니다. 2015년 4월 이후 발표된 퍼블릭 AMI의 경우 파일에 call "C:\Program Files\Amazon\Ec2ConfigService\Scripts\PostSysprep.cmd" 값이 포함됩니다.

  3. PostSysprep.cmd가 실행되고 다음 작업이 수행됩니다.

    • 로컬 관리자 암호가 만료되지 않도록 설정합니다. 로컬 관리자 암호가 만료되면, 관리자가 로그인할 수 없을 수도 있습니다.

    • MSSQLServer 머신 이름(설치된 경우)를 설정하여 그 이름이 AMI와 동기화되도록 합니다.

Sysprep 이후

Windows Sysprep이 완료된 후 EC2Config 서비스는 콘솔에 다음 메시지를 출력합니다.

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

그 다음에 EC2Config는 다음 작업을 수행합니다.

  1. config.xml 파일의 내용을 읽고 활성화된 모든 플러그인을 나열합니다.

  2. 모든 “Before Windows is ready” 플러그인을 동시에 실행합니다.

    • Ec2SetPassword

    • Ec2SetComputerName

    • Ec2InitializeDrives

    • Ec2EventLog

    • Ec2ConfigureRDP

    • Ec2OutputRDPCert

    • Ec2SetDriveLetter

    • Ec2WindowsActivate

    • Ec2DynamicBootVolumeSize

  3. 실행이 완료된 후에는 “Windows is ready”라는 메시지를 인스턴스 시스템 로그에 전송합니다.

  4. 모든 “After Windows is ready” 플러그인을 동시에 실행합니다.

    • Amazon CloudWatch Logs

    • UserData

    • AWS Systems Manager(Systems Manager)

Windows 플러그인에 대한 자세한 내용은 EC2Config 서비스를 사용하여 EC2 레거시 Windows 운영 체제 인스턴스를 시작하는 동안 태스크를 수행합니다. 단원을 참조하세요.

EC2Config 서비스와 함께 Windows Sysprep 실행하기

Windows Sysprep과 EC2Config 서비스를 이용해 표준화된 AMI를 생성하려면 다음 절차를 수행하세요.

  1. Amazon EC2 콘솔에서 복사하고자 하는 AMI의 위치를 지정하거나 생성합니다.

  2. 실행을 시작해서 Windows 인스턴스에 연결합니다.

  3. 그 AMI를 사용자 지정합니다.

  4. EC2Config 서비스 응답 파일에서 구성 설정을 다음과 같이 지정합니다.

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

  5. Windows 시작 메뉴에서 모든 프로그램을 선택한 후 EC2ConfigService 설정을 클릭합니다.

  6. Ec2 서비스 속성 대화 상자에서 이미지 탭을 선택합니다. Ec2 서비스 속성 대화 상자의 옵션 및 설정에 대한 자세한 내용은 Ec2 서비스 속성을 참조하세요.

  7. 관리자 암호에 대한 옵션을 선택하고 Shutdown with Sysprep(Sysprep을 이용해 종료) 또는 Shutdown without Sysprep(Sysprep을 사용하지 않고 종료)을 선택합니다. EC2Config는 선택한 암호 옵션에 기반하는 설정 파일을 편집합니다.

    • Random(무작위): EC2Config는 암호를 생성하고 이를 사용자의 키로 암호화한 다음, 암호화된 암호를 콘솔에 표시합니다. 첫 실행 후 이 설정을 비활성화하여 인스턴스가 재부팅되거나 중단되고 시작된 경우에도 해당 암호가 계속 유지되도록 합니다.

    • 지정: 암호를 암호화되지 않은 형태(클리어 텍스트)로 Windows Sysprep 응답 파일에 저장합니다. Windows Sysprep은 다음에 실행될 때 관리자 암호를 설정합니다. 지금 종료하면 암호는 지금 바로 설정됩니다. 서비스가 다시 시작할 때 관리자 암호는 제거됩니다. 이 암호는 나중에 다시 확인할 수 없기 때문에 이를 꼭 기억해두세요.

    • 기존 유지: Windows Sysprep이 실행 중일 때 또는 EC2Config가 재시작할 때, 관리자 계정에 대한 기존 암호를 변경하지 않습니다. 이 암호는 나중에 다시 확인할 수 없기 때문에 이를 꼭 기억해두세요.

  8. 확인을 선택합니다.

Windows Sysprep 실행 및 인스턴스 종료 여부 확인 요청을 받을 때 를 클릭합니다. EC2Config가 Windows Sysprep을 실행하는 것을 확인할 수 있습니다. 그 다음 인스턴스에서 로그아웃되고 인스턴스는 종료됩니다. Amazon EC2 콘솔의 [인스턴스(Instances)] 페이지를 보면 인스턴스 상태가 [Running]에서 [Stopping]로 바뀐 다음 마지막으로 [Stopped]로 바뀌는 것을 확인할 수 있습니다. 이 지점에서는 안전하게 현재 인스턴스에서 AMI를 생성할 수 있습니다.

다음 명령을 사용해서 명령줄에서 Windows Sysprep 도구를 수동으로 호출할 수 있습니다.

"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep""
참고

CMD 셸이 이미 C:\Program Files\Amazon\EC2ConfigService\ 디렉터리에 있는 경우에는 명령에 큰 따옴표가 필요 없습니다.

그러나 Ec2ConfigService\Settings 폴더에 지정된 XML 파일 옵션이 올바른지 주의 깊게 확인할 필요가 있습니다. 이것이 올바르게 지정되지 않은 경우는 인스턴스에 연결하지 못할 수 있습니다. 설정 파일에 대한 자세한 내용은 EC2Config 설정 파일 단원을 참조하세요. 명령줄에서 Windows Sysprep을 구성한 후 실행하는 예제는 Ec2ConfigService\Scripts\InstallUpdates.ps1의 내용을 참조하세요.