При попытке 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#ec2launch-sysprep.
Ответ Кастрохенджа направил меня на правильный путь, но я предпочел передать переключатель «-NoShutdown» в SysprepInstance.ps1 для достижения той же цели.
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SysprepInstance.ps1 -NoShutdown
Также имейте в виду, что функции, требующие перезапуска, могут заблокировать sysprep и не смогут сообщить об этом упаковщику. Чтобы решить эту проблему, я просто использую 'начать сначала'Provisioner в пакере перед 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