【问题标题】:chef: understanding Chef::resource provides?厨师:了解厨师::资源提供?
【发布时间】:2017-02-16 22:20:03
【问题描述】:

我正在https://github.com/chef-cookbooks/mysql/blob/master/libraries/resource_mysql_client.rb学习关于mysql的厨师食谱。

class Chef
  class Resource
    class MysqlClient < Chef::Resource::LWRPBase
      provides :mysql_client

但是,我不明白provides :mysql_client 的含义。有人可以帮我找出代码吗?例如,目的是什么?如果没有线,可以吗?

谢谢

【问题讨论】:

    标签: mysql ruby chef-infra cookbook


    【解决方案1】:

    a great blog post 谈论 Chef Provider 解决方案。我强烈建议您先阅读。从历史上看,Chef 有许多不同的方法来确定应该为特定资源加载哪个提供程序 - 使用 a map of resource to provider,使用 a class name matching algorithm,以及最近,如您所指出的,使用 provides:

    provides 用于signal that the class provides a particular DSL object。该方法中的 cmets 尤其具有指导意义:

    资源具有基于其资源名称的自动 DSL, 相当于provides :resource_name(提供所有资源 操作系统)。如果您使用给定的资源名称声明 provides,它 替换提供的(这样你就可以只提供你的资源 DSL 在某些操作系统上)。

    如果您在单个资源类和单个提供程序类上使用提供,Chef (Chef 12.5.x) 每次都会将该资源映射到该提供程序。如果您省略 provides,您将依赖上面该博客文章中提到的 Chef 的其他匹配机制之一。几乎所有其他方法都已弃用或即将弃用。

    我也推荐the Q&A from this blog post。它讨论了较旧的方法、弃用方法,并涵盖了资源提供者解析的其他一些细微差别。

    【讨论】:

    • 谢谢。真的很有帮助。
    • 链接中断
    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多