Назад | Перейти на главную страницу

Упаковщик - 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#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