如何访问帮助程序库

时间:2017-03-10 10:45:21

标签: chef chef-recipe lwrp

  1. 如何在库函数中访问resource_name属性
  2. 如何为现有社区食谱资源添加自定义操作属性
  3. 简介: Sensu cookbook的资源名为" sensu_check"有两个动作:创建或:删除。在食谱中写入大约200个检查。不同的检查仅适用于相应类型的服务器,即Tomcat,Sonar,Solr等。

    当配方运行时,在每个不需要的服务器上配置所有200个检查,因为只应在该类型的服务器上配置适用的检查。

    我创建了一个Hash of checks,其中提到了check_name,适用的服务器类型。

    编写一个库函数,根据其主机名确定current_check是否适用于当前服务器。

    问题:

    1)如何检索当前资源名称属性,即" tomcat_service_check"在图书馆功能。资源片段 -

    sensu_ckeck "tomcat_service_check" do
      command "sh start.sh"
      subscriber "tomcat"
      ...
      action :create or :delete  (we want to add :ignore with custom provider)
    end
    

    2)有没有办法添加另一个自定义动作属性:忽略" sensu_check"资源(社区食谱)与自定义提供商。     如果是,如何告诉厨师在运行时由于忽略条件而未执行当前资源。

1 个答案:

答案 0 :(得分:0)

您无法直接访问该数据,但您也不需要。只需在你的食谱中循环:

all_of_the_checks.each do |check_name|
  if check_applies_to_host?(node, check_name)
    sensu_check check_name do
      # Whatever else
    end
  end
end

对于第2部分,不能直接向现有自定义资源添加新操作。如果它使用非DSL声明方法,你可以将它子类化,但通常你不能。