在执行食谱时,我需要使用外部依赖项。我看到 2 个选择来解决它:
include_recipe
在我的食谱里面使用。在这种情况下,用户可能会因为安装了额外的软件包而感到意外(或者以不同于他预期的方式安装它们)。- 将其声明为依赖项,但将其留给用户代码进行安装。在这种情况下,用户将无法立即使用我的食谱,并将被迫
run_list
明确将其包含在内。
对此有何看法?对于像 Maven 这样的其他依赖管理系统,依赖有自己的(传递的)依赖是可以的,但是用户总是可以覆盖它的版本或排除它,这样他就可以控制所有的传递依赖。在厨师中不确定这一点。
这取决于具体情况。如果您在 README 中明确说明并且有充分的理由,那么您可以将其留给您的说明书的用户在包装说明书或角色中添加依赖项。
但是,对于大多数情况,我希望所有依赖项都在其中声明,
metadata.rb
并且先决条件由应用程序说明书安装。这使得在Berkshelf和Test-Kitchen的帮助下运行食谱变得更加容易。