厨师:资源与食谱

时间:2016-10-20 16:38:16

标签: chef chef-recipe

食谱和资源有什么区别?

如何将资源调入配方?我可以看到如何包含配方但不了解配方如何使用资源。

2 个答案:

答案 0 :(得分:1)

Chef配方只是一系列资源(有时还有其他类似的变量定义),它们的行为按照定义顺序执行。

  

主要是使用模式(资源名称,属性 - 值对和操作)定义的资源集合(c)docs

这是创建具有指定内容的文件的示例资源。 Chef resources doc提供了可以用这些方法完成的示例。

file '/var/www/public_html/index.php' do
  content '<html>This is a placeholder for the home page.</html>'
  mode '0755'
  owner 'admin'
  group 'admin'
  action :create
end

答案 1 :(得分:1)

Ivan对于作为资源集合(以及任意ruby代码)的食谱是100%正确的,所以这里有关于资源如何工作以及如何使用它们的更多信息。

使用资源

  1. 参考metadata.rb
  2. 中包含的食谱

    depends 'hostsfile', '2.4.5'

    这将使该食谱中的所有资源都在您的食谱中可用

    1. 按名称间隔名称调用资源。
    2. 这是由厨师根据食谱名称和资源名称创建的。如果您不遵循蛇案的最佳实践,那么命名约定会遵循一些规则,这会使您感到困惑。

      • 资源和食谱都将全部小写
      • 所有连字符都将成为下划线(&#39; - &#39;&gt;&gt;&gt;&#39; _&#39;)
      • 默认名称为cookbook_resource

      因此,资源COOLEST-COOKBOOK的食谱rAd_ReSoUrCe将变为coolest_cookbook_rad_resource 'resource name'

      资源类型

      有三种常用的资源类型。从最少使用到最常用的顺序是:

      1. 重量级资源提供程序(HWRP)
      2. 轻量级资源提供程序(LWRP)
      3. 自定义资源
      4. HWRP允许对名称间距进行大量控制,但相对而言需要大量工作。

        LWRP是HWRP的绝佳替代品,但仍然有与之相关的锅炉铭牌代码。它们还要求您维护两个单独的文件,即提供程序和资源。资源声明与LWRP关联的属性,并且Provider提供资源在调用时所执行操作的逻辑。

        自定义资源允许您维护具有属性(与属性类似)和逻辑的单个文件。它还消除了与LWRP相关的几乎所有锅炉板代码。您必须使用Chef-client 12.4+才能使用自定义资源。

        了解资源

        真正理解资源查看源代码的唯一方法,因为资源的I / O确实是一个黑盒子。理解自定义资源可以做什么的一个很好的资源是https://docs.chef.io/custom_resources.html,你可以很容易地通过搜索引擎找到HWRP和LWRP解释。