

# EC2Launch v2와 함께 Windows Sysprep을 사용하여 AMI 생성
<a name="sysprep-using-ec2launchv2"></a>

EC2Launch v2 에이전트가 설치된 인스턴스에서 이미지를 생성하면 이미지가 준비될 때 EC2Launch v2가 특정 작업을 수행합니다. 여기에는 Windows Sysprep 작업이 포함됩니다. 자세한 내용은 [Windows Sysprep 단계](ami-create-win-sysprep.md#sysprep-phases) 섹션을 참조하세요.

**Topics**
+ [Windows Sysprep 작업](#sysprep-actions-ec2launchv2)
+ [Sysprep 이후](#sysprep-post-ec2launchv2)
+ [EC2Launch v2와 함께 Windows Sysprep 실행](#sysprep-gui-procedure-ec2launchv2)

## Windows Sysprep 작업
<a name="sysprep-actions-ec2launchv2"></a>

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

1. **EC2Launch 설정(EC2Launch settings)** 대화 상자에서 **Sysprep을 이용해 종료(Shutdown with Sysprep)**를 선택하면 시스템은 `ec2launch sysprep` 명령을 실행합니다.

1. EC2Launch v2는 `unattend.xml`에서 레지스트리 값을 읽어 `HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName` 파일의 내용을 편집합니다. 이 파일은 `C:\ProgramData\Amazon\EC2Launch\sysprep` 디렉터리에 있습니다.

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

   **reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 1 /f**

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

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

   **sysprep.exe /oobe /generalize /shutdown /unattend: "C:\$1ProgramData\$1Amazon\$1EC2Launch\$1sysprep\$1unattend.xml"**

### 일반화 단계
<a name="sysprep-generalize-ec2launchv2"></a>
+ EC2Launch v2는 컴퓨터 이름과 SID 같은 이미지 고유 정보 및 설정을 삭제합니다. 인스턴스가 도메인의 멤버인 경우에는 도메인에서 삭제됩니다. `unattend.xml` 응답 파일은 이 단계에 영향을 미치는 다음의 설정을 포함합니다.
  + **PersistAllDeviceInstalls**: 이 설정은 Windows 설치로 하여금 장치를 제거하고 재구성하지 못하도록 함으로써 이미지 준비 과정을 가속화하는데, 이는 Amazon AMI는 특정 드라이버가 실행되는 것을 요구하고 그 드라이버들을 재검색하는 데 시간이 걸리기 때문입니다.
  + **DoNotCleanUpNonPresentDevices**: 이 설정은 현재 존재하지 않는 장비들에 대한 플러그-앤-플레이 정보를 담고 있습니다.
+ Windows Sysprep은 AMI를 생성하기 위한 준비를 하는 과정에서 OS를 종료합니다. 시스템은 새 인스턴스를 시작하거나 원본 인스턴스를 시작합니다.

### 특수화 단계
<a name="sysprep-specialize-ec2launchv2"></a>

시스템은 컴퓨터 이름과 SID와 같은 OS 특정 요건을 생성합니다. 시스템은 또한 `unattend.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**: 시스템은 관리자 암호를 암호화합니다. 이 보안 조치는 `setAdminAccount` 작업을 구성하지 않으면 Windows Sysprep이 완료된 후 인스턴스에 액세스할 수 없도록 설계되어 있습니다.

  시스템은 로컬 시작 에이전트 디렉터리(`C:\Program Files\Amazon\EC2Launch\`)에서 다음 명령을 실행합니다.

  ```
  EC2Launch.exe internal randomize-password --username Administrator
  ```
+ 원격 데스크톱 연결을 활성화하기 위해 시스템은 터미널 서버 `fDenyTSConnections` 레지스트리 키를 false로 설정합니다.

### OOBE 단계
<a name="sysprep-oobe-ec2launchv2"></a>

1. EC2Launch v2 응답 파일을 사용하여 다음과 같은 구성을 지정합니다.
   + `<InputLocale>en-US</InputLocale>`
   + `<SystemLocale>en-US</SystemLocale>`
   + `<UILanguage>en-US</UILanguage>`
   + `<UserLocale>en-US</UserLocale>`
   + `<HideEULAPage>true</HideEULAPage>`
   + `<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>`
   + `<ProtectYourPC>3</ProtectYourPC>`
   + `<BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>`
   + `<TimeZone>UTC</TimeZone>`
   + `<RegisteredOrganization>Amazon.com</RegisteredOrganization>`
   + `<RegisteredOwner>EC2</RegisteredOwner>`
**참고**  
일반화 및 특수화 단계에서 EC2Launch v2는 OS의 상태를 모니터링합니다. EC2Launch v2는 OS가 Sysprep 단계에 있다는 것을 탐지하면 시스템 로그에 다음 메시지를 출력합니다.  
Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. 시스템이 EC2Launch v2를 실행합니다.

## Sysprep 이후
<a name="sysprep-post-ec2launchv2"></a>

Windows Sysprep이 완료된 후 EC2Launch v2는 콘솔에 다음 메시지를 출력합니다.

```
Windows sysprep configuration complete.
```

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

1. `agent-config.yml` 파일의 내용을 읽고 구성된 작업을 실행합니다.

1. `preReady` 스테이지의 모든 작업을 실행합니다.

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

1. `PostReady` 스테이지의 모든 작업을 실행합니다.

EC2Launch v2에 대한 자세한 내용은 [EC2Launch v2 에이전트를 사용하여 EC2 Windows 인스턴스 시작 중 태스크 수행](ec2launch-v2.md) 섹션을 참조하세요.

## EC2Launch v2와 함께 Windows Sysprep 실행
<a name="sysprep-gui-procedure-ec2launchv2"></a>

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

1. Amazon EC2 콘솔에서 복제하려는 AMI를 찾습니다.

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

1. 사용자 지정 설정

   1. Windows **시작** 메뉴에서 **Amazon EC2Launch 설정(Amazon EC2Launch settings)**을 검색하고 선택합니다. Amazon **EC2Launch 설정(EC2Launch settings)** 대화 상자의 옵션 및 설정에 대한 자세한 내용은 [Windows 인스턴스에 대한 EC2Launch v2 설정 구성](ec2launch-v2-settings.md) 단원을 참조하세요.

   1. 변경 사항이 있는 경우 종료하기 전에 **저장**을 선택합니다.

1. **Sysprep을 이용해 종료** 또는 **Sysprep을 이용하지 않고 종료**를 선택합니다.

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

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

```
"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep --shutdown=true
```