根据角色包括部分配方

时间:2013-10-22 16:09:07

标签: chef chef-recipe knife

我正在使用nginx_vhost配方将其应用于两个不同的角色,比方说frontendweb。 nginx_vhost recipe在其vhost.conf文件的模板上有以下代码:

<% if @upstream %>
upstream <%= @name %> {
<% @servers.each do |server| -%>
   server <%= server %> fail_timeout=0;
<% end -%>
<% @sockets.each do |socket| -%>
   server <%= socket %> fail_timeout=0;
<% end -%>
}
<% end %>

上面的代码将写:

upstream app_myproject.com {
   server unix:/www/myproject.com/control/shared/sockets/unicorn.sock fail_timeout=0;
}

问题是:我只需要frontend角色,而不是web角色。我想将它包含在frontend角色的override_attributes部分中,但我不确定这是否是最好的方法。

1 个答案:

答案 0 :(得分:0)

请注意,它提供了来自nginx_vhost cookbook的名为nginx_vhost的新资源,它应该用于您的自定义食谱中:

# foo::frontend
nginx_vhost "app_myproject.com" do
  sockets [ "unix:/www/myproject.com/control/shared/sockets/unicorn.sock" ]
end

您可以为角色 web 中使用的配方定义另一个资源:

# foo:web
nginx_vhost "web.myproject.com" do
  port 80
  stream false  # results no stream section in vhost config
end