使用打包器创建 Azure VM 映像

Creating an Azure VM image with packer

我正在尝试使用加壳器创建 Azure VM 映像。我的打包程序模板如下所示

variable "version" {
  type = string
  default = "1.0.0"
}

variable "created_by" {
  type = string
}

source "azure-arm" "development_subscription" {
  azure_tags      = {
    CreatedBy     = var.created_by
    CreatedDate   = formatdate("DD/MM/YYYY hh:mm:ss",timestamp())
  }
  image_offer                       = "WindowsServer"
  image_publisher                   = "MicrosoftWindowsServer"
  image_sku                         = "2022-datacenter-g2"
  managed_image_name                = "MyImage_${var.version}"
  managed_image_resource_group_name = "Some-RG"
  os_type                           = "Windows"
  location                          = "ukwest"
  # client_id       = var.client_id
  # client_secret   = var.client_secret
  subscription_id                   = "e8204745-e84f-4b2e-9e6f-545656fe0922"
  vm_size                           = "Standard_D2s_v3"
  winrm_insecure  = true
  winrm_timeout   = "20m"
  winrm_use_ssl   = true
  winrm_username  = "packer"
}

然而我不断得到:

==> azure-arm.development_subscription: Waiting for WinRM to become available...
==> azure-arm.development_subscription: Timeout waiting for WinRM.

我在网上找到的其他资源暗示我应该尝试增加超时,但此 VM 的启动时间似乎不会超过几秒钟。我需要做些什么来禁用系统防火墙吗?

我失踪了tenant_id。添加后,一切正常。

我试过你的代码,它在连接到 winRM 时也卡住了,并且等待相同的超时。

我在你的代码中发现的主要问题是你没有添加communicator ="WinRM"。因此,出于这个原因,WinRM 端口没有打开,您无法通过它进行连接。

所以,我在下面的代码中添加了与解决方案相同的内容:

variable "version" {
  type    = string
  default = "1.0.0"
}

variable "created_by" {
  type    = string
  default = "ajay"
}
variable "client_secret" {
  default = "XXXXXXXXXXXXXXXXXXXXXXXX"
}
variable "client_id" {
  default = "XXXXXXXXXXXXXXXXXXXXXXXXXX"
}

source "azure-arm" "development_subscription" {
  azure_tags = {
    CreatedBy   = var.created_by
    CreatedDate = formatdate("DD/MM/YYYY hh:mm:ss", timestamp())
  }
  image_offer                       = "WindowsServer"
  image_publisher                   = "MicrosoftWindowsServer"
  image_sku                         = "2022-datacenter-g2"
  managed_image_name                = "MyImage_${var.version}"
  managed_image_resource_group_name = "ansumantest"
  os_type                           = "Windows"
  location                          = "ukwest"
  client_id                         = var.client_id
  client_secret                     = var.client_secret
  subscription_id                   = "XXXXXXXXXXXXXXXXXXXX"
  vm_size                           = "Standard_D2s_v3"
  communicator                      = "winrm"
  winrm_insecure                    = true
  winrm_timeout                     = "20m"
  winrm_use_ssl                     = true
  winrm_username                    = "packer"
}

build {
  name = "learn-packer"
  sources = [
    "source.azure-arm.development_subscription"
  ]
}

输出: