【发布时间】:2023-04-06 21:45:01
【问题描述】:
变量.tf
variable "env_name" {
default = "some_client"
}
variable "azure_instance_names" {
default = [
"AD01",
"AD01",
]
}
我',尝试为azure_instance_names 变量(在本例中为 2)中指定的多个实例创建公共 IP,我在命名此资源时遇到问题,我想通过加入 env_name 和 @987654324 来创建名称@ 多变的。必须是一个单词,以-分隔,所以name应该在env_name-azure_instance_names中例如:
期望的输出
name=some_client-AD01
some_client-AD02
实际输出:
name=some_client AD01
some_client AD02
main.tf
resource "azurerm_public_ip" "datasourceip" {
count = "${length(var.azure_instance_names)}"
name = "${join("-", list(format("%s %s", var.env_name, element(var.azure_instance_names, count.index))))}"
location = "${azurerm_resource_group.res_group.location}"
resource_group_name = "${azurerm_resource_group.res_group.name}"
allocation_method = "Static"
}
在 terraform apply 我得到:
+ azurerm_public_ip.datasourceip[1]
id: <computed>
allocation_method: "Static"
fqdn: <computed>
idle_timeout_in_minutes: "4"
ip_address: <computed>
ip_version: "IPv4"
location: "westeurope"
name: "some_client AD01"
resource_group_name: "myrg1"
sku: "Basic"
tags.%: <computed>
由于 Azure 不接受超过一个单词 i' 的资源名称,因此尝试将“-”加入 var.env_name, var.azure_instance_names,因此资源名称应为 some_client-AD01
虽然我指定了连接函数 i',但仍然出现同样的错误:
azurerm_public_ip.datasourceip.1:创建/更新公共 IP“some_client AD01”(资源组“myrg1”)时出错:network.PublicIPAddressesClient#CreateOrUpdate:发送请求失败:StatusCode=400 -- 原始错误:Code="InvalidResourceName" Message="资源名称 some_client LBA-P-EU2B-AD01 无效。名称最长可包含 80 个字符。必须以单词字符开头,并且必须以单词字符或以 '' 结尾。名称可能包含单词字符或 '.'、'-'、''。"详情=[]
【问题讨论】:
标签: terraform