Упаковщик - AWS Windows 2016 SysPrep возвращает код выхода 1
При попытке SysPrep экземпляра AWS Windows Server 2016 с помощью Packer выдается следующая ошибка:
Build 'amazon-ebs' errored: Script exited with non-zero exit status: 1. Allowed exit codes are: [0]
Я звоню SysprepInstance.ps1
сценарий, указанный на http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html.
2 ответа
Ответ Кастрохенджа поставил меня на правильный путь, но я предпочел передать переключатель "-NoShutdown" в SysprepInstance.ps1 для достижения той же цели.
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SysprepInstance.ps1 -NoShutdown
Также имейте в виду, что функции, требующие перезапуска, могут заблокировать sysprep и не смогут отчитаться перед упаковщиком. Чтобы решить эту проблему, я просто использую провайдер restart в упаковщике перед sysprep.
Проблема была вызвана тем, что SysprepInstance.ps1
скрипт отключает экземпляр, используя следующую команду:
# Finally, perform sysprep.
Start-Process -FilePath $sysprepPath -ArgumentList ("/oobe /shutdown /generalize `"/unattend:{0}`"" -f $answerFilePath) -Wait -NoNewWindow
Я решил это, изменив SysprepInstance.ps1
перед запуском, следующим образом:
$sysPrepInstanceFile = "C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SysprepInstance.ps1"
(Get-Content $sysPrepInstanceFile -Verbose).Replace("/shutdown ", "") | Set-Content $sysPrepInstanceFile -Verbose