Sysprep & tạo AMI windows server
Đối với các dự án sử dụng Windows server có join domain, khi tạo AMI sẽ buộc phải sysprep, nếu không sẽ gặp các vấn đề:
Trùng SID khi join domain, khi domain controller phát hiện ra 2 máy chạy song song trùng sid, sẽ không thể đăng nhập vào được nữa.
Trùng tên hostname trong OS, nên khi join domain sẽ bị duplicate tên CNO, không thể join domain
Do đó, các bước tạo AMI cần thực hiện theo quy trình sau:
Tạo 1 AMI từ con instance đang chạy hiện tại, đợi AMI này available. Lưu ý nên sử dụng CMK để encrypt các volume, các snapshot, nếu không thì AMI khi tạo ra sẽ được mã hóa bằng kms key aws/ebs, key này không thể custom được policy.
Launch mới 1 con instance tạm từ AMI đã tạo ở bước 1.
Thực hiện sysprep:
Đầu tiên phải kiểm tra instance xem là instance nguyên bản hay là đã từng sysprep nhưng vẫn sử dụng, bởi vì đã sysprep 1 lần thì không thể sysprep lần nữa, sẽ hỏng luôn AMI, nonrecoverable error, để tránh 2 lỗi nêu bên trên thì chỉ có cách unjoin domain rồi đổi hostname.
Test-Path "C:\Windows\System32\Sysprep\Sysprep_succeeded.tag"
Nếu lệnh trên không cho ra kết quả đã từng sysprep thành công thì có thể thực hiện sysprep.
Kiểm tra EC2Launch có tồn tại không
Test-Path "$env:ProgramFiles\Amazon\Ec2Launch\ec2launch.exe"Chạy sysprep:
& "$env:ProgramFiles\Amazon\EC2Launch\ec2launch.exe" sysprep --shutdownCó thể chạy lệnh ở trên hoặc lệnh sau (nếu không có ec2launch hay ec2launch lỗi):
& "$env:windir\System32\Sysprep\sysprep.exe" /generalize /oobe /shutdown /unattend:"C:\ProgramData\Amazon\EC2Launch\sysprep\unattend.xml"
Sau khi sysprep thì tạo AMI. Đợi cho AMI đã sysprep available, thì thực hiện launch mới instance. Khi thực hiện launch mới có thể chọn instance rồi: Action > Monitor and troubleshoot > Get system log để kiểm tra log trong quá trình launch