我有一些资源,其count
由一个变量参数化。这用于创建VM资源以及null_resource
,例如在其上运行部署脚本。当我将计数值从2减少到1并应用时,我得到一个错误。
Terraform会毫无保留地执行plan
。但是当我apply
时,它告诉我有一个循环:
错误:周期:null_resource.network_connection_configuration [7](破坏),null_resource.network_connection_configuration [8](破坏),null_resource.network_connection_configuration [3](破坏),null_resource.network_connection_configuration [4](破坏),null_resource.network_connection_configuration [4](破坏)。 [0](销毁),null_resource.network_connection_configuration [6](销毁),null_resource.network_connection_configuration [1](销毁),null_resource.network_connection_configuration [9](销毁),null_resource.network_connection_configuration [2](销毁),null_resource.network_connection_configuration [2](销毁),null_resource.network_connection_configuration。 [10](破坏),hcloud_server.kafka [2](破坏),local.all_machine_ips,null_resource.network_connection_configuration(准备状态),null_resource.network_connection_configuration [5](破坏)
这是文件的相关部分:
variable kafka_count {
default = 3
}
resource "hcloud_server" "kafka" {
count = "${var.kafka_count}"
name = "kafka-${count.index}"
image = "ubuntu-18.04"
server_type = "cx21"
}
locals {
all_machine_ips = "${hcloud_server.kafka.*.ipv4_address)}"
}
resource "null_resource" "network_connection_configuration" {
count = "${length(local.all_machine_ips)}"
triggers = {
ips = "${join(",", local.all_machine_ips)}"
}
depends_on = [
"hcloud_server.kafka"
]
connection {
type = "ssh"
user = "deploy"
host = "${element(local.all_machine_ips, count.index)}"
port = 22
}
// ... some file provisioners
}
当我尝试使用可视化查找周期时:
terraform graph -verbose -draw-cycles
没有可见的循环。
当我使用TF_LOG=1
时,调试日志不会显示任何错误
所以问题是我可以增加计数,但不能减少计数。我不想手动修改该文件,因为这意味着以后我将无法按比例缩小!我正在使用Terraform v0.12.1。
是否有调试这种情况的策略?
答案 0 :(得分:0)
我在0.12.x中也遇到了类似的问题-我在 <td mat-cell *matCellDef="let element">{{element.origion}}</td>(dataSource)
<td mat-cell *matCellDef="let element">{{element.origion}}</td>(dataSource2018)
<td mat-cell *matCellDef="let element"> {{element.destinations}} </td>(dataSource)
<td mat-cell *matCellDef="let element"> {{element.destinations}} </td>(dataSource2018)
资源中调用了一个预配器,该错误与增加资源计数时出现的错误相同。
我通过使用self对象(aws_instance
)来引用资源而不是使用count.index或element()来解决这个问题。