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

Terraform local_exec执行sed命令在Ubuntu环境下报错:文件不存在

问题解决:Terraform local_exec 在 Ubuntu 中找不到文件

核心原因

Terraform 的 local-exec provisioner 执行时的工作目录和你手动执行命令时的工作目录不一致。在 Ubuntu 环境下,Terraform 可能并非在你的项目根目录运行,导致相对路径 deployment/java-apps/deployment.yaml 无法定位到目标文件。

解决方案:使用 Terraform 内置路径变量生成绝对路径

直接使用 Terraform 提供的 path.module 变量,它会自动解析为当前 Terraform 配置文件所在目录的绝对路径,拼接后即可确保无论工作目录如何变化,都能精准找到目标文件。

修改后的配置代码:

provisioner "local-exec" {
  interpreter = ["bash", "-c"]
  command = <<EOT
    sed -i 's/\(image: \)[^.]*\(\.dkr\.\)/\1${data.aws_caller_identity.current.account_id}\2/' ${path.module}/deployment/java-apps/deployment.yaml
  EOT
}

额外排查步骤(可选)

如果想确认工作目录差异,可以临时在命令中添加目录检查命令,输出当前工作目录和文件列表:

provisioner "local-exec" {
  interpreter = ["bash", "-c"]
  command = <<EOT
    echo "Current working directory:"
    pwd
    echo "Files in current directory:"
    ls -la
    sed -i 's/\(image: \)[^.]*\(\.dkr\.\)/\1${data.aws_caller_identity.current.account_id}\2/' ${path.module}/deployment/java-apps/deployment.yaml
  EOT
}

执行后查看 Terraform 输出,就能明确看到执行时的工作目录,验证路径问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:18:03