带有 CSV 文件的天蓝色 Terraform 参数
Posted
技术标签:
【中文标题】带有 CSV 文件的天蓝色 Terraform 参数【英文标题】:azure Terraform parameter with CSV file 【发布时间】:2020-07-14 02:44:00 【问题描述】:我正在尝试使用 CSV 文件访问 terraform 变量数据,创建资源组并将资源组的名称添加到 CSV 文件中并尝试访问代码。
代码如下:
locals
Resource_groupname = csvdecode(file("$path.module/onkar.csv"))
//Create a resource group
resource "azurerm_resource_group" "Customer11"
count = length(local.Resource_groupname)
name = local.Resource_groupname[count.index].resourcegroup_name
location = "North europe"
我收到以下错误:
on admin.tf line 15, in resource "azurerm_resource_group"
"Customer11": 15: name =
local.Resource_groupname[count.index].resourcegroup_name
|----------------
| local.Resource_groupname is list of object with 1 element
This object does not have an attribute named "resourcegroup_name".
更新
This is error SS
CSV file
Updated Code:
locals
Resource_groupname = csvdecode(file("./test.csv"))
resource "azurerm_resource_group" "Customer11"
count = length(local.Resource_groupname)
name = local.Resource_groupname[count.index].group_names
location = "North europe"
新更新
locals
Resource_groupname = csvdecode(file("./test.csv"))
resource "azurerm_resource_group" "Customer11"
count = length(local.Resource_groupname)
name = local.Resource_groupname[count.index].Resource_groupname
location = "North europe"
新的更新 CSV 文件和输出
Error
CSV file
【问题讨论】:
错误很明显:您没有名为local.Resource_groupname.resourcegroup_name
的对象,您只定义了一个名为local.Resource_groupname
的对象。这个resourcegroup_name
来自哪里?
资源组名称来自 CSV 文件我已将名称存储在 CSV 文件中,资源组名称为列名。
csv文件长什么样子?
和excel一样扩展是CSV UTF-8(逗号分隔)格式
【参考方案1】:
为了从 CSV 文件加载输入,我假设你的 CSV 文件只有一行,它看起来像这样:
test1,test2,test3
然后您可以从 CSV 文件中加载和使用它们,如下所示:
locals
group_names = split(",", file("./test.csv"))
resource "azurerm_resource_group" "Customer11"
count = length(local.group_names)
name = local.group_names[count.index]
location = "North europe"
如果你像这样使用 CSV 文件:
resource_group_name
test1
test2
test3
那么 terraform 代码应该变成这样:
locals
group_names = csvdecode(file("./test.csv"))
resource "azurerm_resource_group" "main"
count = length(local.group_names)
name = local.group_names[count.index].resource_group_name
location = "East US"
更新:
使用您提供的 CSV 文件,您需要像这样更改资源组名称:
resource "azurerm_resource_group" "Customer11"
count = length(local.Resource_groupname)
name = local.Resource_groupname[count.index].group_names # here is the change
location = "North europe"
这是 CSV 文件的屏幕截图:
您可以尝试输出local.Resource_groupname
,看看您从 CSV 文件加载数据时的样子。
更新2
我真的不明白为什么你不知道该怎么做。这是我对所有东西的测试截图,希望你解决它:
Terraform 文件和 CSV 的内容。
Terraform 计划:
【讨论】:
第二个代码显示相同的错误 agian @Charles XU 错误:资源“azurerm_resource_group”“main”中的 admin.tf 第 14 行不支持属性:14:name = local.group_names [ count.index].resource_group_name |---------------- | local.group_names 是包含 3 个元素的对象列表 此对象没有名为“resource_group_name”的属性。 我已经尝试了两个代码,它再次显示相同的错误。第一个代码显示以下错误,我已按照您的方法保存 CSV 文件内容。 “错误:“名称”在资源“azurerm_resource_group”“Customer11”中的 admin.tf 第 12 行中只能包含字母数字字符、短划线、下划线、括号和句点:12:资源“azurerm_resource_group”“Customer11”“ @terraform-ninja 只显示 CSV 文件。没有消息,我无法弄清楚。 我添加了您在第二个解决方案顶部提供的相同内容,如资源组名称,然后在单个列中添加数据,如 test1、test2、test3,然后将 excel 文件保存为 CSV UTF -8(逗号分隔)格式... @terraform-ninja 你说的值 test1,test2,test3 应该在每一行中输入,而不是在一行中。可以?我需要再说一遍,名称group_names
是locals
块中的数组名称。 resource_group_name
是您在 CSV 文件第一行中设置的名称。【参考方案2】:
显然有同样的问题,由于某种原因它不会读取第一列,您可以将所有数据向右移动一列,将第一列留空。为我工作。
【讨论】:
以上是关于带有 CSV 文件的天蓝色 Terraform 参数的主要内容,如果未能解决你的问题,请参考以下文章
azure terraform 将 azure 文件共享附加到 Windows 机器
Terraform:删除身份块不会删除从资源天蓝色逻辑应用程序分配的身份