尝试使用terraform输出csv文件的内容时遇到错误



我正在尝试使用地形变量数据(CSV文件(来创建资源组,并且资源组的名称被添加到CSV文件中。我目前遇到以下错误

│错误:不支持的属性││在testtf.tf行11上;azurerm_resource_group"Main":│11:name=local.resource_groupname[count.index].groupname│ ├────────────────│ │count.index是一个数字,只有在应用后才知道│ │local.resource_groupname是包含3个元素的对象列表││该对象没有名为"的属性;组名";。

代码

provider "azurerm" {
features{}
}
locals {
resource_groupname = csvdecode(file("./test.csv"))
}
resource "azurerm_resource_group" "Main" {
count    = length(local.resource_groupname)
name     =  local.resource_groupname[count.index].groupname   
location = "North europe"
}

/test.csv内容

https://drive.google.com/file/d/1ituKDzaMVXnyynkjLBZRzMdWK9tnkL14/view?usp=sharing

我认为您提供的文件具有导致TF和/或Azure阻塞的UTF BOM(字节顺序标记(字节。

我将csv文件重新创建为纯ascii,您的HCL工作正常

我通过使用terraform console发现了额外的字符。这是一种非常简单快捷的方法来排除TF错误。

我使用了这个非常基本的.tf文件来检查cvsdecode()的行为。(下面的test0.csv是您的原始文件,test.csv是我从头开始创建的文本文件(:

locals {
resource_groupname0 = csvdecode(file("./test0.csv"))
resource_groupname = csvdecode(file("./test.csv"))
}

运行terraform控制台并检查本地变量。注意在"之前的BOM字符;组名";(test0.csv(:

$ terraform console
> local.resource_groupname0
tolist([
{
"ufeffgroupname" = "test11"
},
{
"ufeffgroupname" = "test12"
},
{
"ufeffgroupname" = "test13"
},
])
> local.resource_groupname
tolist([
{
"groupname" = "test11"
},
{
"groupname" = "test12"
},
{
"groupname" = "test13"
},
])

同样使用unix文件命令:

## Your file
$ file test0.csv
test0.csv: UTF-8 Unicode (with BOM) text, with CRLF line terminators
## Created by hand with text editor
$ file test.csv
test.csv: ASCII text

相关内容

  • 没有找到相关文章

最新更新