La ou ansible utiliser jinja2 pour les templates, puppet utiliser ERB.

La documentation de puppet dit ceci sur les templates, mais voici un exemple d'utilisation résumant les cas les plus courant :

  • template avec variables
  • template avec nested loop
  • template aec conditions (si variable définie)

dans /etc/puppet/code :

cat environments/production/manifests/site.pp


$nameservers = ['8.8.8.8','8.8.4.4']
$search = 'free.fr'
$mydomain = 'pepiniere.local'

file { '/etc/resolv.conf.new':
  ensure  => file,
  owner   => 'root',
  group   => 'root',
  mode    => '0644',
  content => template('resolver/resolv.conf.erb'),
}


cat environments/production/modules/resolver/templates/resolv.conf.erb


# Resolv.conf generated by Puppet

<% [@nameservers].flatten.each do |ns| -%>
nameserver <%= ns %>
<% end -%>
<% unless @search.nil? -%>
search <%= [@search].flatten[0..5].join(' ') %>
<% end -%>
<% unless @mydomain.nil? -%>
domain <%= @mydomain %>
<% end -%>