我有一个 terraform 模块,它作为 zip 文件存储在 S3 上。此模块/zip 文件会定期重新构建和更新。
在我的主要 terraform 项目中,我使用 S3 源引用此模块:
module "my-module" {
source = "s3::https://s3.amazonaws.com/my_bucket/staged_builds/my_module.zip"
... More config ...
}
我遇到的问题是,在最初部署之后,很难让 terraform cloud 部署最新的 zip 文件。它似乎继续使用来自 S3 的 zip 文件的缓存版本。
部署是使用 github 操作完成的,我确实尝试将命令添加terraform get -update
到构建步骤以下载模块更新。
# Initialize a new or existing Terraform working directory by creating initial files, loading any remote state, downloading modules, etc.
- name: Terraform Init
run: terraform init
# Update the terraform modules to get the latest versions
- name: Update Terraform modules
run: terraform get -update
- name: Terraform Apply
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
run: terraform apply -auto-approve
此命令在本地运行良好,但是在使用 terraform cloud 时无法部署源自 S3 的最新模块。
我还扫描了 terraform 文档中有关如何taint
模块源的任何提及,但我没有找到并提及它,所以我假设模块源不能被污染。
我发现始终使用来自 S3 的最新 zip 文件的唯一方法是从主 terraform 项目中删除模块定义,部署它,重新添加模块并再次部署它。
这是一个手动且耗时的过程。
是否有更好的流程来确保 terraform 云始终使用(或重新下载)来自 S3 的最新 zip 文件用于模块?