我有几个主厨管理每个运行堆栈的服务器:
我想让乘客宝石升级过程自动化,能够有条件地跳过乘客nginx模块编译,这意味着我不希望编译过程在每次厨师运行时发生,只有在确定它的运行中是必要的(通常是因为乘客宝石版本正在升级,但是在乘客宝石未升级但之前编译失败的情况下也是如此)。
目前我检查正在运行的乘客的版本,但是在宝石实际安装到正确版本但编译失败的情况下,该幂等性检查过于宽泛,当我需要时,我无法进行编译尝试。 / p>
验证乘客nginx模块已编译的最准确方法是什么?在稳定的位置是否有特定文件,我可以检查它的存在?
现在我的厨师块看起来像这样:
execute "compile passenger nginx module" do
ruby_vers = node[:ruby][:global_version]
passenger_vers = node[:passenger][:version]
ruby_parent_vers = node[:ruby_parent_vers]
command "export ORIG_PATH=\"$PATH\"; sudo -s -E; export PATH=\"$ORIG_PATH\"; /usr/bin/ruby /usr/lib/ruby/gems/2.4.0/gems/passenger-#{passenger_vers}/bin/passenger-install-nginx-module --auto --auto-download"
# check for a difference between passenger version requested and passenger version running
not_if { `passenger --version` == cur_vers }
end
答案 0 :(得分:2)
您是否尝试过passenger-config about compiled
?