Windows 인스턴스에서 EC2Launch(버전 1) 에이전트 구성하기

Windows 인스턴스에서 EC2Launch(버전 1) 에이전트 구성하기 (Configure the EC2Launch v1 agent on your Windows instance)

인스턴스가 처음 초기화된 후, EC2Launch가 다시 실행되어 다른 시작 작업을 수행하도록 구성할 수 있어요.

출처: 문서

본문

초기화 작업 구성하기

LaunchConfig.json 파일의 설정을 지정해 다음 초기화 작업을 활성화·비활성화할 수 있어요.

  • 컴퓨터 이름을 인스턴스의 사설 IPv4 주소로 설정.
  • 모니터를 항상 켜짐으로 설정.
  • 새 배경 화면 설정.
  • DNS 접미사 목록 추가. (참고: 이 설정은 region.ec2-utilities.amazonaws.com 도메인의 DNS 접미사 조회를 추가하고 다른 표준 접미사도 구성해요.)
  • 부팅 볼륨 크기 확장.
  • 관리자 비밀번호 설정.

구성 방법:

  1. 구성할 인스턴스에서 텍스트 편집기로 C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json 파일을 엽니다.
  2. 필요에 따라 다음 설정을 업데이트하고 저장해요. adminPasswordtype이 Specify일 때만 adminPassword에 비밀번호를 제공해요.
    {
    	"setComputerName": false,
    	"setMonitorAlwaysOn": true,
    	"setWallpaper": true,
    	"addDnsSuffixList": true,
    	"extendBootVolumeSize": true,
    	"handleUserData": true,				  
    	"adminPasswordType": "Random | Specify | DoNothing",
    	"adminPassword": "password that adheres to your security policy (optional)"
    }
    
    비밀번호 유형은 다음과 같이 정의돼요.
    • Random – EC2Launch가 비밀번호를 생성하고 사용자 키로 암호화해요. 인스턴스가 재부팅되거나 중지·시작돼도 이 비밀번호가 유지되도록 시스템은 인스턴스 시작 후 이 설정을 비활성화해요.
    • Specify – EC2Launch가 adminPassword에 지정한 비밀번호를 사용해요. 비밀번호가 시스템 요구사항을 충족하지 않으면 EC2Launch가 임의 비밀번호를 대신 생성해요. 비밀번호는 LaunchConfig.json에 평문으로 저장되고 Sysprep이 관리자 비밀번호를 설정한 후 삭제돼요. EC2Launch는 비밀번호를 사용자 키로 암호화해요.
    • DoNothing – EC2Launch가 unattend.xml 파일에 지정한 비밀번호를 사용해요. unattend.xml에 비밀번호를 지정하지 않으면 관리자 계정이 비활성화돼요.
  3. Windows PowerShell에서 다음 명령을 실행해 스크립트가 Windows 예약 작업으로 실행되도록 예약해요. 스크립트는 다음 부팅 중 한 번 실행되고 이후 다시 실행되지 않도록 비활성화돼요.
    C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
    

매 부팅마다 EC2Launch 실행 예약하기

초기 부팅뿐 아니라 매 부팅마다 EC2Launch를 실행하도록 예약할 수 있어요.

  • Windows PowerShell에서 C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot 명령을 실행하거나,
  • C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe 실행 파일을 실행한 뒤 Run EC2Launch on every boot를 선택해요. EC2 인스턴스가 Shutdown without Sysprep 또는 Shutdown with Sysprep이 되도록 지정할 수 있어요.

참고: 매 부팅 실행을 활성화하면 다음에 EC2Launch가 실행될 때 다음이 발생해요.

  • AdminPasswordType이 여전히 Random이면 다음 부팅에서 새 비밀번호를 생성하고, 그 이후 부팅에서 새 비밀번호가 생성되지 않도록 AdminPasswordType이 자동으로 DoNothing으로 설정돼요. 첫 부팅에서 새 비밀번호가 생성되는 것을 막으려면 재부팅 전에 AdminPasswordType을 수동으로 DoNothing으로 설정하세요.
  • 사용자 데이터에 persist가 true로 설정되지 않은 한 HandleUserData가 false로 되돌려져요.

드라이브 초기화와 드라이브 문자 매핑

DriveLetterMappingConfig.json 파일의 설정을 지정해 EC2 인스턴스의 볼륨에 드라이브 문자를 매핑해요. 스크립트는 아직 초기화·파티셔닝되지 않은 드라이브를 초기화해요.

  1. 텍스트 편집기로 C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json 파일을 엽니다.
  2. 다음 볼륨 설정을 지정하고 저장해요.
    {
    	"driveLetterMapping": [
    		{
    			"volumeName": "sample volume",
    			"driveLetter": "H"
    		}
    	]
    }
    
  3. Windows PowerShell에서 다음 명령으로 디스크를 초기화하는 EC2Launch 스크립트를 실행해요.
    C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1
    
    매 부팅마다 초기화하려면 -Schedule 플래그를 추가해요.
    C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule
    

Windows 이벤트 로그를 EC2 콘솔로 보내기

EventLogConfig.json 파일의 설정을 지정해 Windows 이벤트 로그를 EC2 콘솔 로그로 보낼 수 있어요.

  1. 인스턴스에서 C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json 파일을 텍스트 편집기로 엽니다.
  2. 다음 로그 설정을 구성하고 저장해요.
    {
    	"events": [
    		{
    			"logName": "System",
    			"source": "An event source (optional)",
    			"level": "Error | Warning | Information",
    			"numEntries": 3
    		}
    	]
    }
    
  3. Windows PowerShell에서 다음 명령을 실행해 시스템이 인스턴스가 부팅될 때마다 스크립트를 Windows 예약 작업으로 실행하도록 예약해요.
    C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendEventLogs.ps1 -Schedule
    
    로그가 EC2 콘솔 로그에 나타나는 데 3분 이상 걸릴 수 있어요.

성공적인 부팅 후 Windows is ready 메시지 보내기

EC2Config 서비스는 매 부팅 후 "Windows is ready" 메시지를 EC2 콘솔로 보냈어요. EC2Launch는 초기 부팅 후에만 이 메시지를 보내요. EC2Config 서비스와의 이전 버전 호환성을 위해 매 부팅 후 이 메시지를 보내도록 EC2Launch를 예약할 수 있어요. 인스턴스에서 Windows PowerShell을 열고 다음 명령을 실행해요. 시스템이 스크립트를 Windows 예약 작업으로 예약해요.

C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendWindowsIsReady.ps1 -Schedule

더 알아보기