Cara Membuat Template Di Ansible Untuk Membuat Konfigurasi Pada Node yang Dikelola - Bagian 7

Cara Membuat Template Di Ansible Untuk Membuat Konfigurasi Pada Node yang Dikelola - Bagian 7

Di dalam Bagian 7 Seri Ansible, Anda akan belajar cara membuat dan menggunakan templat di Ansible untuk membuat konfigurasi yang disesuaikan pada node yang dikelola. Templating di Ansible adalah cara yang mudah dan ramah untuk mendorong konfigurasi khusus ke node yang dikelola yang menjalankan sistem yang berbeda dengan pengeditan minimal file buku pedoman.

Apa yang Templating di Ansible?

Untuk memahami apa itu template, mari kita pertimbangkan manajer TI yang menyusun email untuk mengundang departemennya untuk pesta koktail. Email dikirim ke masing -masing anggota dan juga mengundang mereka untuk menandai dengan pasangan mereka.

Email tersebut telah disesuaikan sedemikian rupa sehingga badan email tetap sama, tetapi penerima dan nama -nama pasangannya masing -masing bervariasi. Email menjadi templat, sedangkan penerima dan pasangan masing -masing variabel.

Itu adalah contoh umum. Penggunaan yang tidak mungkin Jinja2 yang merupakan mesin templating modern untuk kerangka kerja Python yang digunakan untuk menghasilkan konten atau ekspresi dinamis. Templating sangat berguna saat membuat file konfigurasi khusus untuk beberapa server tetapi unik untuk masing -masing.

Jinja2 menggunakan kawat gigi keriting ganda ... untuk melampirkan variabel yang telah didefinisikan. Untuk komentar, gunakan # # dan untuk penggunaan pernyataan bersyarat %… %.

Mari kita asumsikan bahwa Anda memiliki model data VLAN di jaringan Anda dengan sistem host yang ingin Anda dorong ke masing -masing VLAN seperti yang ditunjukkan.

VLANS: - ID: 10 Nama: LB - ID: 20 Nama: WB_01 - ID: 30 Nama: WB_02 - ID: 40 Nama: DB 

Untuk membuat konfigurasi ini, yang sesuai jinja2 template dipanggil VLAN.J2 akan muncul seperti yang ditunjukkan. Seperti yang Anda lihat, variabel Vlan.pengenal Dan Vlan.nama telah tertutup dalam kawat gigi keriting.

vlan vlan.id name vlan.Nama 

Menyatukan semuanya dalam buku pedoman yang menempatkan mesin host yang berbeda, ini akan muncul seperti yang ditunjukkan:

 - Tugas Hosts: - Nama: Rendering VLAN Configuration Template: SRC: VLANS.j2 dest: "vlan_configs/inventory_hostname.conf " 

Contoh 1: Mengkonfigurasi Server Web di berbagai distro

Dalam contoh ini, kami akan membuat indeks.html file yang akan menampilkan informasi tentang nama host & OS 2 server web berjalan Centos & Ubuntu.

Mempersiapkan

Ubuntu 18 - Alamat IP: 173.82.202.239 Centos 7 - Alamat IP: 173.82.115.165 

Apache Webserver telah diinstal di kedua server.

Untuk Centos 7

Halaman web Apache di Centos 7

Untuk Ubuntu 18.04

Halaman web Apache di Ubuntu 18.04

Jadi mari kita buat buku pedoman test_server.YML seperti yang ditunjukkan:

--- - Host: Semua Menjadi: Ya Tugas: - Nama: Instal Indeks.Template HTML: SRC: Indeks.html.J2 Dest:/var/www/html/index.Mode HTML: 0777 

Kita Jinja Template file adalah indeks.html.J2 yang akan didorong ke indeks.html file di setiap server web. Ingatlah selalu untuk meletakkan ekstensi .J2 Di akhir untuk menandakan bahwa itu adalah file jinja2.

Sekarang mari kita buat file template indeks.html.J2.

  

Nama host dari server web ini adalah ansible_hostname

Ini berjalan di ansible_os_family sistem

Templat ini adalah file HTML dasar di mana ansible_hostname Dan ansible_os_family adalah variabel bawaan yang akan diganti dengan nama host masing-masing dan sistem operasi dari server web individu di browser.

Sekarang, mari kita jalankan buku pedoman.

# Ansible-playbook test_server.YML 
Buat file template ansible

Sekarang mari kita memuat ulang halaman web untuk keduanya Centos 7 Dan Ubuntu server web.

Untuk Centos 7

Verifikasi halaman web Apache di Centos 7

Untuk Ubuntu 18.04

Verifikasi halaman web Apache di Ubuntu 18.04

Seperti yang Anda lihat, berbagai informasi tentang nama host dan keluarga OS telah ditampilkan di setiap server. Dan begitulah keren Jinja2 Templating adalah!

Filter:

Terkadang, Anda dapat memutuskan untuk mengganti nilai variabel dengan string yang muncul dengan cara tertentu.

Contoh 1: Buat string muncul di huruf besar/kecil

Misalnya, dalam contoh sebelumnya, kita dapat memutuskan untuk membuat variabel ansible muncul di huruf besar. Untuk melakukannya, tambahkan nilai atas ke variabel. Dengan cara ini nilai dalam variabel dikonversi ke format huruf besar.

ansible_hostname | Upper => centos 7 ansible_os_family |  => redhat 
Membuat string huruf besar

Demikian pula, Anda dapat mengonversi output string ke huruf kecil dengan menambahkan argumen yang lebih rendah.

ansible_hostname | lebih rendah => centos 7 ansible_os_family | lebih rendah => redhat 
Buatlah huruf kecil string

Contoh 2: Ganti string dengan yang lain

Selain itu, Anda dapat mengganti string dengan yang lain.

Misalnya:

Judul filmnya film_name => Judul filmnya Cincin.

Untuk mengganti output dengan string lain, gunakan argumen ganti seperti yang ditunjukkan:

Judul filmnya film_name | ganti ("ring", "heist") => Judul filmnya Perampokan.

Contoh 3: Daftar dan set filter

Untuk mengambil nilai terkecil dalam array, gunakan Min Saring.

[2, 3, 4, 5, 6, 7] | min => 2 

Demikian pula, untuk mengambil angka terbesar, gunakan Max Saring.

[2, 3, 4, 5, 6, 7] | max => 7 

Untuk menampilkan nilai unik, gunakan unik Saring.

[2, 3, 3, 2, 6, 7] | unik => 2, 3 

Menggunakan acak filter untuk mendapatkan nomor acak antara 0 dan nilainya.

50 | acak => beberapa nomor acak 

Loops:

Sama seperti dalam bahasa pemrograman, kami punya loop di Ansible Jinja2.

Misalnya, untuk menghasilkan file yang berisi daftar nomor menggunakan untuk loop Seperti yang ditunjukkan pada contoh di bawah ini:

Contoh 1:

 % untuk angka di [0, 1, 2, 3, 4, 5, 6, 7] % angka  % end untuk % 

Anda juga dapat menggabungkan loop untuk if-else pernyataan untuk memfilter dan mendapatkan nilai tertentu.

Contoh 2:

% untuk angka dalam [0, 1, 2, 3, 4, 5, 6, 7]% % jika angka == 5% angka % endif% % endfor% 

Dan itu untuk kuliah ini. Bergabunglah dengan kami dalam topik berikutnya di mana kami akan menjelajahi untuk bekerja dengan variabel dan fakta yang tidak jelas.