mungkin

Cara Menggunakan Modul Template yang Mungkin

Cara Menggunakan Modul Template yang Mungkin
Kemungkinan templat modul terutama digunakan untuk menyalin file dari klien Ansible (di mana Ansible diinstal) ke host Ansible (dikelola oleh Ansible). Manfaat menggunakan templat modul, bukan salinan modul, apakah itu Ansible templat modul dapat menggunakan bahasa templating Jinja2. Jinja2 adalah bahasa templating Python yang kuat di mana Anda dapat menghasilkan file konfigurasi, halaman web, dll. Anda juga dapat menggunakan variabel fakta yang mungkin, loop, dan kondisi di template Jinja2 Anda.

Artikel ini akan menunjukkan cara menggunakan Ansible templat modul dan beberapa dasar bahasa templating Jinja2. Jadi, mari kita mulai!

Prasyarat


Jika Anda ingin mencoba contoh di artikel ini:

1) Anda harus menginstal Ansible di komputer Anda.

2) Anda harus memiliki setidaknya host Ubuntu/Debian atau host CentOS/RHEL 8 yang dikonfigurasi untuk otomatisasi yang memungkinkan.

Ada banyak artikel di LinuxHint yang didedikasikan untuk Menginstal Ansible dan mengonfigurasi host untuk otomatisasi Ansible. Anda dapat memeriksa ini juga, jika perlu.

Menyiapkan Direktori Proyek yang Mungkin

Sebelum kita melanjutkan lebih jauh, ada baiknya untuk membuat struktur direktori proyek, hanya untuk menjaga agar sedikit teratur.

Untuk membuat direktori proyek template-demo/ dan semua subdirektori yang diperlukan (di direktori kerja Anda saat ini), jalankan perintah berikut:

$ mkdir -pv template-demo/playbooks/templates

Setelah direktori proyek dibuat, navigasikan ke direktori proyek, sebagai berikut:

$ cd template-demo/

Membuat tuan rumah berkas inventaris, sebagai berikut:

$ nano host

Kemudian, tambahkan IP host atau nama DNS Anda (vm1.simpul.com dan vm2.simpul.com) dalam file inventaris.

Setelah Anda selesai dengan langkah ini, simpan file dengan menekan + X, diikuti oleh kamu dan .

Buat file konfigurasi Ansible di direktori proyek, sebagai berikut:

$ nano mungkin.cfg

Kemudian, ketik baris berikut di mungkin.cfg mengajukan.

Setelah menyelesaikan langkah ini, simpan file dengan menekan + X, diikuti oleh kamu dan .

Pada titik ini, direktori proyek akan terlihat sebagai berikut:

$pohon

Seperti yang Anda lihat, host Ansible juga dapat diakses. Jadi, kita bisa melanjutkan ke bagian selanjutnya dari artikel ini.

$ mungkin semua -u mungkin -m ping

Dasar-dasar Modul Template yang Mungkin

Itu templat modul Ansible menerima opsi yang sama dengan salinan modul Ansible.

Kemungkinan Umum templat pilihan modul:

src - Jalur file template Jinja2 di komputer Anda, yang akan diuraikan oleh bahasa template Jinja2 dan disalin ke host jarak jauh.
tujuan - Jalur tujuan pada host jarak jauh tempat file akan disalin.
pemilik - Pemilik file di host jarak jauh.
kelompok - Grup file di host jarak jauh.
mode - Mode izin file pada host jarak jauh.

Mari kita lihat sebuah contoh.

Pertama, buat buku pedoman Ansible baru copy_file_template1.yaml dalam buku pedoman/ direktori, sebagai berikut:

$ nano buku pedoman/copy_file_template1.yaml

Kemudian, ketik baris berikut di copy_file_template1.yaml buku pedoman.

- tuan rumah: semua
pengguna: mungkin
tugas:
- nama: Salin indeks.file html ke server
pola:
src: indeks.jinja2
tujuan: /home/ansible/index.html
pemilik: mungkin
grup: mungkin
modus: 0644

Buku pedoman ini akan menyalin indeks.jinja2 file dari buku pedoman/templat/ direktori (relatif terhadap direktori proyek Anda) ke host jarak jauh menggunakan Ansible templat modul.

Setelah Anda selesai dengan langkah ini, simpan file dengan menekan + X, diikuti oleh kamu dan .

Buat indeks.jinja2 file template di buku pedoman/templat direktori, sebagai berikut:

$ nano buku pedoman/templat/indeks.jinja2

Ketik baris berikut di indeks.jinja2 berkas templat:




Demo Template Jinja2


Selamat datang di Linuxhint!



Ini hanya file HTML biasa. Saya tidak menggunakan sintaks Jinja2 mewah di sini.

