【问题标题】:Need help removing leading Newline in ERB Template for Chef cookbook需要帮助删除厨师食谱的 ERB 模板中的前导换行符
【发布时间】: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


【解决方案1】:

在 cmets 中追踪到,cookbook 默认属性在数组中有一个虚假的'',由于同级数组合并而被保留。修复是使用默认的[] 而不是['']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-12
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多