Uso avançado de arrays em modelos de Puppets

Eu precisava que uma variável fosse opcional e que ela fosse única ou um array, então tive que encontrar um sistema de template de fantoches para entendê-la. Abaixo está o que eu inventei.

<% if !check_mk_tags.empty? %><% if check_mk_tags.is_a?(Array) %>all_hosts = all_hosts + [ "<%= hostname %>|<%= check_mk_tags.join("|") %>"]
<% else %>
all_hosts = all_hosts + [ "
<%= hostname %>|<%= check_mk_tags %>"]
<% end -%>
<% else %>
all_hosts = all_hosts + [ "
<%= hostname %>" ]
<% end -%>

O exemplo acima verifica primeiro se a variável está vazia, se não estiver, então verifica se é um array. Se tivermos um array, junte-o com | entre cada variável. Tudo isso apenas para obter esta linha:

all_hosts = all_hosts + [ "puppet01|SSH|MGMT|PROD"]

Se solteiro:

all_hosts = all_hosts + [ "puppet01|SSH"]

Ou se check mk tags estiver vazio:

all_hosts = all_hosts + [ "puppet01"]