缓存与多个 Inventory 来源
合并大型 Inventory 并提升速度
缓存与多个 Inventory 来源 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
查询会耗费时间
当您拥有数百台主机时,每次运行都访问云 API 会很慢。每次 play 开始时,都要再次付出查询的时间成本。⏱️
缓存结果
清单缓存会存储获取到的主机数据,让重复运行时可以复用这些数据,而不必每次都重新查询云环境。
启用缓存
在插件配置或 ansible.cfg 中将 cache 键设置为 true,即可启用缓存。
cache: true
cache_plugin: jsonfile选择缓存后端
cache_plugin 决定数据存储在哪里,例如将 jsonfile 存储在磁盘上,或使用 redis 在多台机器之间共享更快速的存储。
设置合理的超时时间
cache_timeout 以秒为单位,决定缓存数据在 Ansible 从数据源刷新之前可以保持多长时间有效。
cache_timeout: 3600过期缓存是个陷阱
较长的超时时间速度更快,但风险也更高。如果实例发生变化,您可能会定位到已经不存在的主机。请在速度和实例群的新鲜度之间取得平衡。
合并多个数据源
您很少只有一个数据源。将 -i 指向一个目录,Ansible 就会加载其中的每个清单文件。
ansible-playbook -i inventories/ site.yml数据源会合并
所有文件中的主机和组会合并为一个清单,因此 AWS、Azure 和静态文件可以在一次运行中共存。
顺序会影响变量
文件会按字母顺序加载。当两个数据源设置了同一个主机变量时,后加载的数据源会覆盖前者,因此命名顺序很重要。
混用静态与动态清单
静态文件可以固定指定一台特殊主机,而插件负责获取其余主机,让固定的锚点与弹性、自动发现的主机并存。
验证合并后的视图
请针对该目录运行 ansible-inventory,查看最终合并后的关系图,并确认每个数据源都按预期提供了内容。
ansible-inventory -i inventories/ --graph快速检查
请回忆如何合并清单数据源。
回顾
使用带有后端和超时时间的缓存来减少 API 调用,并将 -i 指向一个目录以合并多个清单数据源。💾
常见问题解答
「缓存与多个 Inventory 来源」课时是免费的吗?
是的 — 「缓存与多个 Inventory 来源」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「缓存与多个 Inventory 来源」这节课中我会学到什么?
合并大型 Inventory 并提升速度 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「缓存与多个 Inventory 来源」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 静态限制与 Inventory 插件模型
- aws_ec2 Inventory 插件
- constructed:按标签对主机分组
- 缓存与多个 Inventory 来源