【发布时间】:2015-02-19 23:31:03
【问题描述】:
我是 Chef 的新手。我了解到 Chef 为资源提供了一个声明性接口。比方说:
我有一个简单的 recipe.rb 文件,后面有一行:
package 'foo'
这一行足以让 Chef 知道如何在运行配方的任何环境中安装包 foo。
所以我跑了:
chef-apply recipe.rb
我的问题是..
厨师在内部做什么以在package 资源的上下文中将“声明性”配方转换为“程序性”配方? (即,将声明式配方命令转换为一系列操作以获取和安装包需要哪些步骤)
附注:
关于 Chef 如何解决这个问题的细节很有趣,因为不同操作系统包管理器的包名称不必相同。 apt 索引中作为包 foo 存在的内容可能存在于 yum 索引中作为包 bar 或可能根本不存在。而且 Chef 不会强制要求将食谱绑定到特定的操作系统或包管理器。所以我很好奇在使用 chef-apply 时 Chef 如何处理将此类声明性语句转换为 apt-get、yum 或 brew 等命令。
【问题讨论】: