0

我有一个 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 文件用于模块?

4

0 回答 0