抱歉我的英文。
这是一个./recipes/default.rb
node['client-name'].each do |crontab|
item = data_bag_item('bag_name', "#{crontab}")
node.default[:client_timezone] = "#{item['timezone']}"
node.default[:client_name] = "#{crontab}"
template "crontab" do
path "/etc/cron.d/#{deploy}"
source "default.erb"
owner "root"
group "root"
mode "0644"
end
end
./attributes/default.rb如下所示:
default['version'] = "1.0.0"
default['client-name'] = ['company_1','company_2']
templates/crontab.erb
看起来像这样:
30 04 * * * java -Duser.timezone=<%= node[:timezone] %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= node[:client_name] %>/config/spring/job.xml
我的食谱将两个类似的crontab文件(company_1和company_2)放到/etc/cron.d/,但仅限于最后一个属性&#39;价值(公司_2)。你能告诉我,我哪里错了吗?
答案 0 :(得分:2)
您需要使用template
资源的变量部分明确指定client_name
和timezone
。配方可能如下所示:
node['client-name'].each do |client_name|
item = data_bag_item('bag_name', "#{client_name}")
template "crontab" do
path "/etc/cron.d/#{deploy}"
source "default.erb"
owner "root"
group "root"
mode "0644"
variables ({
:client_name => item['client_name'], # Don't you have this already?
:client_timezone => item['client_timezone']
})
end
end
您的crontab.erb
应如下所示:
30 04 * * * java -Duser.timezone=<%= @client_timezone %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= @client_name %>/config/spring/job.xml