chefでnotifiesリソースがないと怒られて戸惑う
rpmを複数転送してインストールするレシピを記述。インストールが動いたら起動して欲しいのでnotificationも書きました。
node['hoge']['rpms'].each do |rpms| cookbook_file "/tmp/#{rpms['rpm_file_name']}" do source rpms['rpm_file_name'] end package rpms['rpm_package_name'] do provider Chef::Provider::Package::Rpm guard_interpreter :bash source "/tmp/#{rpms['rpm_file_name']}" action :install end notifies :restart, 'service[hoge]' end
走らせるとこんなエラーが。
NoMethodError: No resource or method named `notifies' for `Chef::Recipe "default"'
なに?notifiesというリソースがないと?
戸惑うことしばし。上記のレシピだと、notifiesはnode[略]のループ部分にかかっている。
それはリソースがないと言われるのは当然。
packageリソース中に移動して解決。
node['hoge']['rpms'].each do |rpms| cookbook_file "/tmp/#{rpms['rpm_file_name']}" do source rpms['rpm_file_name'] end package rpms['rpm_package_name'] do provider Chef::Provider::Package::Rpm guard_interpreter :bash source "/tmp/#{rpms['rpm_file_name']}" action :install notifies :restart, 'service[hoge]' end end