2012-05-02 23 views
21

¿Es posible hacer una sustitución/transformación de cadena en Puppet usando una expresión regular?¿Sustitución de cadenas en Puppet?

Si $ hostname es "web1", quiero que $ hostname_without_number sea "web". Lo siguiente no es válida la sintaxis de marionetas, pero creo que necesito algo como esto:

$hostname_without_number = $hostname.gsub(/\d+$/, '') 

Respuesta

37

Sí, es posible.

Compruebe la referencia a una función de marionetas: http://docs.puppetlabs.com/references/2.7.3/function.html

Hay una función de sustitución de expresión regular construida en Probablemente llama a la misma función gsub subyacente..

$hostname_without_number = regsubst($hostname, '\d+$', '') 

O si lo prefiere llamar a cabo en realidad a Ruby, puede utilizar una plantilla en línea ERB:

$hostname_without_number = inline_template('<%= hostname.gsub(/\d+$/, "") %>') 
+1

Gracias! Usaré el regsubst incorporado() esta vez, ¡pero estoy muy contento de saber también sobre inline_template! Eso es muy flexible. – richardkmiller

+0

Vale la pena señalar que 'regsubst()' también admite un flags arg en la 4ª posición. Una bandera como 'G' reemplazará globalmente todas las coincidencias en la cadena proporcionada. – killthrush

Cuestiones relacionadas