Cara Membuat Template Di Ansible Untuk Membuat Konfigurasi Pada Node yang Dikelola - Bagian 7
- 2256
- 504
- Dominick Barton
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 7Untuk Ubuntu 18.04
Halaman web Apache di Ubuntu 18.04Jadi 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.YMLBuat 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 7Untuk Ubuntu 18.04
Verifikasi halaman web Apache di Ubuntu 18.04Seperti 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 | => redhatMembuat 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 => redhatBuatlah 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.
- « Cara menginstal nginx di centos 8
- Cara menggunakan modul ansible untuk tugas administrasi sistem - bagian 6 »