【发布时间】:2020-06-19 07:09:02
【问题描述】:
我需要在下面的 Terraform 代码中获取 count 的值,以便我可以在 bash 中编写条件语句。
这里是terraform
resource "aws_instance" "kubernetes_master" {
ami = "${var.ec2-ami}"
count = 3
instance_type = "${var.ec2-type}"
key_name = "${aws_key_pair.public.key_name}"
subnet_id = "${aws_subnet.kube-master-subnet.id}"
vpc_security_group_ids = ["${aws_security_group.sg-kube-master-allow-ssh.id}"]
associate_public_ip_address = true
user_data = <<-EOF
#!/bin/bash
# if count=0; then echo "done"; fi
pwd
EOF
}
所以我想打印done 如果count=0
我该怎么做?
【问题讨论】:
-
length(aws_instance.kubernetes_master.*.id)工作吗? -
是否可以在
user_data部分中执行类似的操作? -
不,你通常不能在 terraform 中自我引用资源,有些甚至会在目标存在之前尝试评估。如果
count由 var 设置,您可以重用该 var。我强烈建议不要像这样用“硬方式”来做 k8s。 -
您可以参考
count.index来获取资源定义中的值,但您的预期用途似乎没有意义(似乎您正试图将其用于某种日志记录在资源创建期间,这是行不通的)。
标签: amazon-web-services terraform