首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chef-rewind:发布上游食谱的展开部分(ceph:mon)

chef-rewind:发布上游食谱的展开部分(ceph:mon)
EN

Stack Overflow用户
提问于 2015-07-25 02:02:30
回答 1查看 176关注 0票数 1

我正在尝试从我的包装器食谱食谱中的上游食谱(ceph)中解开一部分厨师食谱。简而言之,在某些必需的服务启动和运行之前,ceph用户池创建块在部署中执行得太早了。我将它移到一个新的包装器配方中,当服务运行时,它将在runlist下面执行。

为此,我尝试倒带ceph::mon上游配方中的以下代码块,然后在稍后的新包装器配方中执行它。

代码语言:javascript
复制
include_recipe 'workday::chef-client'
require 'chef/rewind'
include_recipe 'ceph::mon'

if node['ceph']['user_pools']

   # Create user-defined pools
   node['ceph']['user_pools'].each do |pool|
     ceph_pool pool['name'] do
       unwind "pool"
       pg_num pool['pg_num']
       create_options pool['create_options'] if pool['create_options']
     end
   end
 end

代码语言:javascript
复制
NoMethodError
-------------
undefined method `unwind' for Chef::Resource::CephPool

我尝试过各种展开语句:例如:

代码语言:javascript
复制
unwind "ceph_pool pool['name']"
unwind "pool['name']"

我以前在资源上使用过unwind/rewind (例如"execute x"),但我不确定如何正确地解开它。我已经阅读了chef-rewind提供的有限的文档,但我找不到解决方案。

EN

回答 1

Stack Overflow用户

发布于 2015-07-27 23:46:09

我已经解决了这个问题,并将分享我的解决方案,以防将来有人遇到类似的问题。正确的工作解决方案如下:

代码语言:javascript
复制
if node['ceph']['user_pools']

   # Create user-defined pools
   node['ceph']['user_pools'].each do |pool|
     # unwind user-defined pools
     unwind "ceph_pool[#{pool['name']}]"
   end
 end

它最初失败是因为我没有正确地插入展开属性:

也就是说,我错误地使用了展开"ceph_pool pool['name']"而不是正确的插值形式:unwind "ceph_pool[#{pool['name']}]"

我希望这个答案对任何其他可能遇到类似问题的人都有帮助。

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

https://stackoverflow.com/questions/31616985

复制
相关文章

相似问题

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