Terragrunt 缓存目录(.terragrunt-cache)完全指南:工作原理、磁盘占用分析与管理实战

发布时间:2026/11/15 14:07:30

Terragrunt 缓存目录(.terragrunt-cache)完全指南:工作原理、磁盘占用分析与管理实战 Terragrunt 缓存目录.terragrunt-cache完全指南工作原理、磁盘占用分析与管理实战【免费下载链接】terragruntTerragrunt is a flexible orchestration tool that allows Infrastructure as Code written in OpenTofu/Terraform to scale.项目地址: https://gitcode.com/GitHub_Trending/te/terragrunt本文聚焦 Terragrunt 的缓存目录机制path.terragrunt-cache/path是每次运行的工作目录本指南将深入讲解它为何“看起来很大、实际占用很小”介绍 Provider 符号链接与 CAS 硬链接两大共享机制并给出跨平台Linux/macOS/Windows的磁盘测量、清理与重定位的完整命令帮助你在大规模多单元项目中精确掌握缓存占用并安全释放磁盘空间。什么是 Terragrunt 缓存目录Terragrunt 使用一个缓存目录.terragrunt-cache作为每一次运行的working directory工作目录。其核心工作流程如下Terragrunt 将本次运行所操作的配置复制到.terragrunt-cache中在复制后的目录里执行你的 OpenTofu / Terraform 命令该目录同时存放命令下载的modules模块与providersProvider。从源码中可以确认这一默认行为内部标志定义download.go中明确写到默认下载目录为“working directory 下的.terragrunt-cache”Usage: The path to download OpenTofu/Terraform modules into. Default is .terragrunt-cache in the working directory.同时internal/util/file.go中定义了常量TerragruntCacheDir .terragrunt-cache并在多处使用例如运行配置解析时runcfg/types.go、CAS 本地存储实现internal/cas/local.go都会与这个目录名交互。为什么缓存目录“看起来”比实际占用大一个包含大量 units单元的项目看起来应当在缓存中保存许多份相同的 Provider 与模块副本。实际情况通常并非如此——因为决定磁盘占用的两大“大头”是共享的而不是重复的Provider 二进制通过符号链接共享Automatic Provider Cache Dir在使用 OpenTofu 1.10 及以上版本时默认开启与 Provider Cache Server 都会把 Provider 插件保存在项目目录之外的一个统一目录中。每个单元工作目录内的.terraform/providers目录中存放的是指向该目录的符号链接symlink。这意味着无论多少个 unit 需要同一个 Provider它在磁盘上只存储一次。模块源码从 CAS 硬链接而来Content Addressable Store内容寻址存储CAS 会对获取的内容做哈希然后将其**硬链接hard link**到工作目录中。因此相同的文件只占一次磁盘空间无论有多少 unit 在使用它们。在文件系统不支持硬链接的环境中Terragrunt 会回退为复制copy。从源码看CAS 的本地实现会在构建内容树时主动忽略.terragrunt-cache与.terraform这两个目录避免把运行态工作副本的哈希变化带入内容寻址计算internal/cas/local.go// .terraform holds OpenTofu/Terraform provider plugins, .terragrunt-cache // holds Terragrunts own working copies. Taking either in would tie the // content hash to state that changes on every init ... var ignoredSourceDirs []string{util.TerraformCacheDir, util.TerragruntCacheDir}对“单目录测量”的影响正因为硬链接/符号链接的存在逐目录测量会误导你。两个引用同一模块的 unit单独测量时可能各自报告相同的体积但合在一起测量时却几乎只多花“一份”的空间——因为硬链接文件在每次遍历时只被计数一次。# 一次性测量整棵树共享内容只计一次 du -sh . # 跟随符号链接查看如果每个 unit 各自保留一份副本时的开销 du -shL .正确测量 Terragrunt 实际占用的磁盘空间要查看 Terragrunt 在磁盘上总共占用多少应当去测量共享缓存而不是项目目录。共享缓存位于你的**用户缓存目录user cache directory**下平台位置Linux$XDG_CACHE_HOME/terragrunt或~/.cache/terragruntmacOS~/Library/Caches/terragruntWindows%LOCALAPPDATA%\terragrunt在 Linux 和 macOS 上du -sh ${XDG_CACHE_HOME:-$HOME/.cache}/terragrunt # Linux du -sh ~/Library/Caches/terragrunt # macOS在 Windows 上使用 PowerShell{0:N1} GB -f ((Get-ChildItem -Recurse -File $env:LOCALAPPDATA\terragrunt | Measure-Object -Property Length -Sum).Sum / 1GB)清理 Terragrunt 缓存缓存本质上是临时暂存空间scratch space。你可以随时安全地删除它Terragrunt 会在需要时自动重建。如果需要批量清理大量.terragrunt-cache目录例如在terragrunt run --all apply之后先列出当前目录下所有.terragrunt-cache文件夹find . -type d -name .terragrunt-cacheGet-ChildItem -Path . -Filter .terragrunt-cache -Recurse -Directory如果确认要删除上一步列出的所有目录可以递归删除find . -type d -name .terragrunt-cache -prune -exec rm -rf {} \;Get-ChildItem -Path . -Filter .terragrunt-cache -Recurse -Directory | Remove-Item -Recurse -Force注意上述删除命令具有破坏性请务必先执行“列出”命令确认结果无误后再操作。如果你希望把缓存目录放到别处可以考虑设置TG_DOWNLOAD_DIR环境变量。从源码看对应的完整标志名为--download-dir其环境变量形式为TG_DOWNLOAD_DIR并兼容旧的TERRAGRUNT_DOWNLOAD、TERRAGRUNT_DOWNLOAD_DIR环境变量internal/cli/flags/shared/download.goexport TG_DOWNLOAD_DIR/path/to/custom/cache terragrunt apply在运行时Terragrunt 还会把配置HCL中的download_dir设置合并进实际下载目录参见internal/runner/run/run.go为缓存目录的定制提供了更灵活的途径。磁盘空间不足时的排查与优化建议如果你是因为磁盘空间不足而清理缓存先确认 Provider 共享是否已生效OpenTofu 1.10 及以上Provider 共享默认开启每个 unit 的 Provider 都是指向共享目录的符号链接Terraform 或更早版本的 OpenTofuProvider 会被复制到每个 unit 中此时启用 Provider Cache Server 能回收最多的空间。补充背景Provider 共享的两条技术路线为了让文章上下文完整这里补充两条 Provider 共享机制的核心差异详情见 Provider Cache Server 与 Automatic Provider Cache Dir 文档Automatic Provider Cache DirOpenTofu ≥ 1.10 默认启用Terragrunt 自动为 OpenTofu 设置TF_PLUGIN_CACHE_DIR环境变量利用 OpenTofu 原生的 provider 缓存机制实现跨配置复用、减少带宽、并安全处理并发访问Provider Cache ServerTerragrunt 在本机启动一个 Provider 缓存服务器确保每个 Provider 在整个生命周期中只被下载和存储一次。在并发执行如terragrunt run --all时它避免了 OpenTofu/Terraform 原生provider-plugin-cache因多进程互相覆盖缓存而报Error: Failed to install provider的问题。以官方文档给出的量级为例terraform-provider-aws_6.50.0_darwin_arm64.zip压缩包约 180MB解压后约 830MB。若 50 个 unit 各自复制一份init阶段将消耗约 9GB 流量、40GB 磁盘启用共享缓存后仅需 180MB 流量、830MB 磁盘。重要提醒删除缓存不等于回收全部空间注意删除.terragrunt-cache并不会回收共享的 Provider 缓存和 CAS 存储——它们位于你的用户缓存目录user cache directory下即上文的 Linux/macOS/Windows 位置表。若想回收这些空间需要单独清理用户缓存目录中对应的terragrunt目录。总结.terragrunt-cache是 Terragrunt 每次运行的工作目录存放配置副本、下载的模块与 Provider其“大”通常是假象Provider 通过符号链接、模块通过 CAS 硬链接实现跨 unit 共享磁盘上实际只存一份测量真实占用应使用du -sh .整树一次遍历或直接测量用户缓存目录清理缓存安全且可随时重建重定位可通过TG_DOWNLOAD_DIR环境变量或 HCL 中的download_dir配置完成磁盘告急时优先确认 Provider 共享是否生效OpenTofu ≥ 1.10 默认开启并在必要时启用 Provider Cache Server。【免费下载链接】terragruntTerragrunt is a flexible orchestration tool that allows Infrastructure as Code written in OpenTofu/Terraform to scale.项目地址: https://gitcode.com/GitHub_Trending/te/terragrunt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/7 7:34:05

