Я работаю над настраиваемым шаблоном начальной загрузки на основе образца шаблона. Я смотрю на пример получения ключа проверки с рабочей станции на новый сервер, и, насколько я могу судить, путь ключа указан в Knight.rb в переменной validation_key. И в шаблоне начальной загрузки он отображается с помощью <% = validation_key%>
Это волшебный рубиновый материал, обрабатывается ли переменная пути validation_key в Knife, и содержимое считывается в другую переменную при обработке шаблона, и именно так путь превращается в строку, содержащую содержимое файла по этому пути?
Если я объявлю foo = / tmp / test.txt в Knife.rb, могу ли я получить доступ к содержимому test.txt в моем шаблоне начальной загрузки с помощью <% = foo%>?
ИЗ: https://github.com/opscode/chef/blob/master/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb
(
cat <<'EOP'
<%= validation_key %>
EOP
) > /tmp/validation.pem
В <%
и %>
бизнес является частью Система шаблонов Ruby также используется Chef. Ссылка на validation_key
- это локальная переменная, передаваемая кодом шаблона начальной загрузки.
Более распространенное использование шаблонов ERB в Chef - создание файлов конфигурации, например, из поваренной книги сообщества Apache:
templates/default/ports.conf.erb
<% @apache_listen_ports.each do |port| %>
Listen <%= port %>
<% end %>
Этот ресурс будет создан где-нибудь в рецепте:
recipes/default.rb
template "/etc/apache2/ports.conf" do
source "ports.conf.erb"
variables :apache_listen_ports => [80, 443]
end
Когда вы только начинаете, важно отметить использование <%
для написания кода, выполняемого ERB, по сравнению с <%=
который возвращает результат выражения, обычно просто переменной.