Direi che il controllo dipende dal fatto che si desideri un'alternativa quando la variabile non è definita.
sto usando le seguenti regole:
richiesto variabile
check nello script fantoccio se la variabile contiene il valore atteso prima di considerare anche modello di rendering:
if $myvar == undef {
fail {"You really must set myvar, seriously."}
}
if ! $anothervar {
fail {"anothervar is false, undefined or empty."}
}
Si può fare la tua vita più semplice impostando il tipo di parametri in modo esplicito. Questo risparmia i confronti e le conversioni.
Nel modello, è sufficiente scrivere le variabili allora:
<%= @myvar %>
<%= @anothervar %>
variabile opzionale che deve essere definito
Se si assume viene definita la variabile, è possibile trattarlo come booleano.
La mappatura è la seguente (source):
- falsey: stringa vuota, false, undef
- truthy: tutto il resto
In Puppet> = 4:
- Falsey: false, undef
- truthy: tutto il resto
Esempi:
di stampa 'qualcosa' se @myvar vale true, altrimenti 'qualcos'altro'.
<% if @myvar %>something<% else %>something else<% end %>
di stampa 'qualcosa' se @myvar restituisce true @myvar
<% if @myvar %>something<% end %>
stampa se si restituisce true, altrimenti% 'alternativa'>
<%= @myvar ? @myvar : 'alternative' %>
variabile opzionale che può essere definito
Se non si è certi che una variabile sia definita e non si vogliano fare ipotesi errate, ch eck nel modello.
Esempi:
stampa 'qualcosa' seguita da @myvar se @myvar è definito e non vuoti
<% if defined?(@myvar) && ! @myvar.empty? %>something<%= @myvar %><% end %>
@myvar di stampa se è definito e maggiore di 10
<%= @myvar if defined?(@myvar) && @myvar > 10 %>
La pagina puppetlabs è stata spostata in https://docs.puppet.com/puppet/latest/reference/lang_template_erb.html#testing-for-undefined-variables –
Che ne dici del controllo, se è definita una risorsa_? In un manifest di Puppet, farei if (if (defined (File ['/ home/foo'])) '- che dire di erb-templates? –