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"]