Terraform local-exec

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。
本文缩写(英文全称与中文含义)
缩写 英文全称/名称 中文含义
CI Continuous Integration 持续集成

用途#

在运行 Terraform 的机器上执行命令。CI 中的“本地”指 runner,远程执行模式下指远程 worker。

示例#

以下配置需要 Terraform 1.4+ 和 Bash。保存为 main.tf。

terraform {
  required_version = ">= 1.4.0"
}

variable "release_version" {
  type    = string
  default = "v1"
}

resource "terraform_data" "release" {
  triggers_replace = [var.release_version]

  provisioner "local-exec" {
    working_dir = path.module
    interpreter = ["bash", "-c"]
    command     = "printf 'Release: %s\n' \"$RELEASE_VERSION\""

    environment = {
      RELEASE_VERSION = var.release_version
    }
  }
}
terraform init
terraform plan
terraform apply

# 修改版本,替换 terraform_data 并重新执行命令。
terraform apply -var='release_version=v2'

首次创建时打印版本;输入不变时再次 apply 不执行命令。实际使用时可将 command 改为脚本调用;需要跟踪脚本变更时,将 filesha256("${path.module}/scripts/release.sh") 加入 triggers_replace,文件须提前存在。

注意事项#

  • 执行端必须具备命令依赖、认证信息和网络权限,working_dir 指向的目录必须存在。
  • 参数通过 environment 传递并在 shell 中加引号,避免将不可信输入直接插入 command。
  • 引用上游资源属性可建立依赖;仅执行顺序有依赖时使用 depends_on。资源创建完成不代表应用已就绪。
  • 保留默认 on_failure = fail;continue 会忽略错误,可能留下未完成的操作。
  • 生成需要由 Terraform 管理的文件时,优先使用 Local provider 的文件资源。

参考#

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