Значения шеф-повара Json в файлы ERB
Как получить доступ к значениям из файлов JSON пакета данных из файлов ERB в шаблонах Chef.
У меня есть файл с данными мешка с именем chef-repo/data_bags/test.json
содержащие эти данные:
{
"id": "test",
"test": {
"name": "doel"
}
}
В пределах chef-repo/cookcooks/test/templates/default.erb
Я вижу что <% @test.name %>
доступ и показывает значения точно.
Я хотел бы понять, где переменная экземпляра @test
назначается значение пакета данных в шеф-повара.
1 ответ
Пакет данных читается по рецепту. Извлеченное значение затем передается в шаблон, где оно затем доступно в контексте ERB. Это может выглядеть примерно так:
test = data_bag_item("my_data_bag", "test")
template "/path/to/target/file" do
source "default.erb"
variables :test => test
end
Вы можете прочитать больше о переменных в шаблонах в документации по шаблонам.
Как последнее замечание, вам не хватает некоторых каталогов в вашей кулинарной книге и репозитории шеф-повара. Файл erb должен быть в chef-repo/cookcooks/test/templates/default/default.erb
(обратите внимание на добавленный каталог по умолчанию). Элемент пакета данных должен находиться в каталоге, названном в честь пакета данных (помните, что существует много пакетов данных, каждый из которых содержит много элементов пакета данных). Таким образом, в приведенном выше примере кода ваш пакет данных должен находиться в chef-repo/data_bags/my_data_bag/test.json
,