我有一个我正在研究的 AWS ou/account/infra 部署自动化管道,它使用 terragrunt、terraform 和 terraform 云将账户部署到 AWS 组织。我local
在 TF Cloud 中使用执行,所以此时我在我的机器上本地运行它,并且只有状态存储在 TFC(与 S3 或 GCS 相对)中。Terragrunt 与这种状态存储技术兼容,但我发现如果我apply
的资源(工作得很好)然后清理.terragrunt-cache
( find . -type d -name ".terragrunt-cache" -prune -exec rm -rf {} \;
) 然后plan
或者apply
之前创建的资源,我会失去与远程状态的同步,它想要重新创建所有内容. 当我重新计划时,backend.tf
文件由 Terragrunt重新生成.terragrunt-cache
,我想知道提供者是否正在获取一个新 ID,该 ID 与另一个状态的先前提供者不同步。我要尝试的一种技巧是使用别名。根据 terragrunt 文档,这应该不是问题,因为状态会持续存在并且缓存可能会丢失和重新生成。
关于我的问题可能是什么的任何想法?我是 Terragrunt 的新手,现在正在做一些初步调查。
我的设计基于infrastructure-live
示例(以及自述文件中链接的相应模块)。Terragrunt 在这里共享它:https ://github.com/gruntwork-io/terragrunt-infrastructure-live-example
我terragrunt plan-all -refresh=true
从这个目录结构运行:
teamname
├── Makefile
├── base
│ └── terragrunt.hcl
├── deploy.hcl
├── dev
│ ├── account
│ │ └── terragrunt.hcl
│ ├── env.hcl
│ ├── iam
│ │ └── terragrunt.hcl
│ ├── regions
│ │ ├── us-east-1
│ │ │ ├── region.hcl
│ │ │ └── terragrunt.hcl
│ │ └── us-west-2
│ │ ├── region.hcl
│ │ └── terragrunt.hcl
│ └── terragrunt.hcl
└── terragrunt.hcl
account/
我为帐户 (in ) 和根帐户 () 中的基础设施生成一个状态base/
。所有 Terraform 模块都在一个单独的存储库中。