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

如何在GitLab-CI.yml中读取Terraform locals.tf的变量

在GitLab CI中读取Terraform Local变量值

要在GitLab CI脚本中获取locals.tf里的lambda_edge_name值,推荐以下两种可靠方法:

方法一:通过Terraform Output暴露变量(推荐)

这种方式更规范,适合长期维护,还能让这个变量被其他Terraform操作复用。

  1. 在Terraform项目中新增outputs.tf文件,将local变量定义为输出:
output "lambda_edge_name" {
  value       = local.lambda_edge_name
  description = "Lambda@Edge函数名称"
}
  1. 修改GitLab CI配置,初始化Terraform并读取输出值:
lambda-deletion:
  stage: lambda-deletion
  image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
  before_script:
    # 若镜像未预装Terraform,执行以下命令安装(适配Debian/Ubuntu系镜像)
    - apt-get update && apt-get install -y terraform
  script:
    # 初始化Terraform,加载变量与配置
    - terraform init
    # 读取输出值,-raw参数用于去除字符串周围的引号
    - lambda_name=$(terraform output -raw lambda_edge_name)
    - echo $lambda_name

方法二:直接用Terraform Console求值(临时方案)

如果不想修改Terraform配置文件,可以用terraform console直接计算local变量的值:

lambda-deletion:
  stage: lambda-deletion
  image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
  before_script:
    - apt-get update && apt-get install -y terraform
  script:
    - terraform init
    # -raw参数确保输出纯文本(Terraform 0.14+支持)
    - lambda_name=$(terraform console -raw local.lambda_edge_name)
    - echo $lambda_name

注意事项

  • 确保Terraform版本≥0.14(-raw参数的最低要求),若版本过低,可替换为terraform console local.lambda_edge_name | tr -d '"'来去除引号。
  • 如果var.resource_name_pattern依赖外部变量(如环境变量、tfvars文件),需在GitLab CI的variables块中传入对应值,保证计算结果正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:16:28