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.