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

Terraform中remote-exec Provisioner超时问题:EC2实例命令执行成功后仍卡在创建状态

解决Terraform EC2实例创建卡在Still creating...的问题

我一眼就看出问题出在你remote-exec里的最后一条命令——sudo systemctl status apache2!这条命令默认会进入一个交互式的终端界面,一直停留在那里显示Apache的状态,不会自动退出。Terraform的remote-exec provisioner会等着所有命令执行完才会标记实例创建完成,所以它就一直卡在那儿了。

快速修复方案

把那条阻塞的命令换成非交互式的检查方式就行,比如用systemctl is-active来验证服务是否正常运行,它会返回退出码而且自动结束:

provisioner "remote-exec" {
  inline = [
    "sudo apt update -y",
    "sudo apt upgrade -y",
    "sudo apt install apache2 -y",
    "sudo systemctl is-active --quiet apache2 && echo 'Apache is up and running!' || echo 'Apache failed to start'"
  ]
}

如果你还是想看到Apache的状态输出,也可以给systemctl status加--no-pager参数让它输出后自动退出:

"sudo systemctl status apache2 --no-pager"

更可靠的初始化方式:用user_data替代remote-exec

其实用remote-exec依赖SSH连接,有时候会因为网络延迟或者SSH初始化慢导致问题。更推荐用EC2的user_data来做初始化,它是实例启动时由cloud-init自动执行的,不需要等待外部SSH连接,稳定性更高:

修改你的EC2实例资源配置,添加user_data并可以移除remote-exec(如果只是做初始化的话):

resource "aws_instance" "web_server_instance" {
  ami                         = data.aws_ami.ubuntu.id
  instance_type               = "t2.micro"
  vpc_security_group_ids      = [aws_security_group.web_server_security_group.id]
  key_name                    = aws_key_pair.web_server_public_key.key_name
  associate_public_ip_address = true

  # 添加user_data做初始化
  user_data = <<-EOF
              #!/bin/bash
              apt update -y
              apt upgrade -y
              apt install apache2 -y
              # 设置Apache开机自启
              systemctl enable apache2
              # 确保服务启动
              systemctl start apache2
              EOF

  connection {
    user        = "ubuntu"
    private_key = tls_private_key.web_server_key_pair_gen.private_key_pem
    host        = self.public_ip
  }

  provisioner "local-exec" {
    command = "chmod 600 ${local_file.web_server_private_key.filename}"
  }

  tags = {
    Name = "${local.application_name}_instance"
  }
}

这样修改后,实例启动时会自动完成Apache的安装和启动,Terraform也不会因为SSH命令阻塞而卡住了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:24:05