对齐 Puppet ERB 模板中的列

align columns in a Puppet ERB template

我在 Puppet ERB 模板中有以下代码:

<% if @server.class == Array -%>
<% @server.each do |server| -%>
server   <%= server %>
restrict <%= server %>  <%= @restrict[1] %>
<% end %>
<% end -%>

在配置文件中,由于 IP 地址的字符数不同,我没有得到对齐的输出:

server   123.123.1.1
restrict 123.123.1.1  mask 255.255.255.224 nomodify notrap noquery
server   123.123.345.33
restrict 123.123.345.33  mask 255.255.255.224 nomodify notrap noquery
server   123.123.345.33
restrict 123.123.345.33  mask 255.255.255.224 nomodify notrap noquery

可以看出,掩模线没有与其他掩模线对齐。

如何对齐它们?

您可以在 ERB 模板内的 Ruby 代码中做任何您能做的事情,所以这会起作用:

<% if @server.class == Array -%>
<% @server.each do |server| -%>
server   <%= "%-14s" % server %>
restrict <%= "%-14s" % server %>  <%= @restrict[1] %>
<% end %>
<% end -%>

即您可以像其他语言一样格式化 Ruby 中的字符串。 Ruby 文档 here.