【发布时间】:2020-05-17 12:27:02
【问题描述】:
我是 Terraform 的新手,我正在使用此功能重复使用相同的子网列表来启动比我拥有的子网更多的实例。 (它只会循环)如果我提供自己的子网图,但远程状态的数据是一个元组并且我收到此错误:
Invalid value for "inputMap" parameter: lookup() requires a map as the first
argument. data.terraform_remote_state.vpc.outputs.private_subnets is tuple with 4 elements
我也尝试过 tomap( 函数,但失败了:
Invalid value for "v" parameter: cannot convert tuple to map of any single
type.
这是我的代码:
count = var.instance_count
ami = var.ami
instance_type = "t2.medium"
subnet_id = lookup(data.terraform_remote_state.vpc.outputs.private_subnets, count.index%length(data.terraform_remote_state.vpc.outputs.private_subnets))
vpc_security_group_ids = ["${data.terraform_remote_state.foo_sg.outputs.foo_sg_id}"]
key_name = var.key_name
iam_instance_profile = var.iam_instance_profile
user_data = <<-EOF
#!/bin/bash
hostnamectl set-hostname --static "${var.app_name}-${count.index + 1}.${data.terraform_remote_state.vpc.outputs.private_zone_domain_name}"
echo "127.0.0.1 localhost.localdomain localhost4 localhost4.localdomain4 ${var.app_name}-${count.index + 1}.${data.terraform_remote_state.vpc.outputs.private_zone_domain_name} localhost" > hosts
echo "::1 localhost localhost.localdomain localhost6 localhost6.localdomain6" >> hosts
EOF
tags = {
Name = "${var.app_name}-${count.index +1}.${data.terraform_remote_state.vpc.outputs.private_zone_domain_name}"
}
就像我说的那样,我的目标是在我拥有的那个远程状态下重新使用 4 个子网,所以如果我想要 6 个实例,它将循环通过我拥有的 4 个实例,而第 5 和第 6 个实例将位于子网 1 和 2在元组中。任何建议将不胜感激!
【问题讨论】:
-
如果数据存储在您的远程状态中,那么您可以控制其类型,并且可以根据需要预先定义它。
标签: terraform terraform-provider-aws