如何在GitLab-CI.yml中读取Terraform locals.tf的变量
在GitLab CI中读取Terraform Local变量值
要在GitLab CI脚本中获取locals.tf里的lambda_edge_name值,推荐以下两种可靠方法:
方法一:通过Terraform Output暴露变量(推荐)
这种方式更规范,适合长期维护,还能让这个变量被其他Terraform操作复用。
- 在Terraform项目中新增
outputs.tf文件,将local变量定义为输出:
output "lambda_edge_name" { value = local.lambda_edge_name description = "Lambda@Edge函数名称" }
- 修改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
相关产品推荐
相关产品推荐

