Terragrunt无法识别项目新增output 仍可读取已删除的旧输出变量
这是Terragrunt的依赖输出缓存机制导致的问题。
Terragrunt为了提升执行效率,会将所有依赖模块的outputs结果缓存到本地.terragrunt-cache目录中,同时依赖模块的outputs只有在对应模块执行过apply写入state后才会正式生效。你遇到的两个现象的原因分别是:
- 新增output无法识别:你只修改了analytics_app模块的outputs源码,没有重新apply该模块,新的output字段没有写入到Terraform state中,同时本地缓存还是旧的output结构,所以读取不到新字段。
- 已删除的旧output仍可读取:旧的缓存和state中仍然保留了之前apply生成的
service_name值,只要没有重新apply该模块删除这个output、也没有清理缓存,Terragrunt就可以读到旧字段的值。
解决步骤如下:
- 首先进入
analytics_app模块对应的terragrunt工作目录,执行terragrunt apply,将新增的app_service_name、sidecar_service_name两个output写入到Terraform state - 回到你当前编写的auto_scaling模块的terragrunt目录,执行
terragrunt cache delete清除本地缓存,也可以直接执行terragrunt plan --terragrunt-update-outputs强制拉取所有依赖的最新output - 再次执行plan/apply操作即可正常识别新增的output字段
内容的提问来源于stack exchange,提问作者aphenine
相关产品推荐
相关产品推荐

