【问题标题】:Can we write logics in Terraform Code (IaC) anything like using count.index[ ]?我们可以在 Terraform 代码 (IaC) 中编写逻辑,例如使用 count.index[ ] 吗?
【发布时间】:2021-03-09 13:55:20
【问题描述】:
在使用 Terraform 时,我有一个问题;我将能够使用 terraform destroy --target [] --target [] 或 terraform state -rm 销毁一些特定资源;如果我们有 50 台服务器,这没关系,但如果我有 1000 台服务器并且想使用列表中的数组编号终止奇数实例或偶数实例,或者我们可以编写一个脚本来收集所有损坏的实例并执行该脚本终止所有这些实例并使该脚本可重用!
有什么办法吗,我在网上找遍了,没找到解决办法;可能这个问题很愚蠢,但我只是好奇!!!!
是否有任何文档可以解释这是无法通过 terraform 实现的!!!!
【问题讨论】:
标签:
amazon-ec2
terraform
instance
terraform-provider-aws
【解决方案1】:
您可以将计数公开为输出:
output "server_count" {
value = var.server_count
}
并编写一个脚本(shell/Python/etc),将该计数作为参数并使用它来污染每个奇怪的资源:
#!/bin/bash
# usage: taint_odd_servers.sh <num servers>
SERVER_COUNT=$1
i=0
while [ $i -lt $SERVER_COUNT ]
do
REMAINDER=$(( $i % 2 ))
if [ $REMAINDER -ne 0 ]
then
terraform taint "your_server_resource[${i}]"
fi
i=$(($i+1))
done
然后您可以像这样调用该脚本:
taint_odd_servers.sh $(terraform output server_count)