厨师模板 – 有条件地插入一段文字

有了厨师,只有满足条件,才有办法从模板中插入文本块?

假设我们有一个属性:

node["webapp"]["run"] = "true" 

我们只需要在sites-enabled / app.conf中的nginx.conf中input一个条目,如果这个webapp是真的,就像这样:

 #The nginx-webapp.conf.erb template file SOME WORKING NGINX CONFIG STUFF <% if node["webapp"]["run"]=="true" -%> location /webapp { try_files $uri @some_other_location; } <% end -%> SOME OTHER WORKING NGINX CONFIG STUFF 

就目前而言,条件文本不会出错,它永远不会出现。 我仔细检查了模板可以看到节点属性,通过使用这个:

 <%= node["webapp"]["run"] %> 

哪个DID将文本“true”插入到configuration文件中。

我在厨师和erb模板中看到。 如何使用布尔代码块 ,我可以插入看起来只是文本与节点的评估variables。

我试过改变

 <% if node[:webapp][:run]=="true" -%> TEXT <% end -%> 

无济于事。

任何想法我做错了什么? 谢谢!

编辑:

每Psyreactor的答案,在模板本身,我停止尝试评估string“真”,而是使用这个:

 SOME WORKING NGINX CONFIG STUFF <% if node["webapp"]["run"] -%> location /webapp { try_files $uri @some_other_location; } <% end -%> SOME OTHER WORKING NGINX CONFIG STUFF 

如果节点属性设置为“true”,这样可以正确地在configuration文件中插入文本块! 我想我只是假设它仍然是一个需要被评估的string。

    假设你有一个属性

     node[:test][:bool] = true 

    在模板中将不得不这样做

     <% If node[:apache][:bool] -%> serverAlias ​​<% = node[:apache][:aliasl]%> <% End -%> 

    另一种选择是检查属性是否为空

     <% Unless node [:icinga][:core][:server_alias].nil? %> serverAlias ​​<% = node[:icinga][:core][:server_alias]%> <% End%> 

    我希望能帮到你。

    对不起,我的英语最好的问候