Значения шеф-повара 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,

Другие вопросы по тегам