Почему Chef не находит мои файлы?

Я разрабатываю Ganglia рецепт в Chef. Это очень просто, я создаю четыре разных файла конфигурации, которые я уже пытался использовать как template, но для простоты я создаю эти файлы конфигурации.

Это мой рецепт:

return if tagged?('norun::ganglia')

case node[:platform]
  when "ubuntu", "debian"
    pkg = "ganglia-monitor"
  when "redhat", "centos", "fedora"
    pkg = "ganglia-gmond"
end

package "#{pkg}" do
    action :install
end

cookbook_file "/etc/ganglia/gmond.conf" do
    owner "root"
    group "root"
    mode "0644"
    source "gmond/" + node['base']['dc'] + "/node/gmond.conf" 
end

# Adding ganglia-gmond as service
service "gmond" do
  supports :status => true,
           :restart => true
  action [ :enable, :start ]
end

А вот как устроен мой рецепт:

cookbooks/ganglia/
cookbooks/ganglia/files/default/gmond/* // I have others sub-folders here too
cookbooks/ganglia/files/default/gmond/diveo/node/gmond.conf
cookbooks/ganglia/recipes/default.rb

Но когда я попытался запустить свой рецепт, он выдает следующую ошибку:

[2013-05-14T14:23:38+00:00] FATAL: Chef::Exceptions::FileNotFound: cookbook_file[/etc/ganglia/gmond.conf] (ganglia::default line 25) had an error: Chef::Exceptions::FileNotFound: Cookbook 'ganglia' (0.1.0) does not contain a file at any of these locations:
  files/centos-5.7/gmond/diveo/node/gmond.conf
  files/centos/gmond/diveo/node/gmond.conf
  files/default/gmond/diveo/node/gmond.conf

This cookbook _does_ contain: ['diveo/monitor/gmond.conf','diveo/node/gmond.conf','awsvir/monitor/gmond.conf','awsvir/node/gmond.conf','awssp/monitor/gmond.conf','awssp/node/gmond.conf','alog/monitor/gmond.conf','alog/node/gmond.conf']

По сути, это говорит о том, что у меня нет файла, но он есть по правильному пути, верно?


person Valter Silva    schedule 14.05.2013    source источник


Ответы (1)


Если node['base']['dc'] — это название платформы, то оператор cookbook_file должен выглядеть так:

cookbook_file "/etc/ganglia/gmond.conf" do
    owner "root"
    group "root"
    mode "0644"
    source "gmond.conf"
end

и структура ваших файлов conf должна быть такой

cookbooks/ganglia/
cookbooks/ganglia/files/default/gmond.conf
cookbooks/ganglia/files/centos-5.7/gmond.conf
...

И небольшой совет - используйте template вместо cookbook_file. Однажды вы все равно захотите добавить некоторые параметры в свой gmane.conf.

Кроме того, вот страница документа cookbook_file с сайта opscode.com -

person ДМИТРИЙ МАЛИКОВ    schedule 14.05.2013
comment
Спасибо Дмитрий! Об использовании шаблона я напишу об этом пост. - person Valter Silva; 14.05.2013
comment
Пост создал Дмитрий. stackoverflow.com/questions/16550591/ - person Valter Silva; 14.05.2013