【发布时间】:2021-07-29 19:25:24
【问题描述】:
我的 Azure 共享图像库 (myGallery) 中有一张图像,名称为 myImage,版本为 1.0.0。
我正在尝试通过 Terraform 为图库中的此图像创建一个虚拟机,但收到以下错误:
错误:创建 Linux 虚拟机“testingvm”(资源组“myrg”):compute.VirtualMachinesClient#CreateOrUpdate:发送请求失败:StatusCode=0 -- 原始错误:Code="InvalidParameter" Message="Parameter 'osProfile'不允许。”目标="osProfile"
- Azure CLI 版本: 2.26.1
- Terraform 版本: 1.0.0
- Azure Terraform 提供程序版本: 2.69.0
我的虚拟机 Terraform 如下所示:
resource "azurerm_linux_virtual_machine" "testingvm" {
name = "testingvm"
resource_group_name = var.resource_group_name
location = var.location
size = "Standard_D2s_v4"
network_interface_ids = [azurerm_network_interface.testingvm.id]
admin_username = "azureuser"
source_image_id = "/subscriptions/MY_SUBSCRIPTION/resourceGroups/myrg/providers/Microsoft.Compute/galleries/myGallery/images/myImage/versions/1.0.0"
os_disk {
name = "testingvm-os"
caching = "ReadWrite"
storage_account_type = "Premium_LRS"
}
admin_ssh_key {
username = "azureuser"
public_key = module.vm_key_pair.pair_key_pub_value_openssh
}
}
我尝试使用这两种方法都没有运气(我相信后者是推荐的方法):
我也尝试引用this Stack Overflow entry,但没有任何运气。
我在这里做错了什么?
又一次尝试
我也试过用这个:
source_image_reference {
publisher = "myPublisher"
offer = "myOffer"
sku = "mySKU"
version = "1.0.0"
}
查看此输出后,identifier 块吐出匹配参数:
az sig image-definition show \
--gallery-image-definition myImage \
--gallery-name myGallery
--resource-group myrg
结果:
错误:创建 Linux 虚拟机“testingvm”(资源组“myrg”):compute.VirtualMachinesClient#CreateOrUpdate:发送请求失败:StatusCode=0 -- 原始错误:Code="PlatformImageNotFound" Message="The platform image ' myPublisher:myOffer:mySKU:1.0.0' 不可用。请验证存储配置文件中的所有字段是否正确。有关存储配置文件信息的更多详细信息,请参阅https://aka.ms/storageprofile"Target="imageReference"
【问题讨论】:
-
共享图片需要使用az sig image-definition show-shared docs.microsoft.com/en-us/cli/azure/sig/…
-
不允许使用 osProfile 意味着您正在为专用映像版本提供 SSH 密钥。 (见docs.microsoft.com/en-us/azure/virtual-machines/…)
-
另请参阅此博客文章,了解如何识别存储配置文件配置中的问题:medium.com/@rafique82.ai/…
-
@KyleHale 就像一个魅力