Chef - Modelos

Na infraestrutura, configuration managementtem tudo a ver com a configuração dos hosts. Em geral, todas as configurações são feitas usando os arquivos de configuração. O Chef usa modelos para preencher o arquivo de configuração com valores dinâmicos.

O Chef fornece modelos como um recurso que pode ser usado na receita. Os valores dinâmicos dos arquivos de configuração podem ser recuperados de pacotes de dados, atributos ou até mesmo calculá-los passando-os para o modelo.

Como usá-lo?

Step 1 - Adicione o modelo à receita.

[email protected]:~/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

Step 2 - Adicionar ERB Arquivo de modelo.

[email protected]:~/chef-repo $ subl cookbooks/<Cookbook Name>/templates/default/test.erb 
<%- 4.times do %> 
<%= @hi %>, <%= @world %> from <%= @from %>! 
<%- end %>

Step 3 - Carregue o livro de receitas modificado para o servidor Chef.

[email protected]:~/chef-repo $ knife cookbook upload <Cookbook Name> 
Uploading my_cookbook [0.1.0] 
Run Chef Client on your node: 
[email protected]:~$ 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

Step 4 - Valide o conteúdo do arquivo carregado.

[email protected]:~$ sudo cat /tmp/message 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm!

Fluxo de Trabalho

Chef usa Erubis como sua linguagem de modelo. Ele permite embutir código Ruby puro dentro de símbolos especiais nos modelos.

  • <% =%> é usado se você deseja imprimir o valor de uma variável ou expressão Ruby no arquivo gerado.

  • <% -%> é usado se você deseja embutir a lógica Ruby em seu arquivo de modelo. Nós o usamos para repetir nossa expressão quatro vezes.