Puppet - funções personalizadas

Conforme descrito no capítulo anterior, a função fornece ao usuário o privilégio de desenvolver funções personalizadas. O Puppet pode estender seu poder de interpretação usando funções personalizadas. A função personalizada ajuda a aumentar e estender o poder dos módulos do Puppet e arquivos de manifesto.

Escrevendo Função Personalizada

Existem algumas coisas que é preciso ter em mente antes de escrever uma função.

  • No Puppet, as funções são executadas por compiladores, o que significa que todas as funções são executadas no mestre Puppet e não precisam lidar com nenhum cliente do Puppet para o mesmo. As funções só podem interagir com os agentes, desde que as informações sejam na forma de fatos.

  • O Puppet master captura funções personalizadas, o que significa que é necessário reiniciar o Puppet master, se alguém fizer algumas alterações na função do Puppet.

  • A função será executada no servidor, o que significa que qualquer arquivo de que a função precisa deve estar presente no servidor, e não se pode fazer nada se a função requer acesso direto à máquina cliente.

  • Existem dois tipos diferentes de funções disponíveis, uma é a função Rvalue que retorna o valor e a função de instrução que não retorna nada.

  • O nome do arquivo que contém a função deve ser igual ao nome da função no arquivo. Caso contrário, ele não será carregado automaticamente.

Local para colocar a função personalizada

Todas as funções personalizadas são implementadas separadamente .rbarquivos e são distribuídos entre os módulos. É necessário colocar funções personalizadas em lib / puppet / parser / function. As funções podem ser carregadas de.rb arquivo dos seguintes locais.

  • $libdir/puppet/parser/functions
  • subdiretórios puppet / parser / functions em seu Ruby $ LOAD_PATH

Criação de uma nova função

Novas funções são criadas ou definidas usando o newfunction método dentro do puppet::parser::Functionsmódulo. É necessário passar o nome da função como um símbolo paranewfunctionmétodo e o código a ser executado como um bloco. O exemplo a seguir é uma função, que é usada para gravar uma string no arquivo dentro do diretório / user.

module Puppet::Parser::Functions 
   newfunction(:write_line_to_file) do |args| 
      filename = args[0] 
      str = args[1] 
      File.open(filename, 'a') {|fd| fd.puts str } 
   end 
end

Uma vez que o usuário tenha a função declarada, ela pode ser usada no arquivo de manifesto conforme mostrado abaixo.

write_line_to_file('/user/vipin.txt, "Hello vipin!")