Tidak boleh difahami

Cara Menggunakan Modul Templat Ansible

Cara Menggunakan Modul Templat Ansible
Orang-orang yang boleh dipercayai templat modul digunakan terutamanya untuk menyalin fail dari klien Ansible (di mana Ansible dipasang) ke host Ansible (diuruskan oleh Ansible). Kebaikan menggunakan templat modul, bukannya salinan modul, adalah bahawa Orang-orang yang Boleh Dibaca templat modul boleh menggunakan bahasa templat Jinja2. Jinja2 adalah bahasa templat Python yang kuat di mana anda boleh menghasilkan fail konfigurasi, halaman web, dll. Anda juga boleh menggunakan pemboleh ubah, gelung, dan keadaan fakta yang tidak dapat dilihat dalam templat Jinja2 anda.

Artikel ini akan menunjukkan kepada anda cara menggunakan Ansible templat modul dan beberapa asas bahasa templat Jinja2. Oleh itu, mari kita mulakan!

Prasyarat


Sekiranya anda ingin mencuba contoh dalam artikel ini:

1) Anda mesti memasang Ansible di komputer anda.

2) Anda mesti mempunyai sekurang-kurangnya host Ubuntu / Debian atau host CentOS / RHEL 8 yang dikonfigurasi untuk automasi Ansible.

Terdapat banyak artikel mengenai LinuxHint yang dikhaskan untuk Memasang Ansible dan mengkonfigurasi host untuk automasi Ansible. Anda juga boleh melihatnya sekiranya diperlukan.

Menyiapkan Direktori Projek Ansible

Sebelum kita melangkah lebih jauh, adalah idea yang baik untuk membuat struktur direktori projek, hanya untuk memastikan sesuatu tetap teratur.

Untuk membuat direktori projek templat-demo / dan semua subdirektori yang diperlukan (dalam direktori kerja semasa anda), jalankan arahan berikut:

$ mkdir -pv template-demo / playbooks / templat

Setelah direktori projek dibuat, arahkan ke direktori projek, seperti berikut:

templat-demo $ cd /

Buat a tuan rumah fail inventori, seperti berikut:

hos $ nano

Kemudian, tambahkan nama IP atau DNS host anda (vm1.angguk.com dan vm2.angguk.com) dalam fail inventori.

Setelah anda selesai dengan langkah ini, simpan fail dengan menekan + X, diikuti oleh Y dan .

Buat fail konfigurasi Ansible dalam direktori projek, seperti berikut:

$ nano tidak boleh dimakan.cfg

Kemudian, taipkan baris berikut di tidak boleh dimakan.cfg fail.

Setelah menyelesaikan langkah ini, simpan fail dengan menekan + X, diikuti oleh Y dan .

Pada ketika ini, direktori projek akan kelihatan seperti berikut:

pokok $

Seperti yang anda lihat, hos Ansible juga dapat diakses. Oleh itu, kita boleh beralih ke bahagian seterusnya dari artikel ini.

$ ansible all -u ansible -m ping

Asas Modul Templat Ansible

The templat modul Ansible menerima pilihan yang sama seperti salinan modul Ansible.

Orang biasa templat pilihan modul:

src - Laluan fail templat Jinja2 di komputer anda, yang akan dihuraikan oleh bahasa templat Jinja2 dan disalin ke host jauh.
dest - Laluan tujuan pada hos terpencil yang failnya akan disalin.
pemilik - Pemilik fail di host jauh.
kumpulan - Kumpulan fail pada hos jauh.
mod - Mod kebenaran fail pada hos jauh.

Mari kita lihat contohnya.

Pertama, buat buku main Ansible baru copy_file_template1.keladi di dalam buku permainan / direktori, seperti berikut:

Buku main $ nano / copy_file_template1.keladi

Kemudian, taipkan baris berikut di copy_file_template1.keladi buku permainan.

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- nama: Salin indeks.fail html ke pelayan
templat:
src: indeks.jinja2
dest: / home / ansible / index.html
pemilik: tidak boleh dimakan
kumpulan: tidak boleh dimakan
mod: 0644

Buku main ini akan menyalin indeks.jinja2 fail dari buku permainan / templat / direktori (relatif dengan direktori projek anda) ke host jauh menggunakan Ansible templat modul.

Setelah anda selesai dengan langkah ini, simpan fail dengan menekan + X, diikuti oleh Y dan .

Buat indeks.jinja2 fail templat di buku / templat direktori, seperti berikut:

Buku / templat / indeks $ nano.jinja2

Taipkan baris berikut di indeks.jinja2 fail templat:




Demo Templat Jinja2


Selamat datang ke Linuxhint!



