GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come utilizzare il modello Jinja2 in Ansible

Jinja2 è uno dei motori di template basati su Python più potenti e famosi. È più popolare per gli utenti Ansible a causa dello stesso linguaggio di programmazione. Aiuta molto personale IT in molti modi. Il template Jinja2 è in grado di accedere alle variabili in ansible. In Ansible, è necessario modificare molte cose su ciascun server, il che richiede molto tempo. Quindi, usando il modello jinja2, è possibile modificare le variabili solo in quel modello, il che si traduce in un notevole risparmio di tempo e in un ambiente facile.

In ansible, viene utilizzato un modello jinja2 per accedere alle variabili. Quindi cambiare la variabile secondo necessità alla volta può aiutare i playbook ansible a risparmiare molto tempo. Il modello Jinja2 viene fornito con filtri integrati e gli utenti possono manipolare tali filtri solo nella configurazione di molti file per i playbook fluidi.

Ha molte altre caratteristiche. Alcuni di essi sono elencati di seguito.

  • È abbastanza semplice a scopo di debug
  • L'ereditarietà dei modelli è ben supportata
  • È molto veloce e facilmente compilabile

In questo articolo, discuteremo gli usi del modello jinja2 e il processo per configurarlo.

Variabili accessibili dal modello Jinja2

Il modello Jinja2 può accedere alle variabili in ansible. Su un nodo di controllo ansible, scrivi un file modello jinja2 che possa accedere facilmente alle variabili definite nella stessa directory o nel playbook.

Scriveremo un esempio che mostra il modello jinja2 che accede e manipola i valori accedendo alle variabili. Qui, il playbook è jinja2_var_example.yml

Ora eseguiamo il playbook jinja2_var_example.yml

Qui puoi notare che il valore viene modificato sull'output. Poiché {{ }} è anche una sintassi del modello jinja2, può accedere alla variabile e modificare il valore in quello effettivo.

Un altro esempio che mostra il modello jinja2 che accede alla variabile. Qui creeremo una cartella, quindi scriveremo un modello jinja2 "nginx.conf.j2" poiché j2 è l'estensione per il modello jinja2.

$ mkdir jinja2_variable
$ cd jinja2_variable/
$ vim nginx.conf.j2

Quindi scriveremo un file utilizzando il modello jinja2 in cui vengono utilizzate le variabili. Tali variabili possono essere definite su file diversi o su playbook che possono essere manipolati secondo necessità in quel momento.

Devi aver notato le variabili {{ http_port }} e {{ http_host }} nello screenshot sopra.

Ora scriveremo il playbook che consiste nel valore effettivo delle variabili incluse nel file modello jinja2.

Dopo che il playbook è stato eseguito correttamente, le variabili verranno sostituite dai valori effettivi nel file del percorso di destinazione.

Puoi notare che i valori sono cambiati nello screenshot qui sotto.

Questi sono gli esempi che mostrano che il modello jinja2 accede alle variabili e visualizza i valori effettivi sull'output finale.

Condizionale nel modello jinja2

Le istruzioni condizionali come i cicli for possono essere utilizzate dal modello jinja2. I loop aiutano a scorrere gli elementi in un intervallo, un elenco e così via. Qui, stiamo scrivendo un esempio per mostrare il ciclo for utilizzato nel modello jinja2.

Ad esempio, scriveremo il nostro file modello "server_hosts.j2" come lo screenshot seguente.

$ cat server_hosts.j2

Risultato:

{% for host in groups['all'] %}

{{ hostvars[host].ansible_facts.default_ipv4.address }} {{ hostvars[host].ansible_facts.fqdn }} {{ hostvars[host].ansible_facts.hostname }}

{% endfor %}

Itererà su tutti gli host nell'inventario. Per ogni host verrà visualizzato il valore di tutte le variabili utilizzate nel modello.

Sul nodo di controllo, scriveremo un playbook "conditional.yml" che include il file modello jinja2 sopra.

$ sudo vim conditional.yml

Ora stiamo eseguendo il playbook "conditional.yml"

$ ansible-playbook conditional.yml

Ora possiamo vedere il risultato sul nodo host se il file /etc/hosts viene aggiornato o meno.

È il risultato finale delle nostre variabili nel file modello jinja2 ripetuto su tutti gli host nell'inventario. Quindi le istruzioni condizionali come i cicli for possono essere utilizzate anche nei file modello jinja2.

Filtri utilizzati nel modello jinja2

Se vuoi che l'output sia diverso o formattato, puoi usare i filtri. Puoi semplicemente reindirizzare le variabili con gli argomenti come mostrato di seguito.

{{ variable | argument }}

Qui, scriveremo un file modello jinja2 "jinja_filters.j2" per mostrare i filtri utilizzati nel file modello jinja2.

$ vim jinja_filters.j2

Scriveremo un playbook "filters.yml" che consiste in un file modello jinja2.

$ vim filters.yml

Ora stiamo eseguendo il playbook "filters.yml"

Ora possiamo vedere il risultato sul nodo host se il file di destinazione viene creato con il contenuto in maiuscolo o meno.

Qui puoi vedere tutto il testo è in maiuscolo poiché abbiamo usato il filtro inserendo l'elemento delle variabili nell'argomento maiuscolo.

Conclusione

È possibile utilizzare tali file modello jinja2 secondo le proprie esigenze per manipolare le variabili e i dati per risparmiare tempo e un funzionamento regolare dei playbook su ansible. Puoi anche usare i filtri per manipolare i numeri dall'alto al basso e così via. Prova a esplorare il modello jinja2 per ulteriori funzionalità. Grazie!


Ubuntu
  1. Come utilizzare il comando Apt-Get in Linux

  2. Come utilizzare il comando sudo in Linux

  3. Come utilizzare il comando hostname in Linux

  4. Come utilizzare il comando Passwd in Linux

  5. Come utilizzare il comando basename?

Come utilizzare il comando locate in Linux

Come utilizzare le variabili in Ansible Playbook

Come utilizzare il modello Jinja2 in Ansible Playbook

Come usare Ansible per configurare Vim

Come utilizzare il comando Linux Top

Come usare l'Hud?