2015-11-07 213 views

回答

3

a great blog post谈论厨师提供的分辨率。我强烈建议你先阅读。从历史上看,厨师有多种不同的方式来确定应该为特定资源加载哪个提供商 - 通过使用a map of resource to provider,使用a class name matching algorithm,以及最近使用的provides:

provides的意思是signal that the class provides a particular DSL object。从该法的意见特别有启发:

资源根据他们的RESOURCE_NAME自动DSL, 相当于provides :resource_name(提供所有 OS的资源)。如果您使用给定的resource_name声明provides,则其 将取代所提供的(因此您可以在某些OS上为您的资源DSL提供仅 )。

如果您在单个资源类和单个提供者类中使用提供,Chef(Chef 12.5.x)会每次将该资源映射到该提供者。如果你省略了provides,你将会依赖上面博客文章中提到的其他匹配机制之一。几乎所有其他方法都被弃用或正在被弃用。我想推荐the Q&A from this blog post。它讨论了较旧的方式,弃用,并涵盖了提供商对资源解决方案的一些细微差别。

+0

谢谢。它确实有帮助。 – chenxin

0

请参考这篇文章https://docs.chef.io/custom_resources.html

这是资源的新的和当前的模式,从厨师客户端12.5开始。在此版本之前,您在您的问题中提到了老式的资源。新模型没有提供者,但厨师有很大的向后兼容性,所以仍然可以使用旧式的资源。