我应该在 运行 terraform init 之前删除 terraform lock 文件吗
Shall I remove terraform lock file before running terraform init
我正在写一篇关于 TF 提供程序迁移的小博客 post,其中包括以下命令:
terraform state replace-provider foo/bar foo2/bar2
# Updating TF configuration file
terraform init
我要告诉用户 运行
rm -rf .terraform/
rm .terraform.lock.hcl
在运行宁
之前
terraform init
terraform state replace-provider
命令需要一个已初始化的后端,因此除非 terraform init
首先是 运行,否则它不会工作。
.terraform
目录包含一些 Terraform 通常应该能够在需要时重现的临时工作目录状态,但删除它确实意味着任何没有确切版本约束的模块依赖项可能 select 再次安装不同版本时,command-line-specified 后端配置参数将丢失,并且 currently-selected 工作区将重置为默认值。
因此,我不建议随便建议用户删除该目录,除非您能够解释这样做的潜在后果。
.terraform.lock.hcl
是 the dependency lock file 并且应该被视为配置的一部分,即使 terraform init
自动更新它,因为它的目的是在 运行 之间记住select编辑了每个提供程序的哪个版本。该文件在创建后通常应受版本控制。
除了为每个提供程序保存哪个版本的记录 selected 之外,依赖项锁定文件还通过保存提供程序的校验和为 Terraform 提供程序提供“首次使用信任”方法,以便如果您采取任何步骤来验证您安装的提供程序是否值得信赖,那么您可以确定 Terraform 将不允许任何具有不同校验和的包,除非您特别选择使用 terraform init -upgrade
.
进行升级
在那种情况下,删除 .terraform.lock.hcl
会通过删除原始校验和的记录来破坏该机制,这意味着无法保证 terraform init
会安装与以前相同的软件包。
我正在写一篇关于 TF 提供程序迁移的小博客 post,其中包括以下命令:
terraform state replace-provider foo/bar foo2/bar2
# Updating TF configuration file
terraform init
我要告诉用户 运行
rm -rf .terraform/
rm .terraform.lock.hcl
在运行宁
之前terraform init
terraform state replace-provider
命令需要一个已初始化的后端,因此除非 terraform init
首先是 运行,否则它不会工作。
.terraform
目录包含一些 Terraform 通常应该能够在需要时重现的临时工作目录状态,但删除它确实意味着任何没有确切版本约束的模块依赖项可能 select 再次安装不同版本时,command-line-specified 后端配置参数将丢失,并且 currently-selected 工作区将重置为默认值。
因此,我不建议随便建议用户删除该目录,除非您能够解释这样做的潜在后果。
.terraform.lock.hcl
是 the dependency lock file 并且应该被视为配置的一部分,即使 terraform init
自动更新它,因为它的目的是在 运行 之间记住select编辑了每个提供程序的哪个版本。该文件在创建后通常应受版本控制。
除了为每个提供程序保存哪个版本的记录 selected 之外,依赖项锁定文件还通过保存提供程序的校验和为 Terraform 提供程序提供“首次使用信任”方法,以便如果您采取任何步骤来验证您安装的提供程序是否值得信赖,那么您可以确定 Terraform 将不允许任何具有不同校验和的包,除非您特别选择使用 terraform init -upgrade
.
在那种情况下,删除 .terraform.lock.hcl
会通过删除原始校验和的记录来破坏该机制,这意味着无法保证 terraform init
会安装与以前相同的软件包。