Setelah Anda selesai dengan langkah ini, simpan file dengan menekan + X, diikuti oleh kamu dan .

Jalankan buku pedoman copy_file_template1.yaml sebagai berikut:

$ playbook yang memungkinkan-playbook/copy_file_template1.yaml

Playbook harus berjalan dengan sukses.

Seperti yang Anda lihat, indeks.jinja2 template dirender menggunakan bahasa template Jinja22. Konten yang dirender harus disalin ke indeks.html file host jarak jauh.

Mencetak Variabel dalam Template Jinja2

Anda dapat menggunakan fakta, variabel, dan variabel yang ditentukan pengguna di templat Jinja2 Anda.

Pada template Jinja2 Anda, Anda dapat mencetak nilai variabel menggunakan variable nama variabel sintaksis. Jika variabel adalah objek, Anda dapat mencetak properti objek individual menggunakan using variabel objek.Nama properti sintaksis.

Dalam contoh berikut, kami akan mencetak tanggal milik dari mungkin_tanggal_waktu objek di kami indeks.jinja2 templat.

$ ansible all -u ansible -m setup | egrep --color 'tanggal|waktu'

Pertama, buka indeks.jinja2 file template dengan editor teks nano, sebagai berikut:

$ nano buku pedoman/templat/indeks.jinja2

Tambahkan baris berikut ke indeks.jinja2 berkas templat:

Halaman dibuat pada ansible_date_time.tanggal

Akhir indeks.jinja2 file akan terlihat seperti yang ditunjukkan pada gambar di bawah.

Setelah Anda selesai dengan langkah ini, simpan file dengan menekan + X, diikuti oleh kamu dan .

Jalankan buku pedoman copy_file_template1.yaml sebagai berikut:

$ playbook yang memungkinkan-playbook/copy_file_template1.yaml

Seperti yang Anda lihat, indeks.jinja2 templat diproses oleh bahasa templating Jinja2 dan menggantikan kemungkinan_tanggal_waktu.tanggal variabel dengan tanggal di YYYY-MM-DD format. Outputnya kemudian disalin ke indeks.html file di host jarak jauh.

Pernyataan Bersyarat jika dalam Template Jinja2

Bahasa templating Jinja2 mendukung kondisional jika pernyataan. Anda dapat memeriksa variabel tertentu sebelum mencetak apa pun menggunakan jika pernyataan.

Jinja2 jika sintaksnya adalah sebagai berikut:

% jika kondisi %
Lakukan sesuatu jika kondisinya benar
% berakhir jika %

Mari kita lihat contoh Jinja2 jika pernyataan.

Di bagian ini, saya akan mendemonstrasikan Jinja2 jika pernyataan menggunakan distribusi_mungkin variabel fakta.

$ ansible all -u ansible -m setup | egrep --warna 'dist'

Pertama, buka indeks.jinja2 Template Jinja2 dengan editor teks nano, sebagai berikut:

$ nano buku pedoman/templat/indeks.jinja2

Selanjutnya, tambahkan baris berikut di indeks.jinja2 berkas templat:

% jika distribusi_mungkin == "Debian" %

Anda menjalankan Debian Linux


% berakhir jika %

Di sini, saya telah memeriksa jika distribusi_mungkin aku s Debian. Jika ya, maka cetak string

Anda menjalankan Debian Linux

. Jika tidak, jangan dicetak.

Akhirnya, indeks.jinja2 file template akan terlihat seperti yang ditunjukkan pada gambar di bawah.

Setelah Anda mengedit file, simpan file dengan menekan + X, diikuti oleh kamu dan .

Sekarang, jalankan buku pedoman copy_file_template1.yaml sebagai berikut:

$ playbook yang memungkinkan-playbook/copy_file_template1.yaml

Seperti yang Anda lihat, pada remote host Debian saya, indeks.html file memiliki garis

Anda menjalankan Debian Linux

. Namun, pada Host jarak jauh CentOS saya, salurannya tidak ada. Jadi, Jinja2 jika kondisi berfungsi.

Conditional: Pernyataan if-else di Jinja2 Template

Bahasa templating Jinja2 mendukung kondisional jika-lain pernyataan. Anda dapat mencetak satu hal jika kondisinya cocok dan mencetak sesuatu yang lain jika tidak menggunakan jika-lain pernyataan.

Jinja2 jika-lain sintaksnya adalah sebagai berikut:

% jika kondisi %
Lakukan sesuatu jika kondisinya benar
% lain %
Lakukan sesuatu jika kondisinya salah
% berakhir jika %

Mari kita lihat contoh Jinja2 jika-lain pernyataan.

Pertama, buka indeks.jinja2 Template Jinja2 dengan editor teks nano, sebagai berikut:

$ nano buku pedoman/templat/indeks.jinja2

Selanjutnya, tambahkan baris berikut di indeks.jinja2 berkas templat:

% jika ansible_distribution == "Debian" %

Anda menjalankan Debian Linux


% lain %

Anda tidak menjalankan Debian Linux


% berakhir jika %

Di sini, saya telah memeriksa jika distribusi_mungkin aku s Debian. Jika ya, maka cetak string

Anda menjalankan Debian Linux

. Jika tidak, cetak

Anda tidak menjalankan Debian Linux

.

Akhirnya, indeks.jinja2 file template akan terlihat seperti yang ditunjukkan pada gambar di bawah.

Setelah Anda mengedit file, simpan file dengan menekan + X, diikuti oleh kamu dan .

Jalankan buku pedoman copy_file_template1.yaml sebagai berikut:

$ playbook yang memungkinkan-playbook/copy_file_template1.yaml

Seperti yang Anda lihat, pada remote host Debian saya, indeks.html file memiliki garis

Anda menjalankan Debian Linux

. Tetapi pada host jarak jauh CentOS saya, indeks.html file memiliki garis

Anda tidak menjalankan Debian Linux

. Jadi, Jinja2 jika-lain kondisi berfungsi.

Conditional: Pernyataan if-elif di Jinja2 Template

Bahasa templating Jinja2 mendukung kondisional jika-elif pernyataan.

Jinja2 jika-elif sintaksnya adalah sebagai berikut:

% jika kondisi1 %
Lakukan sesuatu jika kondisi1 benar
% kondisi elif2 %
Lakukan sesuatu jika kondisi2 benar
% kondisi elif3 %
Lakukan sesuatu jika kondisi3 benar

% kondisi elifN %
Lakukan sesuatu jika kondisiN benar
% lain %
Lakukan sesuatu jika tidak ada kondisi yang benar
% berakhir jika %

Di sini, % lain % bagian adalah opsional, tetapi ada jika Anda membutuhkannya.

Mari kita lihat contoh Jinja2 jika-elif pernyataan.

Pertama, buka indeks.jinja2 Template Jinja2 dengan editor teks nano, sebagai berikut:

$ nano buku pedoman/templat/indeks.jinja2

Selanjutnya, tambahkan baris berikut di indeks.jinja2 berkas templat:

% jika distribusi_mungkin == "Debian" %

Anda menjalankan Debian Linux


% elif ansible_distribution == "CentOS" %

Anda menjalankan CentOS Linux


% lain %

Sistem Operasi Anda tidak didukung


% berakhir jika %

Di sini, saya telah memeriksa jika distribusi_mungkin aku s Debian. Jika ya, maka cetak string

Anda menjalankan Debian Linux

.

Saya juga telah memeriksa jika distribusi_mungkin aku s CentOS. Jika ya, maka cetak string

Anda menjalankan CentOS Linux

.

Jika tidak, cetak

Sistem Operasi Anda tidak didukung

.

Akhirnya, indeks.jinja2 file template akan terlihat seperti yang ditunjukkan pada gambar di bawah.

Setelah Anda mengedit file, simpan file dengan menekan + X, diikuti oleh kamu dan .

Jalankan buku pedoman copy_file_template1.yaml sebagai berikut:

$ buku pedoman playbook yang memungkinkan/copy_file_template1.yaml

Seperti yang Anda lihat, pada remote host Debian saya, indeks.html file memiliki garis

Anda menjalankan Debian Linux

.

Di host jarak jauh CentOS saya, indeks.html file memiliki garis

Anda menjalankan CentOS Linux

.

Jika saya memiliki Host jarak jauh lain yang menjalankan OS selain Debian atau CentOS, itu akan memiliki garis

Sistem Operasi Anda tidak didukung

dalam indeks.html mengajukan.

Jadi, Jinja2 jika-elif kondisi berfungsi.

Loop di Jinja2 Template

Anda juga dapat mencetak array dan objek menggunakan loop di Jinja2.
Jinja2 untuk sintaks loop adalah sebagai berikut:

% untuk variableName dalam arrayName %
Lakukan sesuatu dengan variableName
% akhir untuk %

Di sini, di setiap iterasi array nama array, salah satu elemen array (dimulai dari awal array) ditugaskan ke is nama variabel variabel. Anda dapat melakukan sesuatu dengan variabel ini di dalam loop.

Mari kita lihat bagaimana Anda dapat mencetak elemen array di template Jinja2 Anda dalam contoh berikut:.

Pertama, buka copy_file_template1.yaml Playbook yang memungkinkan dengan editor teks nano, sebagai berikut:

$ nano buku pedoman/copy_file_template1.yaml

Selanjutnya, tambahkan baris berikut di copy_file_template1.yaml file buku pedoman:

vars:
menu:
- Rumah
- Produk
- Tentang kami
- Hubungi kami

Di sini, saya telah menambahkan menu array di copy_file_template1.yaml buku pedoman. Selanjutnya, saya akan mencetak elemen array menggunakan loop di my indeks.jinja2 File template Jinja2.

Akhirnya, copy_file_template1.yaml file playbook akan terlihat seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Setelah Anda mengedit file, simpan file dengan menekan + X, diikuti oleh kamu dan .

Sekarang, buka indeks.jinja2 Template Jinja2 dengan editor teks nano, sebagai berikut:

$ nano buku pedoman/templat/indeks.jinja2

Tambahkan baris berikut di indeks.jinja2 berkas templat:

Di sini, saya membuat bilah navigasi HTML sederhana menggunakan Jinja2 untuk lingkaran. Loop iterasi melalui menu array (yang telah saya definisikan di copy_file_template1.yaml playbook) elemen dan menghasilkan a Tidak bisa item di setiap iterasi.

Akhirnya, indeks.jinja2 file template akan terlihat seperti yang ditunjukkan pada gambar di bawah.

Setelah Anda mengedit file, simpan file dengan menekan + X, diikuti oleh kamu dan .

Jalankan buku pedoman copy_file_template1.yaml sebagai berikut:

$ playbook yang memungkinkan-playbook/copy_file_template1.yaml

Seperti yang Anda lihat, Jinja2 untuk loop menghasilkan bilah navigasi HTML (di indeks.html mengajukan).

Anda juga dapat mengakses berbagai objek di template Jinja2 Anda.

Mari kita lihat contoh lain.

Pertama, buka copy_file_template1.yaml Playbook yang memungkinkan dengan editor teks nano, sebagai berikut:

$ nano buku pedoman/copy_file_template1.yaml

Selanjutnya, tambahkan baris berikut di copy_file_template1.yaml file buku pedoman:

vars:
menu:
- nama: Rumah
tautan: /rumah
- nama: Produk
tautan: /produk
- nama: Tentang Kami
tautan: /tentang-kami
- nama: Hubungi Kami
tautan: /hubungi-kami

Di sini, saya telah menambahkan menu array objek di copy_file_template1.yaml buku pedoman. Masing-masing objek ini memiliki dua properti, a nama properti dan tautan Properti.

Akhirnya, copy_file_template1.yaml file playbook akan terlihat seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Setelah Anda mengedit file, simpan file dengan menekan + X, diikuti oleh kamu dan .

Buka indeks.jinja2 Template Jinja2 dengan editor teks nano, sebagai berikut:

$ nano buku pedoman/templat/indeks.jinja2

Selanjutnya, tambahkan baris berikut di indeks.jinja2 berkas templat:

Semua yang Anda lihat di sini sama seperti pada contoh sebelumnya. Satu-satunya perbedaan adalah saya mencetak properti objek nama (menggunakan Tidak bisa.nama) dan tautan (menggunakan Tidak bisa.tautan) di my indeks.jinja2 Template Jinja2.

Akhirnya, indeks.jinja2 file template akan terlihat seperti yang ditunjukkan pada gambar di bawah.

Setelah Anda mengedit file, simpan file dengan menekan + X, diikuti oleh kamu dan .

Sekarang, jalankan buku pedoman copy_file_template1.yaml sebagai berikut:

$ playbook yang memungkinkan-playbook/copy_file_template1.yaml

Seperti yang Anda lihat, Jinja2 untuk loop menghasilkan bilah navigasi HTML (di indeks.html file) dari array objek.

Apa berikutnya?

Dalam artikel ini, saya telah menunjukkan kepada Anda cara menggunakan Ansible templat modul dan menjelaskan beberapa dasar-dasar bahasa templating Jinja2. Kunjungi situs web resmi Jinja2 untuk mempelajari lebih lanjut tentang bahasa templating Jinja2.

Instal Game Strategi OpenRA terbaru di Ubuntu Linux
OpenRA adalah mesin game Strategi Waktu Nyata Libre/Gratis yang membuat ulang game Westwood awal seperti Command & Conquer klasik: Red Alert. Mod yang...
Instal Dolphin Emulator terbaru untuk Gamecube & Wii di Linux
Dolphin Emulator memungkinkan Anda memainkan game Gamecube & Wii pilihan Anda di Komputer Pribadi (PC) Linux. Menjadi emulator game sumber terbuka da...
Cara Menggunakan Cheat Engine GameConqueror di Linux
Artikel ini mencakup panduan tentang menggunakan mesin cheat GameConqueror di Linux. Banyak pengguna yang bermain game di Windows sering menggunakan a...