使用Chef,只有满足条件才能从模板插入文本块吗?
我们说我们有一个属性:
node["webapp"]["run"] = "true"
如果webapp为true,我们只想在sites-enabled / app.conf中的nginx .conf中输入一个条目,如下所示:
#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插入文字&#34; true&#34;进入配置文件。
我在Chef and erb templates. How to use boolean code blocks中看到我可以从节点插入看似只是带有评估变量的文本。
我尝试过更改
<% if node[:webapp][:run]=="true" -%>
TEXT
<% end -%>
无济于事。
任何想法我做错了什么?谢谢!
编辑:
根据Psyreactor的回答,在模板本身我停止尝试评估字符串&#34; true&#34;而是用这个:
SOME WORKING NGINX CONFIG STUFF
<% if node["webapp"]["run"] -%>
location /webapp {
try_files $uri @some_other_location;
}
<% end -%>
SOME OTHER WORKING NGINX CONFIG STUFF
如果节点属性设置为&#34; true&#34;这会在配置文件中正确插入文本块。我想我只是假设它仍然是一个需要进行评估的字符串。
答案 0 :(得分:6)
假设您有一个属性
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%>
我希望能帮助你。
抱歉我的英文 最好的问候