GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menggunakan Template Jinja2 di Ansible

Jinja2 adalah salah satu mesin template berbasis python yang paling kuat dan terkenal. Ini paling populer untuk pengguna Ansible karena bahasa pemrograman yang sama. Ini membantu banyak personel TI dalam banyak hal. Template Jinja2 dapat mengakses variabel dengan cara yang memungkinkan. Di Ansible, diperlukan untuk mengubah banyak hal untuk setiap server yang menghabiskan banyak waktu. Jadi, dengan menggunakan templating jinja2, seseorang hanya dapat mengubah variabel ke templat tersebut yang menghasilkan penghematan banyak waktu dan lingkungan yang mudah.

Mungkin, template jinja2 digunakan untuk mengakses variabel. Jadi mengubah variabel sesuai kebutuhan pada suatu waktu dapat membantu playbook yang memungkinkan untuk menghemat banyak waktu. Template Jinja2 dilengkapi dengan filter bawaan, dan pengguna hanya dapat memanipulasi filter tersebut dalam mengonfigurasi banyak file untuk playbook yang mulus.

Ini memiliki banyak fitur lainnya. Beberapa di antaranya tercantum di bawah ini.

  • Ini cukup sederhana untuk tujuan debugging
  • Pewarisan template didukung dengan baik
  • Ini sangat cepat dan mudah dikompilasi

Dalam artikel ini, kita akan membahas penggunaan template jinja2 dan proses untuk mengkonfigurasinya.

Variabel yang diakses oleh template Jinja2

Template Jinja2 dapat mengakses variabel dalam ansible. Pada node kontrol yang memungkinkan, tulis file template jinja2 yang dapat dengan mudah mengakses variabel yang ditentukan dalam direktori yang sama atau di buku pedoman.

Kita akan menulis sebuah contoh yang menunjukkan template jinja2 mengakses dan memanipulasi nilai dengan mengakses variabel. Di sini, buku pedomannya adalah jinja2_var_example.yml

Sekarang, mari kita jalankan buku pedoman jinja2_var_example.yml

Di sini, Anda dapat melihat nilainya berubah pada output. Karena {{ }} juga merupakan sintaks template jinja2, ia dapat mengakses variabel dan mengubah nilainya menjadi yang sebenarnya.

Contoh lain yang menunjukkan template jinja2 mengakses variabel. Di sini, kita akan membuat folder kemudian menulis template jinja2 “nginx.conf.j2” karena j2 adalah ekstensi untuk template jinja2.

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

Kemudian kita akan menulis file menggunakan template jinja2 dimana variabel digunakan. Variabel tersebut dapat didefinisikan pada file yang berbeda atau pada buku pedoman yang dapat dimanipulasi sesuai kebutuhan pada saat itu.

Anda pasti telah memperhatikan variabel {{ http_port }} dan {{ http_host }} pada tangkapan layar di atas.

Sekarang, kita akan menulis buku pedoman yang terdiri dari nilai sebenarnya dari variabel yang disertakan dalam file template jinja2.

Setelah playbook berhasil dijalankan, variabel akan diganti dengan nilai aktual dalam file jalur tujuan.

Anda dapat melihat nilainya berubah pada tangkapan layar di bawah ini.

Ini adalah contoh yang menunjukkan template jinja2 sedang mengakses variabel dan menampilkan nilai sebenarnya pada hasil akhir.

Kondisi dalam template jinja2

Pernyataan bersyarat seperti for loop dapat digunakan oleh template jinja2. Loop membantu mengulangi item dalam rentang, daftar, dan sebagainya. Di sini, kami menulis sebuah contoh untuk menunjukkan perulangan for yang digunakan dalam template jinja2.

Sebagai contoh, kita akan menulis file template kita “ server_hosts.j2” seperti screenshot berikut.

$ cat server_hosts.j2

Keluaran:

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

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

{% endfor %}

Ini akan mengulangi semua host dalam inventaris. Untuk setiap host, nilai semua variabel yang digunakan dalam template akan ditampilkan.

Pada node kontrol, kita akan menulis buku pedoman “conditional.yml” termasuk file template jinja2 di atas di dalamnya.

$ sudo vim conditional.yml

Sekarang, kami menjalankan buku pedoman “conditional.yml”

$ ansible-playbook conditional.yml

Sekarang, kita dapat melihat hasilnya pada node host apakah file /etc/hosts sedang diupdate atau tidak.

Ini adalah hasil akhir dari variabel kami dalam file template jinja2 yang diulang di semua host dalam inventaris. Jadi pernyataan kondisional seperti for loop juga dapat digunakan dalam file template jinja2.

Filter yang digunakan dalam template jinja2

Jika Anda ingin output berbeda atau diformat, Anda dapat menggunakan filter. Anda bisa menyalurkan variabel dengan argumen seperti yang ditunjukkan di bawah ini.

{{ variable | argument }}

Di sini, kita akan menulis file template jinja2 “jinja_filters.j2” untuk menampilkan filter yang digunakan pada file template jinja2.

$ vim jinja_filters.j2

Kami akan menulis buku pedoman “filters.yml” yang terdiri dari file template jinja2.

$ vim filters.yml

Sekarang, kami menjalankan buku pedoman “filters.yml”

Sekarang, kita dapat melihat hasilnya pada node host apakah file tujuan dibuat dengan konten huruf besar atau tidak.

Di sini, Anda dapat melihat semua teks dalam huruf besar karena kami telah menggunakan filter dengan memasukkan item variabel ke dalam argumen huruf besar.

Kesimpulan

Anda dapat menggunakan file template jinja2 seperti itu sesuai kebutuhan Anda untuk memanipulasi variabel dan data untuk menghemat waktu dan kelancaran playbook jika memungkinkan. Anda juga dapat menggunakan filter untuk memanipulasi angka dari tinggi ke rendah dan seterusnya. Coba jelajahi template jinja2 untuk lebih banyak fitur. Terima kasih!


Ubuntu
  1. Cara Menggunakan Perintah Apt-Get di Linux

  2. Cara Menggunakan Perintah Sudo di Linux

  3. Bagaimana cara menggunakan perintah nama dasar?

  1. Cara Menggunakan Perintah nama host di Linux

  2. Cara Menggunakan Perintah Passwd Di Linux

  3. Cara Menggunakan Perintah dinding di Linux

  1. Cara Menggunakan Perintah Modprobe Di Linux

  2. Cara Menggunakan Perintah vmstat

  3. Cara Menggunakan Perintah w di Linux dengan Contoh