Ruby 厨师食谱的问题

Ruby 厨师食谱的问题,ruby,arrays,attributes,chef-infra,Ruby,Arrays,Attributes,Chef Infra,对不起,我的英语不好 这是一个./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 "c

对不起,我的英语不好

这是一个./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']
30 04 * * * java -Duser.timezone=<%= node[:timezone] %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= node[:client_name] %>/config/spring/job.xml
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
30 04 * * * java -Duser.timezone=<%= @client_timezone %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= @client_name %>/config/spring/job.xml
模板/crontab.erb
如下所示:

default['version'] = "1.0.0"
default['client-name'] = ['company_1','company_2']
30 04 * * * java -Duser.timezone=<%= node[:timezone] %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= node[:client_name] %>/config/spring/job.xml
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
30 04 * * * java -Duser.timezone=<%= @client_timezone %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= @client_name %>/config/spring/job.xml

30 04***java-Duser.timezone=-jar/var/www/app-.jar/var/www//config/spring/job.xml

我的配方将两个类似的crontab文件(company_1和company_2)放入/etc/cron.d/,但仅用于最后一个属性的值(company_2)。您能告诉我,我哪里错了吗?

您需要使用
模板
资源的变量部分来明确分配
客户端名称
时区
。配方可能如下所示:

default['version'] = "1.0.0"
default['client-name'] = ['company_1','company_2']
30 04 * * * java -Duser.timezone=<%= node[:timezone] %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= node[:client_name] %>/config/spring/job.xml
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
30 04 * * * java -Duser.timezone=<%= @client_timezone %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= @client_name %>/config/spring/job.xml
您的
crontab.erb
应该如下所示:

default['version'] = "1.0.0"
default['client-name'] = ['company_1','company_2']
30 04 * * * java -Duser.timezone=<%= node[:timezone] %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= node[:client_name] %>/config/spring/job.xml
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
30 04 * * * java -Duser.timezone=<%= @client_timezone %> -jar /var/www/app-<%= node[:version] %>.jar /var/www/<%= @client_name %>/config/spring/job.xml

30 04***java-Duser.timezone=-jar/var/www/app-.jar/var/www//config/spring/job.xml

以及
crontab.erb
?30 04***java-Duser.timezone=-jar/var/www/app-.jar/var/www//config/spring/job.xmlThx,伙计,这正是我需要的。我对chef&ruby很陌生,所以我的问题可能有点迟钝。。