Извлечь файл yaml из переменной в файле yaml
У меня есть простой файл yaml:
# replicas: number of pods
replicas: 1
# test
hello: world
Я храню это на карте конфигурации kubernetes:
apiVersion: v1
data:
helm_values: |
# replicas: number of pods
replicas: 1
# test
hello: world
kind: ConfigMap
metadata:
creationTimestamp: 2018-07-30T06:07:38Z
Теперь я хочу извлечь внутренний файл yaml из configmap. Пытаясь yq я получаю:
$ VAR=$(oc get configmap backoffice-deployer -o yaml | yq .data.helm_values)
$ echo $VAR
"# replicas: number of pods\nreplicas: 1\n# test\nhello: world\n"
Если я пытаюсь отобразить или распечатать VAR в файл, он не отформатирован так, как оригинальный файл.
Какой самый простой способ в bash вернуть извлеченные данные в формате исходного файла в bash?
1 ответ
Решение
Я не могу точно воспроизвести ваш код, но вот что я получаю (OSX, bash v4.4.23, yq v2.1.0):
var=$(cat test.yaml | yq r - data.helm_values)
echo "$var"
с выходом
# replicas: number of pods
replicas: 1
# test
hello: world
Если я забуду цитаты, (echo $var
), затем:
# replicas: number of pods replicas: 1 # test hello: world
(без разрывов строк, нет \n
).
Я могу еще дальше обработать это:
echo "$var" | yq r - hello
# => world
С yq v2.6.0 аргументы команды изменились:
var=$(cat test.yaml | yq -r .data.helm_values)
echo "$var"