Ini hanyalah fail HTML biasa. Saya tidak menggunakan sintaks Jinja2 mewah di sini.

Setelah anda selesai dengan langkah ini, simpan fail dengan menekan + X, diikuti oleh Y dan .

Jalankan buku main copy_file_template1.keladi seperti berikut:

buku permainan $ ansible-playbook / copy_file_template1.keladi

Buku permainan harus berjalan dengan jayanya.

Seperti yang anda lihat, indeks.jinja2 templat diberikan menggunakan bahasa templat Jinja2. Kandungan yang diberikan harus disalin ke indeks.html fail host jauh.

Mencetak Pemboleh ubah dalam Templat Jinja2

Anda boleh menggunakan fakta, pemboleh ubah, dan pemboleh ubah yang ditentukan pengguna dalam templat Jinja2 anda.

Pada templat Jinja2 anda, anda boleh mencetak nilai pemboleh ubah menggunakan variabelName sintaksis. Sekiranya pemboleh ubah adalah objek, anda boleh mencetak sifat objek individu menggunakan objekBoleh ubah.namaNama sintaksis.

Dalam contoh berikut, kami akan mencetak Tarikh harta tanah ansible_date_time objek di kami indeks.jinja2 templat.

$ ansible all -u ansible -m setup | egrep - warna 'tarikh | masa'

Pertama, buka indeks.jinja2 fail templat dengan penyunting teks nano, seperti berikut:

Buku / templat / indeks $ nano.jinja2

Tambahkan baris berikut ke indeks.jinja2 fail templat:

Halaman dihasilkan pada ansible_date_time.Tarikh

Yang terakhir indeks.jinja2 fail akan kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah anda selesai dengan langkah ini, simpan fail dengan menekan + X, diikuti oleh Y dan .

Jalankan buku main copy_file_template1.keladi seperti berikut:

buku permainan $ ansible-playbook / copy_file_template1.keladi

Seperti yang anda lihat, indeks.jinja2 templat diproses oleh bahasa templat Jinja2 dan menggantikan ansible_date_time.Tarikh pemboleh ubah dengan tarikh di YYYY-MM-DD format. Hasilnya kemudian disalin ke indeks.html fail pada hos jauh.

Bersyarat jika Pernyataan dalam Templat Jinja2

Bahasa templat Jinja2 menyokong bersyarat sekiranya penyataan. Anda boleh memeriksa pemboleh ubah tertentu sebelum mencetak apa-apa menggunakan sekiranya penyataan.

Jinja2 sekiranya sintaks adalah seperti berikut:

% jika keadaan%
Lakukan sesuatu sekiranya syaratnya benar
% endif%

Mari kita lihat contoh Jinja2 sekiranya penyataan.

Pada bahagian ini, saya akan menunjukkan Jinja2 sekiranya penyataan menggunakan ansible_distribusi pemboleh ubah fakta.

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

Pertama, buka indeks.jinja2 Templat Jinja2 dengan penyunting teks nano, seperti berikut:

Buku / templat / indeks $ nano.jinja2

Seterusnya, tambahkan baris berikut di indeks.jinja2 fail templat:

% if ansible_distribution == "Debian"%

Anda menjalankan Debian Linux


% endif%

Di sini, saya telah memeriksa sama ada ansible_distribusi adalah Debian. Sekiranya ada, maka cetak rentetan itu

Anda menjalankan Debian Linux

. Jika tidak, jangan mencetaknya.

Akhirnya, indeks.jinja2 fail templat akan kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah mengedit fail, simpan fail dengan menekan + X, diikuti oleh Y dan .

Sekarang, jalankan buku main copy_file_template1.keladi seperti berikut:

buku permainan $ ansible-playbook / copy_file_template1.keladi

Seperti yang anda lihat, pada hos jauh Debian saya, indeks.html fail mempunyai garis

Anda menjalankan Debian Linux

. Walau bagaimanapun, pada hos jarak jauh CentOS saya, talian tidak ada. Jadi, Jinja2 sekiranya keadaan sedang berfungsi.

Bersyarat: Pernyataan if-else dalam Templat Jinja2

Bahasa templat Jinja2 menyokong bersyarat jika tidak penyataan. Anda boleh mencetak satu perkara jika keadaan sesuai dan mencetak sesuatu yang lain jika tidak menggunakan jika tidak penyataan.

Jinja2 jika tidak sintaks adalah seperti berikut:

% jika keadaan%
Lakukan sesuatu sekiranya syaratnya benar
% yang lain%
Lakukan sesuatu sekiranya keadaannya salah
% endif%

Mari kita lihat contoh Jinja2 jika tidak penyataan.

