【发布时间】:2021-11-04 19:26:53
【问题描述】:
您如何防止 terraform 升级其提供程序?
我已经构建了一个安装了 terraform 1.0.5 和特定版本的 aws 提供程序的 docker 映像:
# terraform -version
Terraform v1.0.5
on linux_amd64
+ provider registry.terraform.io/hashicorp/aws v3.55.0
我用这个简单的 docker 文件构建了这个 terraform docker 镜像:
FROM hashicorp/terraform:1.0.5 as terraform-provider
COPY provider.tf .
RUN terraform init
RUN mv .terraform/providers/registry.terraform.io/hashicorp/aws/3.55.0/linux_amd64/* /bin/
docker build 所需的 provider.tf 在这里:
terraform {
required_providers {
aws = {
version = "3.55.0"
source = "hashicorp/aws"
}
}
}
当我针对本地 terraform 代码运行此 docker 映像时,terraform init 命令坚持将 aws 提供程序升级到最新版本。
这是我的运行方式:
TERRAFORM_BASE_IMAGE 是我刚刚通过 docker build . 构建的 terraform 图像
我在$CURRENT_DIR/terraform/ 文件夹中有一个 main.tf,其中仅包含:
terraform {
backend "s3" {}
}
provider "aws" {
default_tags {
tags = {
Owner = "foo@example.com"
Description = "Demo"
}
}
}
当我运行命令时:
docker run -v $CURRENT_DIR:$CURRENT_DIR --workdir $CURRENT_DIR/terraform \
${TERRAFORM_BASE_IMAGE} \
init -get=false \
-reconfigure \
-backend-config="bucket=XXX-tf-remote-state" \
-backend-config="key=${ENVIRONMENT}/${PROJECT_NAME}" \
-backend-config="region=us-west-2" \
-backend=true
我在输出中看到:
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v3.57.0...
- Installed hashicorp/aws v3.57.0 (signed by HashiCorp)
我根本不希望 terraform 升级任何提供程序。 docker 镜像已经有 3.55.0 版本的 aws 提供程序。
如何防止terraform init 升级任何提供程序?
【问题讨论】: