GNU/Linux >> Belajar Linux >  >> Linux

Cara Menggunakan Template Jinja2 di Ansible Playbook

Jinja2 adalah mesin templating berbasis python yang kuat dan mudah digunakan yang berguna di lingkungan TI dengan banyak server di mana konfigurasi bervariasi setiap saat. Membuat file konfigurasi statis untuk masing-masing node ini membosankan dan mungkin bukan pilihan yang tepat karena akan menghabiskan lebih banyak waktu dan energi. Dan disinilah peran template.

Template Jinja2 adalah file template sederhana yang menyimpan variabel yang dapat berubah dari waktu ke waktu. Saat Playbook dijalankan, variabel-variabel ini diganti dengan nilai aktual yang ditentukan dalam Playbook yang Mungkin. Dengan cara ini, templating menawarkan solusi yang efisien dan fleksibel untuk membuat atau mengubah file konfigurasi dengan mudah.

Dalam panduan ini, kami akan fokus pada bagaimana Anda dapat mengonfigurasi dan menggunakan template Jinja2 di buku pedoman Ansible.

Arsitektur template

File template Jinja2 adalah file teks yang berisi variabel yang dievaluasi dan diganti dengan nilai aktual saat runtime atau eksekusi kode. Dalam file template Jinja2, Anda akan menemukan tag berikut:

  • {{ }} :Tanda kurung kurawal ganda ini adalah tag yang banyak digunakan dalam file template dan digunakan untuk menyematkan variabel dan akhirnya mencetak nilainya selama eksekusi kode. Misalnya, sintaks sederhana menggunakan kurung kurawal ganda adalah seperti yang ditunjukkan:{{ server web }} berjalan di  {{ nginx-version }}
  • {%  %} :Ini sebagian besar digunakan untuk pernyataan kontrol seperti loop dan pernyataan if-else.
  • {#  #} :Ini menunjukkan komentar yang menjelaskan tugas.

Dalam kebanyakan kasus, file template Jinja2 digunakan untuk membuat file atau mengganti file konfigurasi di server. Selain itu, Anda dapat melakukan pernyataan bersyarat seperti loop dan jika-lain pernyataan, dan mengubah data menggunakan filter dan banyak lagi.

File template memuat .j2 ekstensi, menyiratkan bahwa templating Jinja2 sedang digunakan.

Membuat file template

Berikut adalah contoh file template Jinja2 example_template.j2 yang akan kita gunakan untuk membuat file baru dengan variabel  yang ditampilkan

Hey guys!
Apache webserver {{ version_number }} is running on {{ server }}
Enjoy!

Di sini, variabelnya adalah {{ version_number }} &{{ server }

Variabel ini didefinisikan dalam playbook dan akan diganti dengan nilai aktual dalam file YAML playbook example1.yml di bawah ini.

Saat buku pedoman dijalankan, variabel dalam file template diganti dengan nilai sebenarnya dan file baru dibuat atau menggantikan file.txt yang sudah ada. di jalur tujuan.

Dari eksekusi playbook, lihat tujuan dan perhatikan bahwa variabel telah diganti dengan nilai yang ditentukan dalam file playbook Ansible.

Untuk mendapatkan pemahaman yang lebih baik tentang bagaimana Anda dapat mendorong file konfigurasi, kita akan membuat template Jinja2 yang membuat index.html file di root web atau direktori dokumen /var/www/html pada server CentOS 7. Apache sudah berjalan dan menampilkan halaman selamat datang default seperti yang ditunjukkan,

File template, index.html.j2 muncul seperti yang ditunjukkan. Perhatikan keberadaan ansible_hostname variabel yang merupakan variabel bawaan. Saat playbook dijalankan, ini akan diganti dengan nama host server web.

<html>
    <center><h1> The Apache webserver is running on {{ ansible_hostname }} </h1>
    </center>
</html>

File playbook ditunjukkan di bawah ini.

Saat playbook dijalankan, file index.html baru dibuat dan seperti yang Anda lihat, variabel ansible_hostname telah diganti dengan nama host server yang sebenarnya, dalam hal ini, Centos-7.

Templat Jinja2 dengan Persyaratan

Templat Jinja2 juga dapat digunakan dengan pernyataan bersyarat seperti perulangan for untuk mengulangi daftar item. Perhatikan contoh Playbook2.yml seperti yang ditunjukkan pada gambar di bawah ini:Kami akan membuat template yang akan mengulangi daftar model mobil yang disebut 'mobil' dan mencetak hasilnya di file tujuan file2.txt.

Perulangan for dalam file template Jinja2 – example2_template.j2 – seperti yang ditunjukkan

Saat buku pedoman dijalankan, loop berulang di atas daftar mobil, dan mencetak model mobil di file tujuan. Anda dapat menggunakan perintah cat untuk memeriksa output dan memverifikasi di mana model ada dalam file.

Templat Jinja2 dengan filter

Filter digunakan untuk mengubah tampilan keluaran atau pemformatan data. Ini bekerja dengan menyalurkan nama variabel seperti yang ditunjukkan:

{{ variabel | argumen }}

Mari kita periksa beberapa kasus penggunaan:

a) Mengubah string menjadi format huruf besar atau huruf kecil

Misalnya, untuk mencetak nilai dalam daftar sebelumnya dalam karakter huruf besar menggunakan template, hubungkan item variabel ke dalam argumen 'UPPER' seperti yang ditunjukkan:{{ item | atas }}

Saat buku pedoman dijalankan, nilainya diubah menjadi huruf besar

Jika nilainya dalam huruf kecil dari awal, gunakan argumen 'lebih rendah'.

{{ barang | lebih rendah }}

b) Gunakan filter daftar untuk menampilkan nilai maksimum &minimum