AI开发文档驱动:从接口定义到工程流交付的实战指南

开头今年我司内部逐渐停掉了“让算法工程师自己写完推理脚本再丢给后端”的合作方式,全面转向文档驱动的AI工程流交付。这个转变不是某个人拍脑袋决定的,而是被几个翻车项目硬生生逼出来的:一次是模型精度没问题、接口却对不上字段&#xff0…

2026/11/15 14:04:56

深圳电工证难考不?2026河南最新政策下怎么高效拿证

深圳电工证难考不?2026河南最新政策下怎么高效拿证 工地太忙根本没时间复习考试,这几乎是每个特种作业人员的真实写照。特别是像深圳这样的城市,项目工期紧、任务重,很多一线施工人员连抽时间准备考试都难。再加上2026河南最新政策对特种作业证的…

2026/11/15 14:04:56

怒江高压电工作业证官方回应实操考试心里没底怕挂科

怒江高压电工作业证官方回应实操考试心里没底怕挂科 实操考试心里没底怕挂科?这是很多准备报考怒江高压电工作业证的学员共同的担忧。尤其是在当前行业监管日趋严格、考试标准不断升级的背景下,考试难度和通过率成了大家最关心的问题。但官方回应已明确,只…

2026/11/15 14:04:56

海口市特种工公示怎么查?电子证书怎么用?打工人别再被坑了

