O que você está procurando fazer é chamado de modelo. É uma característica central do Puppet e muito útil. Você escreve um arquivo no formato eRB que pode usar variáveis Ruby e Facter para construir um arquivo. Aqui está um exemplo:
file { '/etc/my_config_file':
ensure => present,
owner => 'root',
group => 'root',
mode => 0700,
content => template('module/my_config_file.erb'),
}
Agora, na hierarquia de módulos em templates/ ( não files/ ), coloque um arquivo my_config_file.erb :
this=that
location=<%= LOCATION_NUMBER %>
bananas=tasty
O formato <%= %> diz para executar algum código Ruby e retornar o resultado. Nesse caso, todos os fatos estão disponíveis como variáveis locais, como ipaddress , lsbmajdistrelease ou LOCATION_NUMBER (seu fato personalizado). Você também pode usar qualquer outro código Ruby que não retorne diretamente um resultado dentro de <% %> , como if declarações:
<% if LOCATION_NUMBER == 7 %>
custom_config=true
<% else %>
custom_config=false
<% end %>
Editar : Ao reler essa resposta, gostaria de sugerir que você não use letras maiúsculas para o nome do seu Fato. Em Ruby, uma variável que começa com uma letra maiúscula é imutável. Embora não tenha certeza de que isso seja realmente um problema, isso vai contra as convenções.