#path #hashicorp-vault #packer
#путь #hashicorp-хранилище #упаковщик
Вопрос:
Используя CLI хранилища, я могу получить данные для следующего пути:
vault kv get -field=databag chef0/databags/wireguard/hedge
Однако в моем скрипте упаковщика это:
"{{ vault `chef0/databags/wireguard/hedge` `databag` }}"
генерирует ошибку отсутствия данных:
template: root:1:3: executing "root" at <vault `chef0/databags/wireguard/hedge`
`databag`>: error calling vault: Vault data was empty at the given path.
Warnings: Invalid path for a versioned K/V secrets engine. See the API docs for
the appropriate API endpoints to use. If using the Vault CLI, use 'vault kv get'
for this operation.
Существует ли правило для перевода / сопоставления одного с другим?
Примечание: Чтобы устранить несвязанные проблемы с разрешениями, я запустил оба из них, используя корневой токен.
Ответ №1:
Хорошо, не уверен, где это задокументировано, и я не предполагаю, что это не так, но вот что я обнаружил:
Похоже, что любые данные, хранящиеся в секрете, скажем, chef0, доступны через API по data
вложенному пути. Это также может помочь вам узнать, что существует metadata
вспомогательный путь — на том же уровне, data
что и .
Таким образом, похоже, что интерфейс командной строки Vault не предоставляет эти вложенные пути, с помощью HTTP-API Vault и API-интерфейса Packer Vault предоставляют эти вложенные пути.
Правильное заклинание упаковщика (необязательно):
"{{ vault `chef0/**data**/databags/wireguard/hedge` `databag` }}"
Ответ №2:
Вы должны использовать версию v2 ядра kv. Для этого движка вам действительно нужно иметь /data/
путь, как показано в документации API. Требование к этому префиксу также описано в документации движка. Я, конечно, сам столкнулся с такой же проблемой 🙂