tomcat - 用chef部署war文件后如何重新启动tomcat?

标签 tomcat chef-infra

我有自己的 Recipe ,它从 AWS S3 存储桶下载文件并尝试重新启动 tomcat 服务。

我正在使用来自 https://github.com/opscode-cookbooks/tomcat 的“官方”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](tomcat也在myapp的metadata.rb中引用)

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]。服务资源为defined inside the LWRP 。这只有效,因为该提供不use_inline_resources,因此在将来的某个时候,这可能不再有效。

编辑:

我在下面提到的黑客行为。

ruby_block 'restart tomcat' do
  action :nothing
  block do
    resources('service[tomcat6]').run_action(:restart)
  end
end

或者类似的东西。通知 ruby​​ block ,它将查找真实资源并重新启动它。

关于tomcat - 用chef部署war文件后如何重新启动tomcat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27934224/

相关文章:

tomcat - Cloud foundry java buildpack - 找出tomcat版本

windows - 在 IntelliJ Community Edition 和 Tomcat8 上调试 J2EE 应用程序(作为服务运行)

linux - Puppet 或 Chef 上的虚拟主机/Apache 设置,需要重新配置吗?

ubuntu - Azure HTTP 重定向上的 Chef 服务器

python - 如何将 python LWRP 与 Opsworks/Chef 11 一起使用

java - Tomcat 启动日志 - 严重 : Error filterStart how to get a stack trace?

tomcat - 使用 Struts2 提供静态内容 : Tomcat error 404

chef-infra - 无法访问子配方属性文件中默认 Chef 配方的属性

chef-infra - 如何使用 apache2 chef cookbook 安装 apache2?

tomcat - 为 Grails 应用程序设置家庭网络服务器