【问题标题】:In what order is a Chef cookbook executed厨师食谱按什么顺序执行
【发布时间】:2019-07-15 23:52:08
【问题描述】:

我正在努力了解厨师,但我一生都找不到烹饪书籍的运行方式

如果我有文件结构

chef-repo
├── cookbooks
│   └── test
│       ├── attributes
│       │   ├── default.rb
│       │   └── test.rb
│       ├── files...
│       ├── metadata.rb
│       ├── recipes
│       │   ├── default.rb
│       │   └── test.rb
│       └── templates...
├── roles
│   └── starter.rb
└── Vagrantfile

属性是如何加载的以及按什么顺序加载?例如,它会加载所有属性(default.rb 和 test.rb),而 default.rb 总是首先加载

配方是如何运行的?例如,只有 default.rb 运行,而一切,或所有都按字母顺序运行。

我找到了http://docs.opscode.com/essentials_nodes_chef_run.html,但它并没有解释说明书的执行,只解释了节点级别的执行。任何资源或厨师文档的链接将不胜感激

干杯

【问题讨论】:

  • 厨师节点被引导到一个角色;角色(最终适用于每个环境)有一个由其他角色或配方组成的运行列表,由厨师使用您在角色本身中直接配置的内容以及传递依赖项来确定。
  • 谢谢,这正是我想要的
  • Chef 11 修复了属性文件随机加载的错误。见:tickets.opscode.com/browse/CHEF-2903

标签: ruby chef-infra chef-recipe cookbook


【解决方案1】:

配方按照它们在运行列表中出现的顺序运行。只有出现在运行列表中的配方才会被执行(加上任何使用include_recipe 包含在适当位置的配方。请注意,每个配方只会运行一次,即使它在运行列表中出现多次。

食谱中的属性文件按以下顺序加载:

  1. 依赖属性(即在metadata.rb 中用depends 声明的说明书)
  2. attributes/default.rb
  3. 所有其他 attributes 文件按字母顺序排列。

请注意,食谱中的所有属性文件都已加载,无论其名称如何。只有明确出现在已解析运行列表中的食谱的属性(即由角色加载或明确包含在运行列表中的食谱)或作为其食谱的依赖项的属性才会被加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-16
    • 2016-01-29
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多