Рассмотрите следующий код:
node["cloudwatch"]["alarms"].each do |metric,keys|
script_name = "/root/.cloudwatch/create_cloudwatch_alarm-#{metric}.sh"
template script_name do
source "cloudwatch/create_cloudwatch_EC2_alarm.sh.erb"
owner "root"
group "root"
mode "0655"
variables(
:metric => metric,
:description => keys["description"],
:statistic => keys["statistic"],
:comparison => keys["comparison"],
:threshold => keys["threshold"],
:evalperiods => keys["evalperiods"],
:period => keys["period"]
)
notifies :run, "bash[populate-create_alarms]", :immediately
end
bash "populate-create_alarms" do
user "root"
cwd "/root/.cloudwatch/"
code <<-EOH
echo #{script_name} >> ./create_alarms.sh
EOH
action :nothing
end
end
Это хорошо работает, но в журнале я несколько раз получаю соблюдающие предупреждения:
WARN: Cloning resource attributes for bash[populate-create_alarms] from prior resource (CHEF-3694)
WARN: Previous bash[populate-create_alarms]: /var/chef-solo/cookbooks/soapp/recipes/cloudwatch.rb:220:in `block in from_file'
WARN: Current bash[populate-create_alarms]: /var/chef-solo/cookbooks/soapp/recipes/cloudwatch.rb:220:in `block in from_file'
Я понимаю, почему я получаю предупреждения, но я не знаю, как избежать их. Очевидно "populate-create_alarms"
не должен быть в node["cloudwatch"]["alarms"].each
блок, но я не знаю, как передать #{script_name}
кому: "populate-create_alarms"
. Кто-либо показывает мне надлежащий способ сделать это?
Сделать имя ресурса bash
уникальным, например, следующим кодом:
bash "populate-create_alarms-#{metric}" do
..
end