Cara membuat templat dalam Ansible untuk membuat konfigurasi pada nod yang diuruskan - Bahagian 7

Cara membuat templat dalam Ansible untuk membuat konfigurasi pada nod yang diuruskan - Bahagian 7

Di dalam ini Bahagian 7 dari siri Ansible, anda akan belajar cara membuat dan menggunakan templat dalam Ansible untuk membuat konfigurasi tersuai pada nod yang diuruskan. Templating In Ansible adalah cara yang mudah dan mesra untuk menolak konfigurasi tersuai ke nod yang diuruskan yang menjalankan sistem yang berbeza dengan penyuntingan minimum fail playbook.

Apa yang dimaksudkan di Ansible?

Untuk mendapatkan gambaran yang lebih baik tentang templat apa, mari kita pertimbangkan pengurus IT yang merangka e -mel untuk menjemput jabatannya untuk pesta koktel. E -mel dihantar kepada setiap ahli juga menjemput mereka untuk menandai bersama pasangan mereka.

E -mel telah disesuaikan supaya badan e -mel tetap sama, tetapi penerima alamat dan nama pasangan masing -masing berbeza. E -mel menjadi templat, sementara penerima dan pasangan masing -masing pembolehubah.

Itu adalah contoh generik. Penggunaan ansible Jinja2 yang merupakan enjin templat moden untuk kerangka python yang digunakan untuk menghasilkan kandungan atau ekspresi dinamik. Templating sangat berguna apabila membuat fail konfigurasi tersuai untuk pelbagai pelayan tetapi unik untuk masing -masing.

Jinja2 menggunakan pendakap keriting berganda ... untuk melampirkan pemboleh ubah yang telah ditakrifkan. Untuk komen, gunakan # # dan untuk penggunaan pernyataan bersyarat %... %.

Mari kita anggap bahawa anda mempunyai model data VLAN di rangkaian anda dengan sistem hos yang ingin anda tolak ke masing -masing VLAN seperti yang ditunjukkan.

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

Untuk menjadikan konfigurasi ini, yang sepadan Jinja2 Templat dipanggil VLAN.j2 akan muncul seperti yang ditunjukkan. Seperti yang anda lihat, pembolehubah VLAN.ID dan VLAN.nama telah dilampirkan dalam pendakap keriting.

vlan vlan.id nama vlan.Nama 

Meletakkannya bersama -sama dalam buku main yang menempatkan mesin tuan rumah yang berbeza, ini akan muncul seperti yang ditunjukkan:

 - Tugas Hos: - Nama: Rendering Templat Konfigurasi VLAN: SRC: VLAN.j2 dest: "vlan_configs/inventory_hostname.conf " 

Contoh 1: Mengkonfigurasi pelayan web di distro yang berbeza

Dalam contoh ini, kita akan mencipta indeks.html fail yang akan memaparkan maklumat mengenai Nama Host & OS 2 pelayan web berjalan Centos & Ubuntu.

Persediaan

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

Apache Webserver telah dipasang di kedua -dua pelayan.

Untuk Centos 7

Laman web Apache di CentOS 7

Untuk Ubuntu 18.04

Laman web Apache di Ubuntu 18.04

Oleh itu, mari buat buku main test_server.yml seperti yang ditunjukkan:

--- - Hos: Semua Menjadi: Ya Tugas: - Nama: Pasang Indeks.Templat HTML: SRC: Indeks.html.J2 Dest:/var/www/html/indeks.Mod HTML: 0777 

Kami Jinja Templat fail adalah indeks.html.j2 yang akan ditolak ke indeks.html fail pada setiap webserver. Sentiasa ingat untuk meletakkan lanjutan .j2 pada akhirnya untuk menandakan bahawa ia adalah fail jinja2.

Mari kita buat fail templat indeks.html.j2.

  

Nama hos dari webserver ini adalah ansible_hostname

Ia berjalan pada sistem ansible_os_family

Templat ini adalah fail html asas di mana ansible_hostname dan ansible_os_family adalah pembolehubah terbina dalam yang akan digantikan dengan nama host dan sistem operasi masing-masing dari webservers individu pada penyemak imbas.

Sekarang, mari kita jalankan buku main.

# ansible-playbook test_server.yml 
Buat fail template ansible

Sekarang mari kita muat semula halaman web untuk kedua -duanya Centos 7 dan Ubuntu Webservers.

Untuk Centos 7

Sahkan laman web Apache di CentOS 7

Untuk Ubuntu 18.04

Sahkan laman web Apache di Ubuntu 18.04

Seperti yang anda lihat, maklumat yang berbeza mengenai nama hos dan keluarga OS telah dipaparkan pada setiap pelayan. Dan begitulah keren Jinja2 Templating adalah!

Penapis:

Kadang -kadang, anda mungkin memutuskan untuk menggantikan nilai pembolehubah dengan rentetan yang muncul dengan cara tertentu.

Contoh 1: Buat rentetan muncul di huruf besar/huruf kecil

Contohnya, dalam contoh sebelumnya, kita boleh membuat keputusan untuk membuat pembolehubah ansible muncul di huruf besar. Untuk berbuat demikian, masukkan nilai atas ke pembolehubah. Dengan cara ini nilai dalam pembolehubah ditukarkan ke format huruf besar.

ansible_hostname | Upper => CentOS 7 ansible_os_family | atas => redhat 
Buat huruf besar

Begitu juga, anda boleh menukar output rentetan ke huruf kecil dengan melaksanakan hujah yang lebih rendah.

ansible_hostname | lebih rendah => CentOS 7 ansible_os_family | lebih rendah => redhat 
Buat Rentetan Rentetan

Contoh 2: Gantikan rentetan dengan yang lain

Di samping itu, anda boleh mengganti rentetan dengan yang lain.

Sebagai contoh:

Tajuk filem adalah movie_name => Tajuk filem adalah Cincin.

Untuk menggantikan output dengan rentetan lain, gunakan hujah ganti seperti yang ditunjukkan:

Tajuk filem adalah Movie_name | Ganti ("Ring", "Heist") => Tajuk filem adalah Heist.

Contoh 3: Senarai dan menetapkan penapis

Untuk mendapatkan nilai terkecil dalam array, gunakan min penapis.

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

Begitu juga, untuk mendapatkan nombor terbesar, gunakan maks penapis.

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

Untuk memaparkan nilai unik, gunakan unik penapis.

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

Menggunakan rawak penapis untuk mendapatkan nombor rawak antara 0 dan nilai.

50 | rawak => Beberapa nombor rawak 

Gelung:

Sama seperti dalam bahasa pengaturcaraan, kita ada gelung dalam ansible Jinja2.

Contohnya, untuk menghasilkan fail yang mengandungi senarai nombor Gunakan untuk gelung Seperti yang ditunjukkan dalam contoh di bawah:

Contoh 1:

 % untuk nombor dalam [0, 1, 2, 3, 4, 5, 6, 7] % Number  % end for % 

Anda juga boleh menggabungkan gelung dengan jika tidak pernyataan untuk menapis dan mendapatkan nilai tertentu.

Contoh 2:

% untuk nombor dalam [0, 1, 2, 3, 4, 5, 6, 7]% % if Number == 5% number % endif% % endfor% 

Dan itu sahaja untuk kuliah ini. Sertailah kami dalam topik seterusnya di mana kami akan berusaha bekerja dengan pembolehubah dan fakta yang boleh dilakukan.