Jika Anda bekerja dengan array atau daftar di dalam template seperti yang ditunjukkan, Anda dapat memilih untuk mencetak nilai pilihan Anda berdasarkan kriteria tertentu.

Misalnya, untuk mencetak nilai minimum dalam daftar, teruskan seluruh daftar ke 'min ' filter seperti yang ditunjukkan.

{{ [ 100, 37, 45, 65, 60, 78 ] | min }}     =>   37

Untuk mendapatkan nilai maksimum, gunakan filter  ‘maks’ .

{{ [ 100, 37, 45, 65, 60, 78 ] | maks }}     =>   100

Anda dapat memperoleh nilai unik dari daftar nilai duplikat dalam larik menggunakan filter unik seperti yang ditunjukkan:

{{ [ 3, 4, 3, 3, 4, 2, 2] | unik }}     =>   3,4,2

c) Mengganti nilai string dengan yang lain

Selain itu, Anda dapat mengganti string dengan yang baru menggunakan argumen ganti seperti yang ditunjukkan

{{ ”Halo teman-teman” | ganti (“guys”, “world”) }} => Halo dunia

Pada contoh di atas, string guys akan diganti dengan world dan sekarang pernyataannya akan berbunyi:

Halo dunia

Ini hanya beberapa filter. Ada banyak filter bawaan yang dapat Anda gunakan untuk memanipulasi output dari eksekusi PlayBook yang Dimungkinkan.

Template Jinja2 adalah solusi ideal saat menangani variabel dinamis dalam file konfigurasi. Ini adalah opsi yang jauh lebih efisien daripada mengubah nilai secara manual yang seringkali membutuhkan banyak waktu dan bisa sangat membosankan. Umpan balik Anda tentang artikel ini sangat diharapkan.

Baca Juga :Cara Mengganti String dan Garis dengan Ansible

Baca Juga :  Cara Membuat Peran yang Mungkin dan Menggunakannya di Playbook


Linux
  1. Cara membuat Playbook yang Mungkin

  2. Bagaimana cara meneruskan variabel tambahan ke buku pedoman Ansible

  3. Bagaimana Cara Menggunakan Jenis File Di Vim?

  1. Cara Membuat File di Ansible

  2. Cara Menggunakan Tag di Ansible Playbook (Contoh)

  3. Bagaimana cara menggunakan chmod untuk mengubah izin file?

  1. Cara Mengunduh dan Menggunakan Ansible Galaxy Roles di Ansible Playbook

  2. Cara Menggunakan Ansible Vault untuk Mengamankan Data Sensitif

  3. Cara Menggunakan Variabel dalam Ansible Playbook