2012-05-02 13 views
21

È possibile eseguire una sostituzione/trasformazione di stringa in Puppet utilizzando un'espressione regolare?Sostituzione delle marionette in Marionetta?

Se $ hostname è "web1", voglio che $ hostname_without_number sia "web". La seguente sintassi Puppet non è valida, ma penso di aver bisogno di qualcosa di simile:

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

risposta

37

Sì, è possibile.

Controllare il riferimento alla funzione di marionette: http://docs.puppetlabs.com/references/2.7.3/function.html

C'è una funzione di sostituzione di un'espressione regolare costruita nel Chiede probabilmente la stessa funzione gsub sottostante..

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

O se si preferisce chiamare in realtà fuori a Ruby, è possibile utilizzare un modello in linea ERB:

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

Grazie! Userò il regsubst() integrato questa volta, ma sono molto contento di sapere anche inline_template! È molto flessibile. – richardkmiller

+0

Vale la pena sottolineare che 'regsubst()' supporta anche un flag arg nella 4a posizione. Un flag come 'G' sostituirà globalmente tutte le corrispondenze nella stringa fornita. – killthrush

Problemi correlati