gpt4 book ai didi

ruby - Chef Recipe 的问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:59 25 4
gpt4 key购买 nike

抱歉我的英语不好。

这是一个./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

我的 Recipe 将两个相似的 crontab 文件(company_1 和 company_2)放入/etc/cron.d/,但只针对最后一个属性的值(company_2)。你能告诉我,我哪里错了吗?

最佳答案

您需要使用 template 资源的变量部分来显式分配 client_nametimezone。 Recipe 可能如下所示:

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

关于ruby - Chef Recipe 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com