ХАШИКОРП ХОЗЯЙСТВО: Как читать несколько элементов из файла и записывать их в Хранилище

Я могу записывать значения в Vault из файла json:

# cat secrets.json 
{ "value": "bGktzwatc" }
{ "value": "AGktzwatB" }

При попытке создать новое значение путем чтения из файла json, Vault считывает только первое значение из файла:

# ./vault write secret/passwd1 @secrets.json
Success! Data written to: secret/passwd1
# ./vault read secret/passwd1
Key                 Value
---                 -----
refresh_interval    768h0m0s
value               bGktzwatc

Можно ли читать несколько значений из файла и записывать в разные ключи через хранилище?

Мое требование добавляет значения к нескольким ключам путем чтения из файла:

Key                 Value
---                 -----
refresh_interval    768h0m0s
value               bGktzwatc

Key                 Value
---                 -----
refresh_interval    768h0m0s
value               AGktzwatB

person Here_2_learn    schedule 12.04.2017    source источник


Ответы (3)


AFAIK, вы не можете этого сделать, поскольку команда vault write ожидает, что key будет указан как часть команды.

При попытке > vault write @data.json кажется, что не имеет значения, что файл вообще содержит, так как вместо wrong file format вида ошибки выводится общий вывод о доступных параметрах для команды.


Может быть, это будет полезно: вы можете указать более одного значения для конкретного ключа:

# cat secrets.json 
{ "value1": "bGktzwatc", "value2": "AGktzwatB" }

тогда ключ будет содержать

Key                 Value
---                 -----
refresh_interval    768h0m0s
value1              bGktzwatc
value2              AGktzwatB
person Set    schedule 13.04.2017
comment
в хранилище версии 1.2.3 с kv version1 мне не удалось проанализировать данные k = v; недопустимая пара ключ = значение - person Iftimie Tudor; 04.12.2019

Если вы копируете данные с одного ключа на другой через файл, мне подходит этот подход:

vault read -format=json secret/mykey1 > file.json
cat file.json | jq '.data' | vault write secret/mykey2 -

Обратите внимание на использование jq, чтобы сначала вывести подэлемент "data" на верхний уровень.

person Yuri Astrakhan    schedule 22.10.2020

Используя хранилище 1.1.3 и секретный движок, я могу записывать секреты из файла:

cat secrets.json | vault write secret/yoursecrets -

Это тоже работает:

vault write secret/yoursecrets @secrets.json

Обратите внимание: если secrets.json был сгенерирован с использованием vault read, ваши секреты находятся в поле data ответа JSON, например { "data": {"username":"Mario", "password": "It's-a me, Mario!"} }.

person pyb    schedule 11.07.2019