Terraform

使用 Packer 將 Windows VM 添加到域

  • November 8, 2021

我正在嘗試使用 Packer 創建 Windows 映像以在 Azure 上使用。作為此過程的一部分,我需要將一些位於 Azure 中現有 VM 上的文件放入映像中。我的想法是將虛擬機添加到域中,這樣我就可以直接複製文件。但是,到目前為止,我還無法將圖像添加到域中。

我試過執行一個 powershell 腳本,但這給了我以下錯誤消息:

Error uploading ps script containing env vars: Error uploading file to $env:TEMP

接下來,我嘗試直接從 powershell-provisioner(普通使用者和提升使用者)執行“Add-Computer”命令,但兩個選項都沒有成功。使用正常外殼,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

有誰知道如何將圖像添加到域?還是有另一種方法可以將文件從現有 VM 複製到映像?或者最好在部署期間使用 Terraform 複製文件?

我無法通過 Packer 解決這個問題。但是,我找到了一個解決方案,使用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
}

引用自:https://serverfault.com/questions/1082002