首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chef: cookbook_file/模板资源的嵌套LWRP问题

Chef: cookbook_file/模板资源的嵌套LWRP问题
EN

Stack Overflow用户
提问于 2014-08-23 01:26:30
回答 1查看 515关注 0票数 1

我写了几本LWRP食谱来安装和管理一些服务(Monit和Omnicheck)。它们提供的功能之一是为您提供一个文件,该文件将与模板或cookbook_file资源一起使用。

我发现,当我调用这两个资源中的任何一个时,我必须提供"cookbook new_resource.cookbook“,以便让它在调用给定文件的食谱中查找,而不是在LWRP的食谱中查找。

这一切都运行得很好,直到调用被嵌套。在这种情况下,如果您使用Omnicheck LWRP设置一个新实例,并选择通过Monit运行它,它将通过Monit LWRP为您更新Monit。这对于作为LWRP的食谱一部分创建的默认Omnicheck作业来说工作得很好,但是当我尝试从另一个食谱创建一个新的Omnicheck作业时,Monit LWRP就卡住了,并抱怨找不到模板资源的文件。

问题是,有问题的模板文件在Omnicheck食谱中,但Monit LWRP中的new_resource.cookbook评估为顶级食谱,而不是Omnicheck食谱。

所以路径看起来像这样:

application -> Omnicheck ->监控器

在这个例子中,在Monit LWRP中,应用程序的值是“new_resource.cookbook”而不是"Omnicheck“。

由于new_resource.cookbook似乎不是我需要/想要的,我如何确定LWRP调用者的食谱?

相关的错误如下所示:

代码语言:javascript
复制
[2014-08-21T00:46:15+00:00] ERROR: my_omnicheck_service[chef] (application::default line 30) had an error: Chef::Exceptions::FileNotFound: template[/some/path/omnicheck/etc/stage/chef.conf] (/var/chef/cache/cookbooks/my_omnicheck/providers/service.rb line 10) had an error: Chef::Exceptions::FileNotFound: Cookbook 'application' (0.1.5) does not contain a file at any of these locations:
    templates/centos-5.8/omnicheck.erb
    templates/centos/omnicheck.erb
    templates/default/omnicheck.erb
EN

回答 1

Stack Overflow用户

发布于 2014-08-23 04:52:35

我真的不喜欢这样,我希望有人知道更好的方法来解决这个问题,但我发现我可以询问new_resource.source_line来获得我想要的信息:

代码语言:javascript
复制
callingCookbook = new_resource.cookbook_name
if (new_resource.source_line =~ /\/cookbooks\/([^\/]+)\//) then
  callingCookbook = $1
end

然后,我可以在之前使用new_resource.cookbook_name的地方使用callingCookbook。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25452501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档