Also könnte dies ein wenig verwirrend sein, aber ertragen Sie mit mir. Kurz gesagt möchte ich alle Attribute mit einem bestimmten Schlüsselwert durchlaufen und sie dann in eine Vorlage einfügen, wenn die Werte nicht leer sind. Hier ist mein Code:Chef Ruby Schleife über Attribute in einer Vorlage .ERB-Vorlage
Attributes:
# === Default file Configurations
#
default['elasticsearch']['default']['ES_USER'] = ''
default['elasticsearch']['default']['ES_GROUP'] = ''
default['elasticsearch']['default']['ES_HEAP_SIZE'] = ''
default['elasticsearch']['default']['MAX_OPEN_FILES'] = ''
default['elasticsearch']['default']['MAX_LOCKED_MEMORY'] = 'unlimited'
default['elasticsearch']['default']['MAX_MAP_COUNT'] = ''
default['elasticsearch']['default']['LOG_DIR'] = '/var/log/elasticsearch'
default['elasticsearch']['default']['DATA_DIR'] = '/var/lib/elasticsearch'
default['elasticsearch']['default']['WORK_DIR'] = '/tmp/elasticsearch'
default['elasticsearch']['default']['CONF_DIR'] = '/etc/elasticsearch'
default['elasticsearch']['default']['CONF_FILE'] = '/etc/elasticsearch/elasticsearch.yml'
default['elasticsearch']['default']['RESTART_ON_UPGRADE'] = ''
TEMPLATE:
<% node['elasticsearch']['default'].each do |host| -%>
<% if node.elasticsearch.default.host not nil -%>
<%= host %>=<%= node.elasticsearch.default.host %>
<% end %>
OUTPUT (hoffentlich):
MAX_LOCKED_MEMORY=unlimited
LOG_DIR=/var/log/elasticsearch
DATA_DIR=/var/lib/elasticsearch
WORK_DIR=/tmp/elasticsearch
CONF_DIR=/etc/elasticsearch
CONF_FILE=/etc/elasticsearch/elasticsearch.yml
Mein Rubin ist nicht die beste, weil ich bin Ich fing einfach mit all dem Zeug an, aber ich konnte keine Beispiele für diese Art von Situation finden. Jede Hilfe wäre großartig, danke.
Danke ... Ihre Antwort war genau richtig, außer für eine fehlende '<% end %>' nach '<%= key %> = <%= value %>'. – jarsever
Oh, und es ist eigentlich 'außer value.empty?', Weil aus irgendeinem Grund es 'blank' in der Funktion nicht akzeptierte. – jarsever
Wenn ich diese Schleife benutze, gibt der chef run den gesamten JSON aus und nicht die Zeichenfolge des Werts und die Taste selbst. Können Sie mir vorschlagen, wie ich es zwingen kann, die Saite einzuspinnen? –