2

我对红宝石和厨师很陌生。我正在尝试根据内核数在 nginx.conf 文件中创建条目。

for i in <%= node["cpu"]["total"]%>
upstream frontends {
        server 127.0.0.1:805x;
    }

end

所以..如果 4 核文件将如下所示:

upstream frontends {
            server 127.0.0.1:8051;
            server 127.0.0.1:8052;
            server 127.0.0.1:8053;
            server 127.0.0.1:8054;
        }
4

3 回答 3

14

食谱

template "/etc/nginx/sites-available/my-site.conf" do
  variables :frontends_count => node["cpu"]["total"]
end

模板

upstream frontends {
<% @frontends_count.times do |i| %>
  server 127.0.0.1:805<%= i + 1 %>;
<% end %>
}
于 2012-05-07T19:30:33.677 回答
3

我对 Chef 不熟悉,因为我是 Puppet 用户。一般来说,我会这样处理它:

n.times { |i| puts "server 127.0.0.1:805#{i+1}" }

输出:

server 127.0.0.1:8051
server 127.0.0.1:8052
server 127.0.0.1:8053
server 127.0.0.1:8054

显然,您必须替换nnode["cpu"]["total"](我假设这是一个整数)并使用 以外的其他puts内容,但这应该可以帮助您入门。我想这应该适用于厨师:

upstream frontends {
<% node["cpu"]["total"].times do |i| -%>
  <%= "server 127.0.0.1:805#{i+1}" %>
<% end -%>
}
于 2012-05-07T19:16:46.647 回答
0

这是 if 语句的示例。

食谱:

template "/opt/auth/users.xml" do
 ...
 variables(
   :users => auth_users
 )
end

模板:

<% @users.each do |u| %>
  <user username="<%= u['username'] %>" password="<%= u['password'] %>" roles="<%= u['roles'] if u['roles'] %>" groups="<%= u['groups'] if u['groups'] %>" />
<% end %>
于 2017-05-03T16:09:37.443 回答