Назад | Перейти на главную страницу

Форман: Как тестировать / отображать шаблоны подготовки

Я установил Foreman на тестовую виртуальную машину и хочу создать несколько пользовательских файлов кикстарта. Я понимаю, что Foreman визуализирует шаблоны во время создания хоста. Но в случае ошибки, типа, отсутствующей переменной и т. Д. Установка не выполняется.

Итак, как я могу протестировать свои шаблоны, не пытаясь установить новую виртуальную машину?

Очевидно, что начинать новую сборку каждый раз, когда я хочу внести изменения в свои шаблоны или фрагменты, контрпродуктивно.

Над редактором шаблонов есть небольшой Предварительный просмотр Кнопка - выберите это и в раскрывающемся меню справа выберите хост, для которого вы хотите отобразить шаблон.

Потребуется управляемый хост с той же операционной системой, поэтому он должен быть создан до предварительного просмотра шаблона (настроен для подготовки через Новый Хост, не созданный с помощью Puppet или загрузки фактов.)

Отрендеренная версия шаблона будет выглядеть так:

Выберите Ввод еще раз, и вы можете вернуться к редактированию шаблона. Все это происходит без необходимости сохранения + повторного посещения страницы редактирования. Никакие изменения не сохраняются при предварительном просмотре визуализированного шаблона, только при сохранении.

Также см Обзор релиза Foreman 1.9 - превью шаблона для короткого скринкаста, показывающего эту функцию.

Чтобы проверить правильность синтаксиса

erb -P -x -T '-' template.erb | ruby -c

Посмотреть, что написано по шаблону, сложнее, но вы можете посмотреть, как завершить этот скрипт ruby

require 'erb'
require 'ostruct'

class ErbalT < OpenStruct
  def render(template)
    ERB.new(template).result(binding)
  end
end

et = ErbalT.new({ :kernel => '4.8.4', 'os' => 'Linux' })
puts et.render(File.read(PATH_TO_TEMPLATE)) 

В зависимости от того, какой шаблон вы хотите протестировать, вам необходимо отправить в качестве параметров все ожидаемые переменные.

Есть еще один ответ, более специфичный для шаблонов erb - см. https://stackoverflow.com/questions/8954706/render-an-erb-template-with-values-from-a-hash