ruby – 厨师图书馆或定义?

前端之家收集整理的这篇文章主要介绍了ruby – 厨师图书馆或定义?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。



对于厨师而言,我相对较新,我需要从现有食谱中创建图书馆或定义.

那里的食谱使用bash资源,ruby块资源(通知延迟定时的另一个ruby块资源),再次通知一个ruby块等的模板资源.

最好的办法是什么?图书馆或定义?

我已经看到,如果我使用定义,我将无法通知定义中的资源,这是否意味着我可以通知不同的定义文件中的资源?

我也读过,在图书馆你不能直接使用资源.如果是这样,如何在我的图书馆中使用资源?

解决方法

所以,这是“主要以意见为基础”,但我也会回答.这里有4个不同的选择:

>定义
> LWRP
> HWRP
>“图书馆”

一个定义只是围绕一个或多个资源进行一些参数化的包装.但是,定义不会添加到资源集合中.意思是你不能“通知”或触发事件定义.它们仅用于包装和命名食谱中发现的一系列可重复的步骤.

LWRP(轻量级资源和提供商)是一个厨师特定的DSL,在运行时实际上汇编成一个HWRP(重型资源和提供商). LWRP和HWRP都是Chef扩展.除了包装一系列可重复的任务之外,WRP还将在Chef中创建一个顶级资源(如模板或软件包),可用于您的食谱和其他食谱的配方.

与LWRP和HWRP之间的区别是Ruby. HWRP使用完整的Ruby类.如果您不是Ruby开发人员,那么他们可能有点吓人.尽管如此,您应该在写作和LWRP之前尝试一下. LWRP使用Chef专用DSL来创建资源.在一天结束时,他们编译(大致)与重磅对手相同的代码.我将链接一些参考文献.您可以访问执行中的Chef资源以及run_context.

最后,“图书馆”(注意到引号)经常被误解和滥用.他们是Ruby代码,被评估为Ruby,所以他们可以做任何事情. HWRP实际上是一种图书馆的形式.有时人们将图书馆用作“助手”.他们将使用best_ip_for或aggregate_some_data等方法创建一个帮助模块,然后将该库(“Ruby”)“混合”到其配方或资源中.其他时候,图书馆可以用来“砍”厨师本身. partial-search食谱是一个很好的例子.去年在ChefConf的Facebook talked about how they limited the number of attributes sent back to the server.图书馆真的是一个未定义的领土,因为它们是王国的钥匙.

所以,虽然我没有真正回答你的问题(因为它是基于意见的),我希望我给你足够的信息有关最好的方向前进.请记住,每个基础设施都是一个特殊的雪花,没有正确的答案;只有最好的答案.我建议与您的团队分享这些信息,并权衡每种方法的利弊.您还可以尝试厨师邮件列表,其中人们会给您很多意见.

资源:

> LWRPs
> HWRPs
> Libraries

猜你在找的Ruby相关文章