在 LWRP 中使用 include_recipe 而不是 run_context.include_recipe

using include_recipe in LWRP and not run_context.include_recipe

我开始在我的 LWRP 中使用 include_recipe,它很管用——我不知道 run_context.include_recipe。我不确定我是否理解其中的区别,并且在互联网上阅读了一些东西听起来很正常 include_recipe 甚至不应该在 LWRP 中工作?

它似乎工作正常,但只是想知道我是否在这里做错了什么。我不希望每次调用资源时 include_recipe 到 运行 食谱我只是像常规包含一样使用它 - 依赖于某些食谱的资源首先设置东西只是包括它们。

我假设包含的食谱 运行 仅在第一次调用资源时,如果资源被多次调用,included_recipe 不会重新 运行。

LWRP 中 include_recipe 的问题在于,包含的配方中的资源最终会出现在供应商操作的执行上下文中,这基本上就像一个子上下文。不幸的是,很难找到一个好的解决方案。至于你的最后一个问题,我的 Poise 库中确实有一个解决方案,但它非常复杂,而且所有 "simple" 解决方案都有其自身的缺点。如果您还没有读过它,请查看 https://coderanger.net/two-pass/,它介绍了 DSL 工作原理的内部结构。添加 post 提供者的内部基本上是它自己的编译和收敛周期版本以及它自己的资源集合。您必须想象执行顺序是如何工作的,并弄清楚哪些资源进入哪些集合以及聚合指针在哪里(基本上就像指令指针和子例程在 "normal code" 中工作)。