Сопоставление пути командной строки хранилища с путем хранилища упаковщика

#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. Требование к этому префиксу также описано в документации движка. Я, конечно, сам столкнулся с такой же проблемой 🙂