Форман: как тестировать / отображать шаблоны инициализации
Я установил Foreman на тестовую виртуальную машину и хочу создать несколько пользовательских файлов кикстарта. Я понимаю, что Форман отображает шаблоны при создании хоста. Но в случае ошибки, типа, отсутствующей переменной и т. Д. Установка завершится неудачно.
Итак, как я могу протестировать свои шаблоны, не пытаясь установить новую виртуальную машину?
Очевидно, контрпродуктивно начинать новую сборку всякий раз, когда я хочу внести изменения в свои шаблоны или фрагменты.
2 ответа
Над редактором шаблонов есть небольшая кнопка " Просмотр" - выберите ее и в раскрывающемся меню справа выберите хост, для которого вы хотите отобразить шаблон.
Потребуется управляемый хост с той же операционной системой, поэтому его необходимо создать перед предварительным просмотром шаблона (настроен для предоставления с помощью нового хоста, а не с помощью 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