Chef 定义:创建可重用参数化宏的实用指南
1. 定义的特性与适用场景
在 Chef 中,定义(definitions)是一种有用的工具,但也有其特性和局限性。定义本质上是对其他资源的包装,本身并不定义任何操作,因此不能被其他资源通知。例如,当我们使用如下通知示例时:
notifies :restart, resources(:service => "httpd")
这里实际发生的是名为 httpd 的服务资源被通知执行重启操作。而定义不能像这样被通知。
那么,什么时候创建定义合适,什么时候不合适呢?如果使用定义来定义难以用现有资源构建的行为,或者希望其他资源能够通知该行为,那么可能应该考虑实现轻量级或重量级资源和提供者(LWRPs 和 HWRPs)。但如果想要为常用的资源集合和配方代码创建一个可重用的包装器,定义可能是一个不错的选择。
2. 定义示例 1:骨架代码
下面通过一个具体的例子来深入了解定义的创建。假设 AwesomeInc 公司创建了一个定制的库存管理工具 “awesomeator”,并正在创建一个食谱来安装和配置该工具在全球各地所需的各种变体。在安装该工具之前,需要为其创建一个配置文件和目录结构来存储数据。为了使这些准备步骤可以作为一个单一资源来处理,我们将创建一个名为 awesomeator_prepare 的定义。
首先,创建定义所需的最小代码。所有定义都需要放在食谱的 /definitions 文件夹下。将
超级会员免费看
订阅专栏 解锁全文
1944

被折叠的 条评论
为什么被折叠?



