chef-rewind: выдать раскручивающуюся часть рецепта восходящего потока (ceph::mon)

Я пытаюсь раскрутить часть рецепта шеф-повара из вышестоящей поваренной книги (ceph) в своем рецепте поваренной книги-обертки. Вкратце, блок создания пользовательского пула ceph выполняется слишком рано в развертывании, до того, как будут запущены и запущены определенные требуемые службы. Я перемещаю его в новый рецепт оболочки, который будет выполняться дальше по списку выполнения, когда службы работают.

С этой целью я пытаюсь перемотать приведенный ниже блок из рецепта восходящего потока ceph::mon, а затем выполнить его позже в моем новом рецепте оболочки. Мой код в настоящее время выглядит следующим образом:

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

Вывод ошибки от шеф-клиента:

NoMethodError
-------------
undefined method `unwind' for Chef::Resource::CephPool

Я пробовал различные операторы раскрутки: например.

unwind "ceph_pool pool['name']"
unwind "pool['name']"

Раньше я использовал размотку/перемотку ресурсов (например, «выполнить x»), но я не уверен, как правильно раскрутить это. Я прочитал ограниченную документацию, доступную на сайте chef-rewind, но не могу найти решения для этого.


person mickm    schedule 24.07.2015    source источник


Ответы (1)


Я решил эту проблему и поделюсь своим решением, если кто-то столкнется с подобной проблемой в будущем. Правильное рабочее решение выглядит следующим образом:

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

Первоначально это не удалось, потому что я неправильно интерполировал атрибут раскрутки:

т. е. я неправильно использовал unwind "ceph_pool pool['name']" вместо правильно интерполированной формы: unwind "ceph_pool[#{pool['name']}]"

Я надеюсь, что этот ответ поможет всем, кто может столкнуться с подобной проблемой.

person mickm    schedule 27.07.2015