Мой шеф-повар недавно выдает эту ошибку:
Chef Client failed. 22 resources updated in 90.306407696 seconds
[2014-12-19T19:47:24+00:00] ERROR: cookbook_file[/srv/mycookbook/static/a.png] (mycookbook::_deploy line 82) had an error: Chef::Exceptions::FileNotFound: Cookbook 'mycookbook' (0.4.5) does not contain a file at any of these locations:
files/ubuntu-12.04/static/a.png
files/ubuntu/static/a.png
files/default/static/a.png
This cookbook _does_ contain: ['a.css','b.html','c.html']
Это потому, что в основной кулинарной книге mycookbook
(которой у меня нет) есть такие строки:
node['myattributes']['theme']['static_files'].each do |file|
cookbook_file node['myattributes']['install_dir'] + "/static/" + file do
source "static/#{file}"
owner node['myattributes']['user']
group node['myattributes']['group']
cookbook node['myattributes']['theme']['source_cookbook']
end
end
но моя дочерняя кулинарная книга или поваренная книга-оболочка, которая использует mycookbook
, имеет эти строки с разными атрибутами и не удалась:
override['myattributes']['theme']['compile_files'] = ['a.html']
override['myattributes']['theme']['static_files'] = ['a.png']
И у меня эти файлы хранятся под моей кулинарной книгой-оболочкой files/default/static/
и files/default/etc/
Я уже знаю, в чем проблема. В моей кулинарной книге-оболочке нет некоторых файлов, ожидаемых mycookbook
, но зачем мне? Эти атрибуты в любом случае должны быть переопределены.
Мой вопрос: есть ли лучший способ обработки файлов, проверенных в files/default
, что определения рецептов определены в родительской поваренной книге, а поваренная книга-оболочка просто определяет другой набор атрибутов для разных файлов?