问题描述
terraform azurerm_image
数据源允许您使用 RegEx 来识别 ID 与正则表达式匹配的机器映像。
应该使用什么 RegEx 来检索包含字符串 MyImageName
且采用完整形式 /subscriptions/abc-123-def-456-ghi-789-jkl/resourceGroups/MyResourceGroupName/providers/Microsoft.Compute/images/MyImageName1618954096
的图像?
以下版本的 RegEx 抛出错误,因为它不接受两个 *
字符。然而,当我们只使用尾随 *
时,图像没有被检索。
data "azurerm_image" "search" {
name_regex = "*MyImageName*"
resource_group_name = var.resourceGroupName
}
请注意,结果仅返回单个图像,因此您无需担心返回多个图像。可以设置一个标志来指定升序或降序排序以检索最旧或最新的匹配项。
我们得到的准确错误是:
Error: "name_regex": error parsing regexp: missing argument to repetition operator: `*`
尼克的建议
根据@Nick 的建议,我们尝试了:
data "azurerm_image" "search" {
name_regex = "/MyImageName[^/]+$"
resource_group_name =
var.resourceGroupName
}
但结果是:
Error: No Images were found for Resource Group "MyResourceGroupName"
我们检查了 Azure 门户,在名为 MyImageName
的资源组中有一个名称中包含 MyResourceGroupName
的图像。我们还确认 terraform 作为订阅所有者运行,因此我们假设订阅所有者有足够的权限来过滤图像名称。
我们还能尝试什么?