Учебники

Шеф-повар — шаблоны

В Инфраструктуре управление конфигурацией — все о том, насколько хорошо настраиваются хосты. Как правило, все конфигурации выполняются с использованием файлов конфигурации. 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 в файл шаблона. Мы используем его, чтобы зациклить наше выражение четыре раза.