EC2Launch v2와 함께 Windows Sysprep으로 AMI 만들기

EC2Launch v2와 함께 Windows Sysprep으로 AMI 만들기

EC2Launch v2 에이전트가 설치된 인스턴스에서 이미지를 만들면, 이미지가 준비되는 동안 EC2Launch v2가 Windows Sysprep 처리를 포함한 특정 작업을 수행해요. 이 절에서는 Sysprep의 단계별 동작과 EC2Launch v2에서 Sysprep을 실행하는 방법을 살펴볼게요.

출처: 문서

본문

EC2Launch v2 에이전트가 설치된 인스턴스에서 이미지를 만들면 EC2Launch v2가 이미지 준비 과정에서 특정 작업을 수행해요. 여기에는 Windows Sysprep 처리도 포함돼요. 자세한 내용은 Windows Sysprep phases를 참고하세요.

Windows Sysprep 동작

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

  • EC2Launch settings 대화 상자에서 Shutdown with Sysprep을 선택하면 시스템이 ec2launch sysprep 명령을 실행해요.
  • EC2Launch v2는 HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName의 레지스트리 값을 읽어 unattend.xml 파일의 내용을 수정해요. 이 파일은 다음 디렉터리에 있어요: C:\ProgramData\Amazon\EC2Launch\sysprep
  • 시스템이 BeforeSysprep.cmd를 실행해요. 이 명령은 다음과 같이 레지스트리 키를 만듭니다.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f

이 레지스트리 키는 다시 활성화될 때까지 RDP 연결을 비활성화해요. Windows Sysprep이 실행된 후 첫 부팅 세션 동안에는 RDP가 연결을 허용하면서 Administrator 비밀번호가 비어 있는 짧은 시간이 있기 때문에, RDP 연결을 비활성화하는 것은 필요한 보안 조치예요.

  • EC2Launch v2 서비스가 다음 명령을 실행해 Windows Sysprep을 호출해요.
sysprep.exe /oobe /generalize /shutdown /unattend:"C:\ProgramData\Amazon\EC2Launch\sysprep\unattend.xml"

Generalize 단계

  • EC2Launch v2가 컴퓨터 이름과 SID 같은 이미지별 정보와 구성(configuration)을 제거해요. 인스턴스가 도메인 구성원이면 도메인에서 제거됩니다. unattend.xml 응답 파일에는 이 단계에 영향을 주는 다음 설정이 포함돼요.

    • PersistAllDeviceInstalls: 이 설정은 Windows Setup이 장치를 제거하고 다시 구성하는 것을 막아요. Amazon AMI는 특정 드라이버가 필요하고 드라이버를 다시 감지하는 데 시간이 걸리기 때문에, 이 설정은 이미지 준비 과정을 빠르게 만들어 줘요.
    • DoNotCleanUpNonPresentDevices: 이 설정은 현재 존재하지 않는 장치에 대한 Plug and Play 정보를 유지해요.
  • Windows Sysprep은 AMI를 만들 준비를 하면서 OS를 종료해요. 시스템은 새 인스턴스를 시작하거나 원래 인스턴스를 다시 시작해요.

Specialize 단계

시스템이 컴퓨터 이름과 SID 같은 OS별 요구 사항을 생성해요. 또한 unattend.xml 응답 파일에서 지정한 구성(configuration)에 따라 다음 작업을 수행합니다.

  • CopyProfile: Windows Sysprep은 기본 제공 Administrator 프로필을 포함한 모든 사용자 프로필을 삭제하도록 구성될 수 있어요. 이 설정은 기본 제공 Administrator 계정을 유지해서, 그 계정에 적용한 사용자 지정이 새 이미지로 이어지도록 해요. 기본값은 True예요.

CopyProfile은 기본 프로필을 기존 로컬 Administrator 프로필로 대체해요. Windows Sysprep을 실행한 후 로그인하는 모든 계정은 첫 로그인 시 그 프로필과 내용의 복사본을 받게 돼요.

