Con il carattere pipe si passa un valore a un filtro. Ci sono numerosi Jinja 2 filters ma Ansible brings some additional filters.
Il termine filtro può essere fonte di confusione a volte perché tutti i filtri funzionano in modo molto diverso. Alcuni, ad esempio, riducono un set di risultati di un hash/array, alcuni modificano il contenuto di una stringa, ma poi ci sono filtri che restituiscono semplicemente true o false.
Una spiegazione migliore potrebbe essere che quelli sono modificatori e possono fare qualsiasi cosa con i dati passati. Puoi anche write your own filters.
I filtri possono essere concatenati, passando il risultato dal primo filtro al successivo e così via. Funziona esattamente come i comandi di piping su una shell Unix.
"value" | filter1 | filter2 | filterN
Il filtro failed
ritorna true
se il risultato passato ha fallito. Controlla semplicemente la proprietà failed
da result
.
Il filtro changed
è lo stesso, ma verifica se il risultato passato ha delle modifiche. Controlla la proprietà changed
da result
.
ipaddr | replace(",", ".")
sostituisce tutte le occorrenze di ,
con .
. Quindi un valore di 127,0,0,1
verrà trasformato in 127.0.0.1
.
Il filtro default
imposterà un valore predefinito se l'input era nullo, ad es. una variabile indefinita. undefined_var | default("var was undefined")
-> Questo stamperà il contenuto di undefined_var
o la stringa "var wasdefinito". Nell'esempio sopra riportato, si emette il valore del 2 ° elemento di D
(D[1]
) e se invece non esiste il segno "non definito".
Hai controllato [jinja docs] (http://jinja.pocoo.org/docs/dev/templates/#filters)? – bereal