azure Terraform参数与CSV文件
我试图使用CSV文件访问地形变量数据,将创建资源组和资源组的名称添加到CSV文件中,并尝试访问代码 代码如下:azure Terraform参数与CSV文件,terraform,terraform-provider-azure,terraform-provider-openstack,Terraform,Terraform Provider Azure,Terraform Provider Openstack,我试图使用CSV文件访问地形变量数据,将创建资源组和资源组的名称添加到CSV文件中,并尝试访问代码 代码如下: locals { Resource_groupname = csvdecode(file("${path.module}/onkar.csv")) } //Create a resource group resource "azurerm_resource_group" "Customer11" { count = length(local.Resource_group
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".
更新
新更新
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文件和输出
要从CSV文件加载输入,我假设您的CSV文件只有一行,它如下所示:
test1,test2,test3
resource_group_name
test1
test2
test3
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文件中加载并使用它们,如下所示:
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文件:
test1,test2,test3
resource_group_name
test1
test2
test3
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"
}
然后,地形代码应更改为:
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文件,您需要更改资源组名称,如下所示:
test1,test2,test3
resource_group_name
test1
test2
test3
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\u groupname
以查看从CSV文件加载数据时的外观
更新2
我真的不明白你为什么不知道怎么做。这是我所有测试的截图,希望你能解决它:
地形文件和CSV的内容
地形图:
错误很明显:您没有名为
local.Resource\u groupname.resourcegroup\u name的对象,您只定义了名为local.Resource\u groupname的对象。此资源组\u name
来自何处?资源组名称来自CSV文件我已将名称存储在CSV文件中,资源组名称为列名。CSV文件看起来如何?与excel相同扩展名为CSV UTF-8(逗号分隔)格式第二个代码显示了相同的错误agian@Charles XU错误:在资源“azurerm_资源_组”“main”中的admin.tf第14行不支持的属性:14:name=local.group_names[count.index].resource_group_name |------------------------------| local.group_name是包含3个元素的对象列表此对象没有名为“resource_group_name”的属性。我已尝试了这两个代码,但再次显示相同的错误。第一个代码显示以下错误,我已按照您的方法保存CSV文件内容。错误:“名称”在资源“azurerm_资源_组”“Customer11”:12:resource“azurerm_资源_组”“Customer11”的admin.tf行上只能包含字母数字字符、破折号、下划线、括号和句点@terraform ninja只显示CSV文件。如果没有消息,我无法理解它。我已经添加了与您在第二个解决方案顶部提供的内容相同的内容,如resourcegroup name和thet,在一列中添加数据,如test1、test2、test3,然后将excel文件另存为CSV UTF-8(逗号分隔)格式化…@terraform ninja您所说的test1、test2、test3的值应该在每一行中输入,而不是在一行中输入。是吗?我需要再说一次,名称group\u names
是locals
块中的数组名称。资源\u group\u name
是您在CSV文件第一行中设置的名称。