В Инфраструктуре управление конфигурацией — все о том, насколько хорошо настраиваются хосты. Как правило, все конфигурации выполняются с использованием файлов конфигурации. Chef использует шаблоны, чтобы иметь возможность заполнять файл конфигурации динамическими значениями.
Шеф-повар предоставляет шаблоны в качестве ресурса, который можно использовать в рецепте. Динамические значения файлов конфигурации можно получить из пакетов данных, атрибутов или даже рассчитать их, передав их в шаблон.
Как это использовать?
Шаг 1 — Добавьте шаблон к рецепту.
vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/recipes/default.rb template '/tmp/message' do source 'Test.erb' variables( hi: 'Tesing', world: 'Welt', from: node['fqdn'] ) end
Шаг 2 — Добавить файл шаблона ERB .
vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/templates/default/test.erb <%- 4.times do %> <%= @hi %>, <%= @world %> from <%= @from %>! <%- end %>
Шаг 3 — Загрузите измененную поваренную книгу на сервер Chef.
vipin@laptop:~/chef-repo $ knife cookbook upload <Cookbook Name> Uploading my_cookbook [0.1.0] Run Chef Client on your node: user@server:~$ sudo chef-client ...TRUNCATED OUTPUT... [2017-01-14T20:41:21+00:00] INFO: Processing template[/tmp/ message] action create (my_cookbook::default line 9) [2017-01-14T20:41:22+00:00] INFO: template[/tmp/message] updated content
Шаг 4 — Проверьте содержимое загруженного файла.
user@server:~$ sudo cat /tmp/message Hallo, Welt from vagrant.vm! Hallo, Welt from vagrant.vm! Hallo, Welt from vagrant.vm! Hallo, Welt from vagrant.vm!
Workflow
Шеф-повар использует Erubis в качестве языка шаблонов. Это позволяет встраивать чистый код Ruby в специальные символы в шаблонах.
<% =%> используется, если вы хотите напечатать значение переменной или выражения Ruby в сгенерированный файл.
<% -%> используется, если вы хотите встроить логику Ruby в файл шаблона. Мы используем его, чтобы зациклить наше выражение четыре раза.