EC2Launch로 Windows Sysprep을 사용해 AMI 만들기
EC2Launch로 Windows Sysprep을 사용해 AMI 만들기 (Create an AMI using Windows Sysprep with EC2Launch)
EC2Launch 에이전트가 설치된 인스턴스에서 이미지를 만들면, EC2Launch가 이미지를 준비하는 과정에서 특정 작업을 수행해요. 여기에는 Windows Sysprep을 다루는 작업도 포함돼요. 자세한 내용은 Windows Sysprep 단계를 참고하세요.
출처: 문서
본문
EC2Launch는 AMI에서 이미지 준비 과정을 자동화하고 안전하게 만드는 Windows Sysprep용 기본 응답 파일(answer file)과 배치 파일을 제공해요. 이 파일들을 수정하는 것은 선택 사항이에요. 이 파일들은 기본적으로 다음 디렉터리에 있어요: C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep
중요 Windows Sysprep을 인스턴스 백업을 만드는 데 사용하지 마세요. Windows Sysprep은 시스템별 정보를 제거해요. 이 정보를 제거하면 인스턴스 백업에 의도하지 않은 결과가 생길 수 있어요.
Windows Sysprep용 EC2Launch 응답 및 배치 파일 (EC2Launch answer and batch files for Windows Sysprep)
Windows Sysprep용 EC2Launch 응답 파일과 배치 파일에는 다음이 포함돼요.
Unattend.xml
기본 응답 파일이에요. SysprepInstance.ps1을 실행하거나 사용자 인터페이스에서 ShutdownWithSysprep을 선택하면, 시스템이 이 파일의 설정을 읽어요.
BeforeSysprep.cmd
EC2Launch가 Windows Sysprep을 실행하기 전에 실행할 명령을 넣도록 이 배치 파일을 커스터마이즈할 수 있어요.
SysprepSpecialize.cmd
Windows Sysprep의 specialize 단계 동안 실행할 명령을 넣도록 이 배치 파일을 커스터마이즈할 수 있어요.
EC2Launch로 Windows Sysprep 실행하기 (Run Windows Sysprep with EC2Launch)
Windows Server 2016 이상(데스크톱 경험 포함)의 전체 설치에서는 EC2Launch로 Windows Sysprep을 수동으로 실행하거나 EC2 Launch Settings 애플리케이션으로 실행할 수 있어요.
EC2 Launch Settings 애플리케이션으로 Windows Sysprep 실행하기
- Amazon EC2 콘솔에서 Windows Server 2016 이상 AMI를 찾거나 만들어요.
- 그 AMI에서 Windows 인스턴스를 시작해요.
- Windows 인스턴스에 연결하고 커스터마이즈해요.
- EC2LaunchSettings 애플리케이션을 검색해 실행해요. 기본적으로 다음 디렉터리에 있어요:
C:\ProgramData\Amazon\EC2-Windows\Launch\Settings - 필요에 따라 옵션을 선택하거나 선택 해제해요. 이 설정은
LaunchConfig.json파일에 저장돼요. - Administrator Password에서 다음 중 하나를 수행해요.
- Random을 선택해요. EC2Launch가 비밀번호를 생성하고 사용자의 키로 암호화해요. 인스턴스가 시작된 후 이 설정은 비활성화되므로, 인스턴스를 재부팅하거나 중지 후 시작해도 이 비밀번호가 유지돼요.
- Specify를 선택하고 시스템 요구 사항을 충족하는 비밀번호를 입력해요. 비밀번호는
LaunchConfig.json에 일반 텍스트로 저장되고, Windows Sysprep이 관리자 비밀번호를 설정한 후 삭제돼요. 지금 종료하면 비밀번호가 즉시 설정돼요. EC2Launch가 사용자의 키로 비밀번호를 암호화해요. - DoNothing을 선택하고
unattend.xml파일에 비밀번호를 지정해요.unattend.xml에 비밀번호를 지정하지 않으면 관리자 계정이 비활성화돼요.
- Shutdown with Sysprep을 선택해요.
EC2Launch로 Windows Sysprep을 수동으로 실행하기
- Amazon EC2 콘솔에서 복제할 Windows Server 2016 이상 Datacenter 에디션 AMI를 찾거나 만들어요.
- Windows 인스턴스를 시작하고 연결해요.
- 인스턴스를 커스터마이즈해요.
LaunchConfig.json파일에서 설정을 지정해요. 이 파일은 기본적으로C:\ProgramData\Amazon\EC2-Windows\Launch\Config디렉터리에 있어요.adminPasswordType에 다음 값 중 하나를 지정해요.Random: EC2Launch가 비밀번호를 생성하고 사용자의 키로 암호화해요. 인스턴스가 시작된 후 이 설정은 비활성화되므로, 인스턴스를 재부팅하거나 중지 후 시작해도 비밀번호가 유지돼요.Specify: EC2Launch가adminPassword에 지정한 비밀번호를 사용해요. 비밀번호가 시스템 요구 사항을 충족하지 않으면 EC2Launch가 임의의 비밀번호를 생성해요. 비밀번호는LaunchConfig.json에 일반 텍스트로 저장되고, Windows Sysprep이 관리자 비밀번호를 설정한 후 삭제돼요. EC2Launch가 사용자의 키로 비밀번호를 암호화해요.DoNothing: EC2Launch가unattend.xml파일에 지정한 비밀번호를 사용해요.unattend.xml에 비밀번호를 지정하지 않으면 관리자 계정이 비활성화돼요.
- (선택 사항)
unattend.xml및 기타 구성 파일에서 설정을 지정해요. 설치에 직접 참여할 계획이라면 이 파일들을 변경할 필요는 없어요. 이 파일들은 기본적으로C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep디렉터리에 있어요. - Windows PowerShell에서
./InitializeInstance.ps1 -Schedule을 실행해요. 스크립트는 기본적으로C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts디렉터리에 있어요. 이 스크립트는 다음 부팅 때 인스턴스가 초기화되도록 예약해요. 다음 단계의SysprepInstance.ps1스크립트를 실행하기 전에 이 스크립트를 먼저 실행해야 해요. - Windows PowerShell에서
./SysprepInstance.ps1을 실행해요. 스크립트는 기본적으로C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts디렉터리에 있어요.
인스턴스에서 로그아웃되고 인스턴스가 종료돼요. Amazon EC2 콘솔의 인스턴스 페이지를 확인하면 인스턴스 상태가 Running에서 Stopping으로, 그다음 Stopped로 바뀌는 걸 볼 수 있어요. 이 시점에 이 인스턴스에서 AMI를 만들어도 안전해요.
커스텀 AMI를 시작할 때 Server 2016 이상의 메타데이터/KMS 라우트 갱신 (Update metadata/KMS routes for Server 2016 and later when launching a custom AMI)
- EC2LaunchSettings GUI(
C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe)를 실행하고 Windows Sysprep과 함께 종료하는 옵션을 선택해요. - AMI를 만들기 전에 EC2LaunchSettings를 실행하고 Windows Sysprep 없이 종료해요. 이렇게 하면 EC2 Launch 초기화(Initialize) 작업이 다음 부팅 때 실행되도록 설정되고, 인스턴스의 서브넷에 따라 라우트가 설정돼요.
- PowerShell에서 AMI를 만들기 전에 EC2 Launch 초기화 작업을 수동으로 다시 예약해요. 중요 작업을 다시 예약하기 전에 기본 비밀번호 재설정 동작을 기록해 두세요.
- Windows 정품 인증에 실패하거나 인스턴스 메타데이터와 통신이 실패하는 실행 중인 인스턴스의 라우트를 갱신하려면 "Windows를 활성화할 수 없음"을 참고하세요.