Chef - Plantillas

En Infraestructura, configuration managementse trata de lo bien que se configuran los hosts. En general, todas las configuraciones se realizan utilizando los archivos de configuración. Chef usa plantillas para poder llenar el archivo de configuración con valores dinámicos.

Chef proporciona plantillas como recurso que se puede utilizar en la receta. Los valores dinámicos de los archivos de configuración se pueden recuperar de paquetes de datos, atributos o incluso calcularlos pasándolos a la plantilla.

¿Cómo usarlo?

Step 1 - Agrega la plantilla a la receta.

[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 - Agregar ERB Archivo de plantilla.

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

Step 3 - Cargue el libro de cocina modificado en el servidor de 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 - Validar el contenido del archivo cargado.

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

Flujo de trabajo

Chef usa Erubis como lenguaje de plantilla. Permite incrustar código Ruby puro dentro de símbolos especiales en las plantillas.

  • <% =%> se usa si desea imprimir el valor de una variable o expresión Ruby en el archivo generado.

  • <% -%> se usa si desea incrustar lógica Ruby en su archivo de plantilla. Lo usamos para repetir nuestra expresión cuatro veces.