0
  1. 如何访问库函数中的 resource_name 属性
  2. 如何为现有社区食谱资源添加自定义操作属性。

简介: Sensu 食谱有名为“sensu_check”的资源,具有两个操作:创建或:删除。在食谱中,大约有 200 个检查被写入。不同的检查仅适用于各自类型的服务器,即 Tomcat、Sonar、Solr 等。

当配方运行时,所有 200 项检查都配置在每台服务器上,这是不受欢迎的,因为应在该类型的服务器上配置适用的检查。

我创建了一个检查哈希,其中提到了 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”资源(社区食谱)中忽略。如果是,如何在运行时告诉厨师由于忽略条件而未执行当前资源。

4

1 回答 1

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 声明方法,您可能可以对其进行子类化,但通常不能。

于 2017-03-10T20:09:29.387 回答