Eu estava exatamente na mesma situação há algum tempo atrás. Basicamente, para modelos erb a serem usados pelo fantoche, você não precisa de muito conhecimento sobre Ruby. Mas, isso também depende da complexidade e propósito de seus módulos de fantoches.
Se, por exemplo, você vai usá-los principalmente para arquivos de configuração para gerenciamento de servidores, então, na maioria das vezes, você precisaria manipular as coisas como endereços IP e nomes de host. E as funções Ruby mais comumente usadas que você encontra são split
e join
.
A maneira mais fácil de mexer com essas e outras funções seria instalar o ruby e seu shell interativo, irb e testar seu código. Então ... uma folha de cola, eu não sei. Eu gritei pessoal no estouro de pilha e #ruby no irc! Eu tenho um monte de modelos aqui link (mal organizado!), Que pode ajudá-lo.
Com relação à consulta da instrução de caso, você pode ter algo assim (uma das abordagens possíveis):
$ip1=inline_template('<%= ipaddress.split(".")[0..2].collect{|x| x}.join(".") %>')
$source = $ip1 ? {
"10.0.0" => "puppet:///your-module-name/resolv.conf.1",
"10.0.1" => "puppet:///your-module-name/resolv.conf.2",
}
file {"/etc/resolv.conf":
ensure => present,
source => $source,
}
A parte do modelo é explicada como: dividir o ipaddress da máquina cliente obtida do facter em cada ocorrência de um DOT ".", coletar os três primeiros números e uni-los a um DOT entre cada elemento. Armazene isso como variável ip1
. De acordo com esse valor, atenda o arquivo resolv.conf necessário do servidor de arquivos do fantoche.