цикл по строкам простого текстового файла, переданного параметром --set-file helm, затем анализирует каждую строку по столбцу
У меня есть файл cron, и я пытаюсь передать его через --set-file
вариант. Я хочу перебрать строки файла cron и создать для каждой строки новый объект Kubernetes типа CronJob.
Я использовал это вот так helm instal ... --set-file crons.file=mycron
где файл mycron выглядит как типичный файл cron:
0,10,20,30,40,50 * * * * /usr/bin/cmd1 opta optb
35 2-23/3 * * * /usr/bin/cmd2
я не могу перебирать строки этого простого текста:
{{- range $indx, $line := .Values.crons.file }}
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: {{ regexFind "[^/]+$" "$line"}}
jobTemplate:
spec:
template:
spec:
containers:
- name: cron-{{ $indx }}
image: busybox
args:
- /bin/sh
- -c
- {{ regexFind "[^/]+$" "$line"}}
restartPolicy: OnFailure
{{- end }}
Есть ли такая функция, как fromYaml
что делает простой текстовый файл повторяемым range
функция?
1 ответ
Библиотека поддержки Sprig включает функции для разделения и объединения строк в списки, а также для управления списками в целом. ЕслиsplitList
файл с новой строкой, вы получите список строк. Ты снова можешьsplitList
каждая строка на пробелах, чтобы получить отдельные временные и командные части из отдельных строк cron.
{{/* Iterate over individual lines in the string */}}
{{- range $line := splitList "\n" .Values.crons.file -}}
{{/* Break the line into words */}}
{{- $words := splitList " " $line -}}
{{/* Reconstitute the schedule and command parts from the words */}}
{{- $time := slice $words 0 5 | join " " -}}
{{- $command := slice $words 5 -}}
---
schedule: {{ $time }}
command: {{- $command | toYaml | nindent 2}}
{{ end -}}