【发布时间】:2017-11-08 20:11:09
【问题描述】:
我正在使用嵌入式 Ruby 版本 2.3.5p376 Chef 客户端 12.21.14。
我正在编写创建标准 tcp_wrappers hosts.allow 文件的代码。想要的状态如下
# This file is generated by Chef
# Do not edit, changes will be overwritten
ALL: .javajockey.com
ALL: .javajockey.local
ALL: 127.0.0.1
我的数组作为角色存储在 CHEF 中。以下是JSON
"stig": {
"network": {
"hosts_deny": [
"ALL"
],
"hosts_allow": [
".javajockey.com",
".javajockey.local"
]
},
这是我的嵌入式 ruby 模板的内容
# This file is generated by Chef
# Do not edit, changes will be overwritten
#
<% unless @hosts_allow.nil? %>
<% @hosts_allow.each do |hosts_allow| %>
ALL: <%= hosts_allow %>
<% end %>
<% end %>
以下是我的代码的结果。
# This file is generated by Chef
# Do not edit, changes will be overwritten
#
ALL:
ALL: .javajockey.com
ALL: .javajockey.local
##############################
我需要删除前导的“ALL:”
【问题讨论】:
-
您的输入和输出似乎不匹配。您确定这就是您的模板的样子,并且您没有其他任何东西可以操纵这些属性吗?
-
感谢收看。可以肯定的是,我从该站点粘贴了代码并收到了相同的结果。属性来自角色。我可以验证这一点,因为我在解决问题时多次更改了属性。
-
我会在您的食谱中添加一些日志记录,
Chef::Log.warn("hosts_allow is #{node['stig']['network']['hosts_allow'].inspect}")。看看这是否显示了意外的nil或类似的。 -
如果有,请包含该说明书中的
attributes/default.rb文件,它可能与一些数组合并问题有关。 -
正如预期的那样,数组正在从某个地方获取一个字符串。 ,这是日志的输出 [2017-11-07T17:53:41-05:00] WARN: hosts_allow is ["", ".javajockey.com", ".javajockey.local", "127.0.0.1" ]
标签: ruby-on-rails ruby chef-infra