You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:Terraform中SSH超时后如何继续执行销毁实例操作

解决Terraform SSH连接失败后终止流程的问题

要实现SSH连接超时/失败后仍继续执行销毁操作,核心是给对应的provisioner添加on_failure = "continue"参数,让Terraform忽略该步骤的失败,继续推进后续流程。

具体配置示例

把你的连接配置放到销毁阶段执行的provisioner中,并添加关键的on_failure参数:

resource "your_cloud_instance" "target" {
  # 这里填你的云实例资源配置,比如阿里云ecs_instance、AWS aws_instance等

  # 销毁实例前执行的远程操作
  provisioner "remote-exec" {
    when        = "destroy"  # 指定仅在销毁阶段执行此provisioner
    on_failure  = "continue" # 关键:即使SSH连接或命令执行失败,仍继续流程

    connection {
      type     = "ssh"
      user     = "root"
      password = var.root_password
      host     = var.host
      timeout  = "10s"
    }

    inline = [
      # 这里填你需要在实例上执行的销毁前命令,比如清理文件、停止服务等
      "systemctl stop some-service",
      "rm -rf /tmp/data"
    ]
  }
}

关键说明

  • on_failure = "continue":这个参数会让Terraform在该provisioner执行失败(包括SSH连接超时、认证失败、命令执行报错等)时,不终止整个销毁流程,继续执行实例的销毁操作。
  • when = "destroy":确保这个provisioner只在terraform destroy时触发,不会影响创建/更新阶段的流程。
  • 原有的timeout参数仅控制SSH连接的超时时间,本身不会改变失败后的流程行为,必须配合on_failure才能达到你要的效果。

内容的提问来源于stack exchange,提问作者benjamin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:05:41