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

私はPuppetユーザーなので、Chefに精通していません。一般的に私はこのようにそれに取り組みます:

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

n明らかに、node["cpu"]["total"](これは整数だと思います)に置き換えて、以外のものを使用putsする必要がありますが、それで始めることができます。これはChefで機能するはずです:

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 に答える