2012-05-07 5 views
2

私はルビーとシェフにはとても新しいです。コアの数に基づいてnginx.confファイルにエントリを作成しようとしています。 4つのコアファイルSo..ifシェフテンプレートとルービーのforループを行う方法

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

end 

次のようになります。

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; 
     } 
+1

?最後にポート8066またはポート80516を使用しますか? –

答えて

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 %> 
} 
3

私は人形のユーザーだので、私は、シェフに精通していませんよ。一般的に私はこのかかわらず、同じように取り組むでしょう:

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 

は明らかに、あなたは(私はそれが整数だと仮定)node["cpu"]["total"]nを交換し、puts以外のものを使用する必要がありますが、それはすべきあなたを始めましょう。私はこれがシェフで動作する必要がありますね:

upstream frontends { 
<% node["cpu"]["total"].times do |i| -%> 
    <%= "server 127.0.0.1:805#{i+1}" %> 
<% end -%> 
} 
0

ここではif文と例です。

クックブック:

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

テンプレート:16個のコアがある場合はどう

<% @users.each do |u| %> 
    <user username="<%= u['username'] %>" password="<%= u['password'] %>" roles="<%= u['roles'] if u['roles'] %>" groups="<%= u['groups'] if u['groups'] %>" /> 
<% end %> 
関連する問題