本文介绍了TerraForm变量和计数=0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们在所有环境中使用相同的地形定义。到目前为止一切都很顺利,但是现在我面临着一个我还不能解决的问题。我有一个服务的RDS和ElastiCache,这在我现在设置的演示环境中是不需要的,所以我将count
设置为0
。对于其他环境,我需要通过输出var:公开它们resource "aws_elasticache_cluster" "cc_redis" {
cluster_id = "cc-${var.env}"
engine = "redis"
node_type = "cache.t2.small"
security_group_ids = ["..."]
count = "${var.env == "demo" ? 0 : 1}"
}
output "cc_redis_host" {
value = "${aws_elasticache_cluster.cc_redis.cache_nodes.0.address}"
}
现在我收到此错误:
output.cc_redis_host: Resource 'aws_elasticache_cluster.cc_redis' not found
for variable 'aws_elasticache_cluster.cc_redis.cache_nodes.0.address'
我并不介意有一个无用的变量集,但是我一开始就不能让它工作。简单的条件并不能解决这个问题,因为terraform会计算条件条件的错误方面,即使它没有被使用。我找到this hack,但也无法使其工作。
推荐答案
尝试此操作:
output "cc_redis" {
value = "${element(concat(aws_elasticache_cluster.cc_redis.*.cache_nodes.0.address, list("")), 0)}"
}
TF似乎并不关心如果通配符越高,计数可能为0。
这可能会输出比您需要的更多,但您可以从中分析出您需要的内容。
这篇关于TerraForm变量和计数=0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!