Pertama, buka indeks.jinja2 Templat Jinja2 dengan penyunting teks nano, seperti berikut:

Buku / templat / indeks $ nano.jinja2

Seterusnya, tambahkan baris berikut di indeks.jinja2 fail templat:

% if ansible_distribution == "Debian"%

Anda menjalankan Debian Linux


% yang lain%

Anda tidak menjalankan Debian Linux


% endif%

Di sini, saya telah memeriksa sama ada ansible_distribusi adalah Debian. Sekiranya ada, maka cetak rentetan itu

Anda menjalankan Debian Linux

. Jika tidak, cetak

Anda tidak menjalankan Debian Linux

.

Akhirnya, indeks.jinja2 fail templat akan kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah mengedit fail, simpan fail dengan menekan + X, diikuti oleh Y dan .

Jalankan buku main copy_file_template1.keladi seperti berikut:

buku permainan $ ansible-playbook / copy_file_template1.keladi

Seperti yang anda lihat, pada hos jauh Debian saya, indeks.html fail mempunyai garis

Anda menjalankan Debian Linux

. Tetapi pada hos jarak jauh CentOS saya, yang indeks.html fail mempunyai garis

Anda tidak menjalankan Debian Linux

. Jadi, Jinja2 jika tidak keadaan sedang berfungsi.

Bersyarat: Pernyataan if-elif dalam Templat Jinja2

Bahasa templat Jinja2 menyokong bersyarat sekiranya-elif penyataan.

Jinja2 sekiranya-elif sintaks adalah seperti berikut:

% jika syarat1%
Lakukan sesuatu sekiranya syarat1 itu benar
% keadaan elif2%
Lakukan sesuatu sekiranya syarat2 itu benar
% keadaan elif3%
Lakukan sesuatu sekiranya syarat3 itu benar

% keadaan elifN%
Lakukan sesuatu sekiranya syaratN itu benar
% yang lain%
Lakukan sesuatu sekiranya tiada syarat yang berlaku
% endif%

Di sini, % yang lain% bahagian adalah pilihan, tetapi ia ada jika anda memerlukannya.

Mari kita lihat contoh Jinja2 sekiranya-elif penyataan.

Pertama, buka indeks.jinja2 Templat Jinja2 dengan penyunting teks nano, seperti berikut:

Buku / templat / indeks $ nano.jinja2

Seterusnya, tambahkan baris berikut di indeks.jinja2 fail templat:

% if ansible_distribution == "Debian"%

Anda menjalankan Debian Linux


% elif ansible_distribution == "CentOS"%

Anda menjalankan CentOS Linux


% yang lain%

Sistem Operasi anda tidak disokong


% endif%

Di sini, saya telah memeriksa sama ada ansible_distribusi adalah Debian. Sekiranya ada, maka cetak rentetan itu

Anda menjalankan Debian Linux

.

Saya juga telah memeriksa sama ada ansible_distribusi adalah CentOS. Sekiranya ada, maka cetak rentetan itu

Anda menjalankan CentOS Linux

.

Jika tidak, cetak

Sistem Operasi anda tidak disokong

.

Akhirnya, indeks.jinja2 fail templat akan kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah mengedit fail, simpan fail dengan menekan + X, diikuti oleh Y dan .

Jalankan buku main copy_file_template1.keladi seperti berikut:

buku permainan $ ansible-playbook / copy_file_template1.keladi

Seperti yang anda lihat, pada hos jauh Debian saya, indeks.html fail mempunyai garis

Anda menjalankan Debian Linux

.

Pada hos jauh CentOS saya, indeks.html fail mempunyai garis

Anda menjalankan CentOS Linux

.

Sekiranya saya mempunyai hos jauh lain yang menjalankan OS selain Debian atau CentOS, ia pasti ada

Sistem Operasi anda tidak disokong

di dalam indeks.html fail.

Jadi, Jinja2 sekiranya-elif keadaan sedang berfungsi.

Gelung dalam Templat Jinja2

Anda juga boleh mencetak tatasusunan dan objek menggunakan gelung di Jinja2.
Jinja2 untuk sintaks gelung adalah seperti berikut:

% untuk variabelName dalam arrayName%
Lakukan sesuatu dengan nama berubah-ubah
% endfor%

Di sini, dalam setiap lelaran larik Nama array, salah satu elemen larik (bermula dari awal tatasusunan) diberikan kepada PembolehubahNama pemboleh ubah. Anda boleh melakukan sesuatu dengan pemboleh ubah ini di dalam gelung.

Mari kita lihat bagaimana anda boleh mencetak elemen array dalam templat Jinja2 anda dalam contoh berikut.

