. Я пытаюсь создать образы Windows для использования в Azure с помощью Packer. В рамках этого процесса мне нужно поместить в образ некоторые файлы, расположенные на существующей виртуальной машине в Azure. Моя идея заключалась в том, чтобы добавить виртуальную машину в домен, чтобы я мог напрямую копировать файлы. Однако до сих пор мне не удалось добавить изображение в домен.
Я попытался запустить сценарий powershell, но это выдает следующее сообщение об ошибке.:
Error uploading ps script containing env vars: Error uploading file to $env:TEMP
Затем я попытался запустить команду «Добавить-Компьютер» непосредственно из PowerShell-provisioner (как с обычным, так и с повышенными правами), но ни один из вариантов не удался. С обычной оболочкой кажется, что Packer просто застрял. После сообщения Provisioning with Powershell
ничего не происходит. Привилегированная оболочка выдает мне сообщение об ошибке:
(12,8):UserId:
==> azure-arm.xxxxx: At C:\Windows\Temp\packer-elevated-shell-617ab2e4-e084-8ef8-f9f6-0d66a82a0129.ps1:60 char:1
Кто-нибудь знает, как добавить изображение в домен? Или есть другой способ скопировать файлы с существующей виртуальной машины в образ? Или, возможно, лучше скопировать файлы во время развертывания с помощью Terraform?
Мне не удалось решить эту проблему. через Пакер. Тем не менее, я нашел решение, используя azurerm_virtual_machine_extension
, где я запускаю скрипт powershell, который делает это, а также некоторые другие задачи:
resource "azurerm_virtual_machine_extension" "vm_extension_install_srv" {
count = var.app_count
name = "vm_extension_install_srv"
virtual_machine_id = azurerm_windows_virtual_machine.app[count.index].id
publisher = "Microsoft.Compute"
type = "CustomScriptExtension"
type_handler_version = "1.8"
auto_upgrade_minor_version = true
settings = <<SETTINGS
{
"commandToExecute": "powershell.exe -Command \"C:/setup/provision/first_boot.ps1 -index ${count.index + 1}; exit 0;\""
}
SETTINGS
}