Terraform 如何确定何时下载模块?
How does terraform determine when to download modules?
我想使用terraform的EKS模块
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "17.22.0"
...
}
这工作正常。
我想要实现的是,如果模块已存在于本地,terraform 不会下载该模块。我正在使用 terraform 变量 TF_DATA_DIR
来设置 terraform 的数据目录。
export TF_DATA_DIR="${SOME_DIR}/.terraform"
当我 运行 宁 terraform init
时,EKS 模块仍然从注册表中提取,即使该模块存在于本地。当我 运行 terraform init
第二次时,这不会发生。
terraform init
terraform init
输出:
...
Initializing modules...
Downloading terraform-aws-modules/eks/aws 17.22.0 for eks.eks...
- eks.eks in .terraform/modules/eks.eks
- eks.eks.fargate in .terraform/modules/eks.eks/modules/fargate
- eks.eks.node_groups in .terraform/modules/eks.eks/modules/node_groups
...
Initializing modules...
...
文件总是加载到 "${SOME_DIR}/.terraform"
,所以我希望 TF_DATA_DIR
能按预期工作。
如何防止 terraform 下载已经存在的模块?我不想使用本地路径,我想使用缓存机制。
我使用的是 Terraform 版本 0.14.7
找到解决方案:
由于我使用了 terraform 变量 TF_DATA_DIR
,每次 terraform init
执行时的值都不同,因此 .terraform/modules/modules.json
中的内容不同,因此已重新下载。
我想使用terraform的EKS模块
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "17.22.0"
...
}
这工作正常。
我想要实现的是,如果模块已存在于本地,terraform 不会下载该模块。我正在使用 terraform 变量 TF_DATA_DIR
来设置 terraform 的数据目录。
export TF_DATA_DIR="${SOME_DIR}/.terraform"
当我 运行 宁 terraform init
时,EKS 模块仍然从注册表中提取,即使该模块存在于本地。当我 运行 terraform init
第二次时,这不会发生。
terraform init
terraform init
输出:
...
Initializing modules...
Downloading terraform-aws-modules/eks/aws 17.22.0 for eks.eks...
- eks.eks in .terraform/modules/eks.eks
- eks.eks.fargate in .terraform/modules/eks.eks/modules/fargate
- eks.eks.node_groups in .terraform/modules/eks.eks/modules/node_groups
...
Initializing modules...
...
文件总是加载到 "${SOME_DIR}/.terraform"
,所以我希望 TF_DATA_DIR
能按预期工作。
如何防止 terraform 下载已经存在的模块?我不想使用本地路径,我想使用缓存机制。
我使用的是 Terraform 版本 0.14.7
找到解决方案:
由于我使用了 terraform 变量 TF_DATA_DIR
,每次 terraform init
执行时的值都不同,因此 .terraform/modules/modules.json
中的内容不同,因此已重新下载。