Pertama, buka copy_file_template1.keladi Buku permainan yang boleh dibaca dengan penyunting teks nano, seperti berikut:

Buku main $ nano / copy_file_template1.keladi

Seterusnya, tambahkan baris berikut di copy_file_template1.keladi fail buku main:

vars:
menu:
- Rumah
- Produk
- Tentang kita
- Hubungi Kami

Di sini, saya telah menambah a menu susunan di copy_file_template1.keladi buku permainan. Seterusnya, saya akan mencetak elemen array menggunakan gelung di saya indeks.jinja2 Fail templat Jinja2.

Akhirnya, copy_file_template1.keladi fail buku main harus kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah mengedit fail, simpan fail dengan menekan + X, diikuti oleh Y dan .

Sekarang, buka indeks.jinja2 Templat Jinja2 dengan penyunting teks nano, seperti berikut:

Buku / templat / indeks $ nano.jinja2

Tambahkan baris berikut di indeks.jinja2 fail templat:

Di sini, saya menghasilkan bar navigasi HTML ringkas menggunakan Jinja2 untuk gelung. Gelung berulang melalui menu array (yang telah saya tentukan dalam copy_file_template1.buku permainan yaml) unsur dan menghasilkan a menu item dalam setiap lelaran.

Akhirnya, indeks.jinja2 fail templat akan kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah mengedit fail, simpan fail dengan menekan + X, diikuti oleh Y dan .

Jalankan buku main copy_file_template1.keladi seperti berikut:

buku permainan $ ansible-playbook / copy_file_template1.keladi

Seperti yang anda lihat, Jinja2 untuk gelung menghasilkan bar navigasi HTML (di indeks.html fail).

Anda juga dapat mengakses pelbagai objek dalam templat Jinja2 anda.

Mari kita lihat contoh lain.

Pertama, buka copy_file_template1.keladi Buku permainan yang boleh dibaca dengan penyunting teks nano, seperti berikut:

Buku main $ nano / copy_file_template1.keladi

Seterusnya, tambahkan baris berikut di copy_file_template1.keladi fail buku main:

vars:
menu:
- nama: Rumah
pautan: / rumah
- nama: Produk
pautan: / produk
- nama: Mengenai Kami
pautan: / mengenai-kita
- nama: Hubungi Kami
pautan: / hubungi-kami

Di sini, saya telah menambah a menu susunan objek di copy_file_template1.keladi buku permainan. Setiap objek ini mempunyai dua sifat, a nama harta benda dan a pautan harta benda.

Akhirnya, copy_file_template1.keladi fail buku main harus kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah mengedit fail, simpan fail dengan menekan + X, diikuti oleh Y dan .

Buka indeks.jinja2 Templat Jinja2 dengan penyunting teks nano, seperti berikut:

Buku / templat / indeks $ nano.jinja2

Seterusnya, tambahkan baris berikut di indeks.jinja2 fail templat:

Semua yang anda lihat di sini sama seperti contoh sebelumnya. Satu-satunya perbezaan ialah saya mencetak sifat objek nama (menggunakan menu.nama) dan pautan (menggunakan menu.pautan) di saya indeks.jinja2 Templat Jinja2.

Akhirnya, indeks.jinja2 fail templat akan kelihatan seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Setelah mengedit fail, simpan fail dengan menekan + X, diikuti oleh Y dan .

Sekarang, jalankan buku main copy_file_template1.keladi seperti berikut:

buku permainan $ ansible-playbook / copy_file_template1.keladi

Seperti yang anda lihat, Jinja2 untuk gelung menghasilkan bar navigasi HTML (di indeks.html fail) dari pelbagai objek.

Apa yang akan datang?

Dalam artikel ini, saya telah menunjukkan cara menggunakan Ansible templat modul dan menerangkan beberapa asas bahasa templat Jinja2. Lawati laman web rasmi Jinja2 untuk mengetahui lebih lanjut mengenai bahasa templat Jinja2.

Butang tetikus tengah tidak berfungsi pada Windows 10
The butang tetikus tengah membantu anda menelusuri halaman web dan skrin yang panjang dengan banyak data. Sekiranya ia berhenti, anda akan menggunakan...
Cara menukar butang tetikus Kiri & Kanan pada PC Windows 10
Sudah menjadi kebiasaan bahawa semua peranti tetikus komputer dirancang secara ergonomik untuk pengguna tangan kanan. Tetapi ada peranti tetikus yang ...
Tiru klik Tetikus dengan melayang menggunakan Mouse Tanpa Klik di Windows 10
Menggunakan tetikus atau papan kekunci dalam keadaan salah penggunaan berlebihan boleh menyebabkan banyak masalah kesihatan, termasuk ketegangan, sind...