새 이미지로 가져갈 특정 사용자 프로필 사용자 지정이 없다면 이 설정을 False로 바꾸세요. 그러면 Windows Sysprep이 모든 사용자 프로필을 제거해요(시간과 디스크 공간을 절약할 수 있어요).

  • TimeZone: 시간대는 기본적으로 UTC(Coordinated Universal Time)로 설정돼요.

  • Synchronous command with order 1: 시스템이 다음 명령을 실행해 Administrator 계정을 활성화하고 비밀번호 요구 사항을 지정해요.

net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
  • Synchronous command with order 2: 시스템이 Administrator 비밀번호를 무작위로 섞어요. 이 보안 조치는 setAdminAccount 작업을 구성하지 않은 경우 Windows Sysprep이 완료된 후 인스턴스에 접근할 수 없게 막기 위한 거예요.

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

EC2Launch.exe internal randomize-password --username Administrator
  • 원격 데스크톱 연결을 활성화하기 위해 시스템이 Terminal Server의 fDenyTSConnections 레지스트리 키를 false로 설정해요.

OOBE 단계

  • 시스템이 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>
참고

generalize와 specialize 단계에서 EC2Launch v2는 OS 상태를 모니터링해요. EC2Launch v2가 OS가 Sysprep 단계에 있다는 것을 감지하면 다음 메시지를 시스템 로그에 게시해요.

Windows is being configured.
SysprepState=IMAGE_STATE_UNDEPLOYABLE
  • 시스템이 EC2Launch v2를 실행해요.

Sysprep 이후(Post Sysprep)

Windows Sysprep이 완료되면 EC2Launch v2가 다음 메시지를 콘솔 출력으로 보내요.

Windows sysprep configuration complete.

그런 다음 EC2Launch v2가 다음 작업을 수행해요.

  • agent-config.yml 파일의 내용을 읽고 구성된 작업(task)을 실행해요.
  • preReady 단계의 모든 작업을 실행해요.
  • 작업이 끝나면 인스턴스 시스템 로그에 Windows is ready 메시지를 보내요.
  • PostReady 단계의 모든 작업을 실행해요.

EC2Launch v2에 대한 자세한 내용은 Use the EC2Launch v2 agent to perform tasks during EC2 Windows instance launch를 참고하세요.

EC2Launch v2로 Windows Sysprep 실행하기

다음 절차로 EC2Launch v2와 함께 Windows Sysprep을 사용해 표준화된 AMI를 만들 수 있어요.

  • Amazon EC2 콘솔에서 복제하려는 AMI를 찾습니다.
  • Windows 인스턴스를 시작하고 연결합니다.
  • 설정을 사용자 지정합니다.
  • Windows Start 메뉴에서 Amazon EC2Launch settings를 검색해 선택합니다. Amazon EC2Launch settings 대화 상자의 옵션과 설정에 대한 자세한 내용은 Configure EC2Launch v2 settings for Windows instances를 참고하세요.
  • 변경한 내용이 있다면 종료 전에 Save를 선택합니다.
  • Shutdown with Sysprep 또는 Shutdown without Sysprep을 선택합니다.

Windows Sysprep을 실행하고 인스턴스를 종료할 것인지 확인 메시지가 뜨면 Yes를 선택하세요. EC2Launch v2가 Windows Sysprep을 실행합니다. 그러면 인스턴스에서 로그아웃되고 인스턴스가 종료돼요. Amazon EC2 콘솔의 Instances 페이지를 확인하면 인스턴스 상태가 Running → Stopping → Stopped로 바뀌는 것을 볼 수 있어요. 이 시점에 이 인스턴스에서 AMI를 만들어도 안전합니다.

명령줄에서 다음 명령으로 Windows Sysprep 도구를 수동으로 호출할 수도 있어요.

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

더 알아보기