【发布时间】:2023-04-04 08:25:01
【问题描述】:
我有几台由厨师管理的服务器,每台服务器运行一个堆栈:
- nginx
- phusion 乘客
我想让乘客 gem 升级过程自动化,能够有条件地跳过乘客 nginx 模块编译,这意味着我不希望编译过程发生在每次厨师运行时,只在确定它的运行时发生是必要的(通常是因为正在升级乘客 gem 版本,但也有在没有升级乘客 gem 但之前编译失败的情况下)。
目前我检查正在运行的乘客的版本,但在 gem 实际安装到正确版本但编译失败的情况下,幂等性检查过于广泛,我无法在需要时进行编译尝试。
验证passenger 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 chef-infra passenger