海口市特种工公示怎么查?电子证书怎么用?打工人别再被坑了 你是不是正盯着招聘网站上的岗位,但因为 没有特种作业证 而被拒?别急,今天这篇干货, 直接告诉你海口市特种工公示怎么查,电子证书怎么用 ,省下你一笔冤枉钱。 在海南,尤其是海口市,…

2026/11/15 14:04:56

高压电工证安规28天在哪考 考完能转回老家吗

高压电工证安规28天在哪考 考完能转回老家吗 之前考的证在外省能不能转过来?这个问题几乎是每个想考高压电工证的兄弟心头最大的疙瘩。其实现在高压电工证在全国范围内都通用, 高压电工证安规28天…

2026/11/15 14:04:56

特种工专业架子工证书过期了怎么复审?真实经历告诉你

特种工专业架子工证书过期了怎么复审?真实经历告诉你 证书过期了不知道怎么复审延期?我身边好几个漯河房建工程的朋友都遇到过这个问题,今天就用真实经历告诉你,特种工专业架子工证书怎么续期,别再被机构忽悠了。 一、特种工专业架子工证到底能干啥?…

2026/11/15 13:59:54

从化特种作业操作证怎么考?全国通用证书帮你快人一步

从化特种作业操作证怎么考?全国通用证书帮你快人一步 你是不是正在找工作,却被“必须持证上岗”这句话拦住了去路?在工地、工厂、施工队里,特种作业操作证几乎是入场的“通行证”。尤其在从化地区,越来越多的劳务班组负责人开始意识到,…

2026/11/15 0:02:49

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/15 0:02:49

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/15 0:02:49

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/15 0:02:49

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/15 4:46:37

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/15 2:06:31

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