验证乘客nginx模块是否已成功编译的最佳方法?

验证乘客nginx模块是否已成功编译的最佳方法?,nginx,chef-infra,passenger,Nginx,Chef Infra,Passenger,我有几个chef管理的服务器,每个服务器都运行一个堆栈,其中包括: nginx 普西翁旅客 我想让passenger gem升级过程自动化,能够有条件地跳过passenger nginx模块编译,这意味着我不希望编译过程发生在每次chef运行时,只在确定有必要的运行时发生(通常是因为正在升级乘客gem版本,但在乘客gem未升级但之前编译失败的情况下也是如此) 目前,我检查正在运行的passenger的版本,但是如果gem实际上安装到了正确的版本,但是编译失败,那么幂等性检查太广泛了,当我需要

我有几个chef管理的服务器,每个服务器都运行一个堆栈,其中包括:

  • nginx
  • 普西翁旅客
我想让passenger gem升级过程自动化,能够有条件地跳过passenger nginx模块编译,这意味着我不希望编译过程发生在每次chef运行时,只在确定有必要的运行时发生(通常是因为正在升级乘客gem版本,但在乘客gem未升级但之前编译失败的情况下也是如此)

目前,我检查正在运行的passenger的版本,但是如果gem实际上安装到了正确的版本,但是编译失败,那么幂等性检查太广泛了,当我需要编译时,我无法尝试编译

验证乘客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

你试过关于编译的乘客配置吗?

你试过关于编译的乘客配置吗?

没有。我不知道它存在!谢谢分享。但是,当我试过关于编译的乘客配置或关于nginx动态编译的乘客配置时,两者都没有返回任何内容。它们都打开了“回归”退出代码。0表示ok/yes非0表示bad/no。啊,好吧,我明白了,是的,我得到了退出代码0。只需测试在未编译的情况下是否得到了正确的退出代码。谢谢!最近验证了这一点。当乘客nginx模块未编译时,
乘客配置关于已编译
返回退出代码1。C如果方法采用字符串(或块),则hef不是它将执行,如果退出代码为0,则将跳过该步骤,否则,如果非零代码将执行该步骤。不,我没有。不知道它存在!感谢分享。但是,当我尝试
乘客配置关于编译的
乘客配置关于nginx动态编译的
时,两者都不返回任何内容。它们只“返回”退出代码。0表示ok/yes非0表示bad/no。啊,好吧,我明白了,是的,我得到了退出代码0。只需测试在未编译的情况下是否得到了正确的退出代码。谢谢!最近验证了这一点。当乘客nginx模块未编译时,
乘客配置关于已编译
返回退出代码1。C如果方法获取它将执行的字符串(或块),并且如果退出代码为0,则将跳过该步骤,否则,如果非零代码将执行该步骤,则hef不是。