Chef - Modèles

Dans l'infrastructure, configuration managementtout dépend de la façon dont on configure les hôtes. En général, toutes les configurations se font à l'aide des fichiers de configuration. Chef utilise des modèles pour pouvoir remplir le fichier de configuration avec des valeurs dynamiques.

Chef fournit des modèles comme ressource qui peut être utilisée dans la recette. Les valeurs dynamiques des fichiers de configuration peuvent être récupérées à partir des sacs de données, des attributs ou même les calculer en les passant dans le modèle.

Comment l'utiliser?

Step 1 - Ajoutez le modèle à la recette.

[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 - Ajouter ERB Fichier modèle.

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

Step 3 - Téléchargez le livre de recettes modifié sur le serveur 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 - Validez le contenu du fichier téléchargé.

[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!

Flux de travail

Chef utilise Erubis comme langage de modèle. Il permet d'incorporer du code Ruby pur dans des symboles spéciaux dans les modèles.

  • <% =%> est utilisé si vous souhaitez imprimer la valeur d'une variable ou d'une expression Ruby dans le fichier généré.

  • <% -%> est utilisé si vous souhaitez incorporer la logique Ruby dans votre fichier modèle. Nous l'utilisons pour boucler notre expression quatre fois.