Chef infra 在提供程序(ark)之前执行厨师模板
我正在开发一本使用ark提供者的烹饪书和一些其他模板文件 我的主要问题是模板文件是在ark执行之前创建的。。。因此,在执行配方时,应该放置文件的目录不存在 如何仅在ark完成后执行模板 以下是配方代码:Chef infra 在提供程序(ark)之前执行厨师模板,chef-infra,Chef Infra,我正在开发一本使用ark提供者的烹饪书和一些其他模板文件 我的主要问题是模板文件是在ark执行之前创建的。。。因此,在执行配方时,应该放置文件的目录不存在 如何仅在ark完成后执行模板 以下是配方代码: version = node['tomcat']['version'] major_version = version[0] download_url = "http://archive.apache.org/dist/tomcat/tomcat-#{major_version}/v#{vers
version = node['tomcat']['version']
major_version = version[0]
download_url = "http://archive.apache.org/dist/tomcat/tomcat-#{major_version}/v#{version}/bin/apache-tomcat-#{version}.tar.gz"
user node['tomcat']['user'] do
comment "Tomcat user"
system true
shell "/bin/false"
home node['tomcat']['install_dir']
end
ark 'tomcat' do
url download_url
version version
prefix_root node['tomcat']['install_dir']
home_dir node['tomcat']['install_dir'] + "/tomcat"
owner node['tomcat']['user']
end
template '/etc/init.d/tomcat' do
source "tomcat.init.redhat.erb"
owner "root"
group "root"
mode "0774"
variables(:name => major_version)
end
service 'tomcat' do
supports :restart => true, :reload => true, :status => true
action [:enable, :start]
end
template node['tomcat']['install_dir'] + "/tomcat/conf/default" do
source "default.erb"
owner node['tomcat']['user']
group node['tomcat']['user']
mode "0644"
variables(:tomcat => node['tomcat'].to_hash)
notifies :restart, "service[tomcat]"
end
与通知tomcat重新启动的方式相同
ark 'tomcat' do
# ...
notifies :create, 'template[/etc/init.d/tomcat]', :immediately
end
然后确保将
action:nothing
添加到模板资源内联中。我想讨论的是template节点['tomcat']['install_dir']+“/tomcat/conf/default”
,而不是template'/etc/init.d/tomcat'
。因为后者实际上并不依赖于任何东西。问题是,我认为ark创建了节点['tomcat']['install_dir']+“/tomcat”
文件夹,但不是../tomcat/conf
确实问题出在第二个模板上(很抱歉没有弄清楚)。你的建议非常有效。。。我有一个错误的印象,我需要将ark设置为操作:无
,而不是模板(不要问我为什么我会这样理解……在您输入@sethvargo之后,这是有意义的)。我也有同样的问题,但它曾经用于ark cookbook的早期版本(0.0.17)。ark cookbook的行为是否发生了变化?cookbook遵循语义版本控制,因此API很可能在0.1.0之后的版本中发生了变化