"include_recipe"与Vagrantfile"chef.add_recipe".有什么不同?

 PHPYeQ 发布于 2023-02-13 09:40

刚刚在我的流浪盒上运行了nginx :: source recipe,我的行为很不寻常.

当我从Vagrantfile中包含一个食谱(如下所示)时,一切都像魅力,

chef.add_recipe("project :: nginx")
chef.add_recipe("nginx :: source")

(project :: nginx配方非常简单.用它来覆盖nginx cookbook的默认属性)

但如果我在项目的最后包含一个食谱:: nginx(提到过),一切都会崩溃:

node.default['nginx']['server_names_hash_bucket_size'] = 128
include_recipe "nginx::source"

到目前为止,我不知道这两个调用之间的行为有什么不同.这里有人知道有什么区别吗?

1 个回答
  • 被我耍到了!厨师11功能.与它的问题存在于厨师独奏:)

    要快速简历,区别在于:

    chef.add_recipe() - 加载整个cookbook上下文(所有文件,例如食谱,定义,属性......)

    include_recipe"" - 不加载不在扩展运行列表中的文件(属性,定义等).

    至少有4种方法可以解决问题(将文件放入运行列表中):

    include_attribute - 显式包含所需的属性文件.

    metadata.rb->依赖 - 如果您的食谱使用来自另一本食谱的食谱,将该食谱放入metadata.rb的依赖部分,并且将加载它的所有文件.

    chef.add_recipe() - 通过Vagrantfile加载配方.(这里仅提供参考)

    Berkshelf - 你也可以使用这本食谱经理来解决这个问题.这是关于这个确切问题和一些文档的Stackoverflow线程

    对于那些有兴趣进一步阅读的人,Chef 11为非配方文件引入了基于依赖性的菜谱加载.新的加载逻辑意味着将不再加载属于cookbook的文件,这些文件存在于cookbook_path中但不在扩展的run_list中或扩展的run_list中的cookbook的依赖项中.REF:Opscode打破更改文档,如果您需要我得到的错误的签名,这里是完全相同的,即使是相同的原因.

    2023-02-13 09:45 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有