我正在编写一个厨师食谱来安装 nginx 和 Phusion Passenger。简短的总结是我的运行列表中的配方没有按照我期望的顺序执行,这导致 apt 包安装以我不知道如何修复的方式失败。整个序列有点复杂,我会尽力保留基本细节。
我有自己的配方,lr-web
用于将 Web 服务器自定义为我希望它处于的状态。它对nginx.conf
. 我还有一个角色来协调整体配置,其运行列表是:
"run_list":[
"recipe[apt]",
"recipe[nginx]",
"recipe[passenger]",
"recipe[lr-web]"
]
Run Code Online (Sandbox Code Playgroud)
此外,lr-web
配方列表passenger
,并nginx
在它的依赖metadata.rb
。
在apt
和nginx
食谱是标准的Opscode公司的。但是我已经编写了自己的passenger
配方,因为 OpsCode 使用 rubygems 来安装乘客,但该版本不再受支持。按照modrails.com上的建议通过 apt 安装,我的passenger
食谱中有以下步骤:
cookbook_file "/etc/apt/sources.list.d/passenger.list" do
source "passenger.list"
mode 600
action :create_if_missing
end
bash "apt-get-update" do
user "root"
code <<-EOF
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
apt-get install apt-transport-https ca-certificates
apt-get update
EOF
end
apt_package "nginx-extras" …
Run Code Online (Sandbox Code Playgroud)