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

如何在Dev目录初始化Terraform并调用Common目录配置脚本

Terraform 0.15+ 多目录配置初始化解决方案

问题核心

Terraform 0.15+ 废弃了旧版本中直接指定配置目录作为terraform init最后参数的用法,改用-chdir指定工作目录,导致原目录结构下锁文件生成在Common目录,无法在Dev目录完成初始化。

可行解决方案

方法1:将Common作为模块引入Dev目录(推荐)

这是Terraform官方推荐的配置复用方式,同时确保工作目录为Dev,锁文件和状态文件都存放在Dev目录:

  1. 在Dev目录下创建main.tf文件,内容如下:
# 引入Common目录的通用配置作为模块
module "common_infra" {
  source = "../common"

  # 传递Dev目录terraform.tfvars中的变量到Common模块
  # 需确保Common目录variables.tf中定义的变量名与Dev目录的变量名一致,或在这里显式赋值
  # 示例:如果Common定义了variable "region",则传递:
  # region = var.region
}
  1. 进入Dev目录,执行初始化命令:
terraform init -backend-config=backend-config.conf

执行后,.terraform目录、.terraform.lock.hcl锁文件都会生成在Dev目录,同时正确加载Common目录的通用配置。

方法2:使用符号链接映射Common配置到Dev目录(适合快速兼容)

如果不想调整配置结构,可通过符号链接将Common目录的TF文件映射到Dev目录(注意:Windows系统需管理员权限创建符号链接):

  1. 进入Dev目录,执行命令创建符号链接:
    • Linux/macOS:
    ln -s ../common/*.tf ./
    
    • Windows(PowerShell):
    Get-ChildItem ../common/*.tf | ForEach-Object { New-Item -ItemType SymbolicLink -Path $_.Name -Target $_.FullName }
    
  2. 执行初始化命令:
terraform init -backend-config=backend-config.conf

此方法会将Common的TF文件链接到Dev目录,Terraform会将Dev作为工作目录,锁文件自然生成在Dev目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:22:37