2017-12-06 4 views
0

Mit Helm Vorlagen versuche ich eine Liste von Server-Namen basierend auf einer Zahl in values.yaml zu generieren. Der Punkt für diese Vorlage wird auf die Zahl gesetzt (es ist ein float64).Helm: Komma-getrennte Liste generieren

{{- define "zkservers" -}} 
{{- $zkservers := list -}} 
{{- range int . | until -}} 
{{- $zkservers := print "zk-" . ".zookeeper" | append $zkservers -}} 
{{- end -}} 
{{- join "," $zkservers -}} 
{{- end -}} 

Für einen Eingang, sagen, 3 Ich bin dies zu produzieren erwarten:

zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper 

Es produziert nichts.

Ich verstehe, dass die Zeile innerhalb des Bereichsblocks ein No-Op ist, da die Variable $ zkservers bei jeder Wiederholung der Schleife eine neue Variable ist. Es ist nicht dieselbe Variable wie die $ zkserver im äußeren Bereich.

Ich hoffe, die Absicht ist klar, was ich tun möchte. Ich weiß nicht, wie ich es machen soll.

Wer weiß, wie man das mit Helm-Vorlagen macht?

Antwort

1

ich mit dem gleichen Problem konfrontiert und your solution mit Wörterbuch speicherte meinen Tag. Es ist ein guter Workaround und es kann nur ein wenig einfacher sein:

{{- define "zkservers" -}} 
{{- $zk := dict "servers" (list) -}} 
{{- range int . | until -}} 
{{- $noop := printf "zk-%d.zookeeper" . | append $zk.servers | set $zk "servers" -}} 
{{- end -}} 
{{- join "," $zk.servers -}} 
{{- end -}} 
0

Ich habe es mit Arbeit:

{{- define "zkservers" -}} 
{{- $dot := dict "nodes" (int .) "servers" (list) -}} 
{{- template "genservers" $dot -}} 
{{- join "," $dot.servers -}} 
{{- end -}} 

{{- define "genservers" -}} 
{{- range until .nodes -}} 
{{- $noop := print "zk-" . ".zookeeper" | append $.servers | set $ "servers" -}} 
{{- end -}} 
{{- end -}} 

scheint ein wenig weitschweifig für das, was normalerweise ein einfaches ein/zwei Liner sein sollte :)

Verwandte Themen