A partir de 0.24.8, ¿puede una plantilla de Puppet llamar a una función de Puppet?
Puedo obtener una funcionalidad similar llamando a la función en mi manifiesto, asignando el valor de retorno a una variable y luego usando lookupvar ('variable') en la plantilla, pero me gustaría eliminar al intermediario.
<%= scope.function_template("sites/$domain/config.erb") %>
<%= scope.function_template("sites/#{domain}/config.erb") %>
.Permítanme extender la pregunta también a funciones personalizadas . Básicamente, llama a las funciones personalizadas de la misma manera que a las funciones integradas (usando function_ prefix), pero asegúrese de pasar todos los parámetros en una matriz:
Tenga en cuenta que también funciona sin los corchetes en algunas versiones de Puppet. Más información: http://docs.puppetlabs.com/guides/custom_functions.html#referencing-custom-functions-in-templates
Otra cosa importante es que hay un error (o característica) en Puppet 2.6 o anterior donde las funciones personalizadas no se cargan automáticamente en el alcance de la plantilla. ¡Necesita cargarlos manualmente , de lo contrario no se encontrará la función!
Más información: http://projects.puppetlabs.com/issues/7991
fuente
No estoy completamente seguro de lo que quiere decir con una función Puppet, pero las plantillas de Puppet están integradas en Ruby, por lo que puede hacer cualquier cosa en las plantillas que pueda en Ruby.
fuente