我有自己的食谱,可从AWS S3存储桶下载文件并尝试重新启动tomcat服务。
我正在使用来自的“官方” Tomcat配方 https://github.com/opscode-cookbooks/tomcat
FILE: myapp/recipes/default.rb
include_recipe 's3_file'
include_recipe 'tomcat::default'
s3_file "/var/lib/tomcat6/webapps/ROOT.war" do
remote_path node['myapp']['packages_s3_bucket_path'] + 'myapp.war'
bucket node['myapp']['packages_s3_bucket']
aws_access_key_id node['myapp']['packages_s3_bucket_aws_access_key']
aws_secret_access_key node['myapp']['packages_s3_bucket_aws_secret_key']
notifies :restart, "service[tomcat]", :immediately
end
问题是service[tomcat]
在编译时找不到(mycat的metadata.rb中也引用了tomcat)
Compiling Cookbooks...
[2015-01-14T00:56:14+00:00] WARN: Using java::default instead is recommended.
Converging 112 resources
[2015-01-14T00:56:15+00:00] INFO: Running queued delayed notifications before re-raising exception
[2015-01-14T00:56:15+00:00] ERROR: Running exception handlers
[2015-01-14T00:56:15+00:00] ERROR: Exception handlers complete
[2015-01-14T00:56:15+00:00] FATAL: Stacktrace dumped to /var/cache/chef/chef-stacktrace.out
Chef Client failed. 0 resources updated
[2015-01-14T00:56:15+00:00] ERROR: resource s3_file[/var/lib/tomcat6/webapps/ROOT.war] is configured to notify resource service[tomcat] with action restart, but service[tomcat] cannot be found in the resource collection. s3_file[/var/lib/tomcat6/webapps/ROOT.war] is defined in /var/cache/chef/cookbooks/uaa/recipes/default.rb:69:in `from_file'
[2015-01-14T00:56:15+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
有任何想法吗?谢谢
假设您使用默认设置的基础实例,则该实例应为service[tomcat6]
。服务资源在LWRP内部定义。这仅能起作用,因为该提供不起作用use_inline_resources
,因此在将来的某个时候,它可能不再起作用。
编辑:
我在下面提到的hack。
ruby_block 'restart tomcat' do
action :nothing
block do
resources('service[tomcat6]').run_action(:restart)
end
end
或类似的东西。通知ruby块,它将查找实际资源并重新启动它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句