Chef infra 在提供程序(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

我正在开发一本使用ark提供者的烹饪书和一些其他模板文件

我的主要问题是模板文件是在ark执行之前创建的。。。因此,在执行配方时,应该放置文件的目录不存在

如何仅在ark完成后执行模板

以下是配方代码:

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之后的版本中发生了变化