【问题标题】:Chef Bash Resource Not RunningChef Bash 资源未运行
【发布时间】:2014-07-23 20:56:04
【问题描述】:

我目前创建了一个自定义 lwrp,它本质上运行一个 bash 脚本,该脚本在 tomcat 重新启动后为 localhost 卷曲以确保服务正在运行。

我的提供程序文件如下所示:

use_inline_resources

action :run do
  bash "checkhealth" do
  user "root"
  code <<-EOF
    echo Started counting
    curl http://localhost/version.html
  ...
  EOF
  end
 end

在我的一个节点上,我有以下块:

service "node" do
  supports :start => true, :stop => true, :restart => true, :status => true
  action :nothing
  notifies :run, "healthcheck[check-status]", :delayed
end

当我运行 chef-client 时,我可以看到 bash 代码运行的回声。

但是,在不同的节点上,我有一个这样的块:

service "tomcat" do
  action :restart
  notifies :run, "healthcheck[check-status]", :delayed
end

但是我看不到 echo 的任何输出,而且 bash 代码看起来也没有运行。我知道 bash 资源正在执行,因为日志输出显示 bash 资源已成功运行。但是,日志显示后有很长的延迟:

action run[2014-07-23T09:10:23-07:00] INFO: Processing bash[checkhealth] action run

当它说它成功时,这让我觉得 bash 代码发生了一些奇怪的事情,但我不确定是什么。这就是我卡住的地方,希望你们能帮助我找出这个奇怪的错误:)。我猜这可能与在第一个块中,动作是 :nothing,但第二个块有 :restart 的事实有关。

让我知道你们的想法。

谢谢!

【问题讨论】:

    标签: bash chef-infra chef-recipe


    【解决方案1】:

    为什么不效仿旧 Jenkins 食谱 (v1.2.2) 的做法?

    见:

    【讨论】:

    • 理想情况下,我们还希望能够从 version.html 中 grep 版本并将其与我们从 repo 中获取的哈希值进行比较,以确保服务器运行正确的版本。 Jenkins是我们之前做的,效果很好,但我们现在还需要检查版本。
    • @sedward 我通常只使用 remote_file 资源的校验和功能,以确保安装了正确的工件版本。请参阅:docs.opscode.com/resource_remote_file.html。 application_java 手册提供了一个使用这种方法的 LWRP:github.com/poise/application_java
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多