深入了解重量级资源和提供者
1. 重量级资源和提供者概述
在之前,我们了解了轻量级资源和提供者(LWRPs),它们借助 DSL 抽象掉了与 Chef 资源和提供者类交互的许多复杂性,为创建自定义资源和提供者提供了便捷灵活的方式。而现在,我们将聚焦于重量级资源和提供者(HWRPs)。HWRPs 以原生 Ruby 编写,虽编写起来比 LWRPs 更耗时、复杂,但能充分发挥 Chef 资源和提供者类的强大功能。
1.1 编写 HWRPs 的原因
编写 HWRPs 主要有以下两个常见场景:
- 扩展内置资源 :当需要为 Chef 的内置资源添加额外的提供者时,HWRPs 是更好的选择。例如,若要为 Chef 的 package 资源添加对新包管理系统的支持,使用 LWRP DSL 无法将自定义提供者关联到 package 资源,而使用原生 Ruby 编写的重量级提供者,只需继承特定的超类即可轻松实现。
- 编写原生提供者 :当提供者使用原生代码而非食谱资源块时,HWRPs 能避免代码的混乱。使用 LWRP DSL 结合原生代码编写提供者时,LWRP DSL 定义的方法和块、Chef::Provider 超类定义的方法和块以及我们自己添加的原生代码之间的交互可能会让人困惑。而使用纯原生 Ruby 编写的 HWRP 提供者,类结构更清晰,能消除潜在的混淆。
1.2 HWRPs 在食谱中的位置
LWRPs 的资源和提供者分别位于食谱的 resources 和
深入理解Chef重量级资源与提供者
超级会员免费看
订阅专栏 解锁全文
2万+

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



