Dolandyrylan düwünlerde konfigurasiýa döretmek üçin şablonlary nädip döretmeli - 7-nji bölüm


“Ansible” seriýasynyň 7-nji bölüminde dolandyrylýan düwünlerde özleşdirilen konfigurasiýalary döretmek üçin “Ansible” -de şablonlary döretmegi we ulanmagy öwrenersiňiz. Ansible-de galyplar, playbook faýllaryny minimal redaktirlemek bilen dürli ulgamlary dolandyrýan dolandyrylýan düwünlere ýörite konfigurasiýalary basmagyň aňsat we dostlukly usulydyr.

Şablonyň nämedigine has gowy düşünmek üçin geliň, öz bölümini kokteýl oturylyşygy üçin çagyrmak üçin e-poçta taýýarlaýan IT dolandyryjysyna seredeliň. E-poçta agzalaryň hersine iberilýär we olary ýanýoldaşlary bilen birlikde bellik etmäge çagyrýar.

E-poçta şeýle düzüldi welin, e-poçta mazmuny öňküligine galýar, ýöne salgylar we degişli är-aýallarynyň atlary üýtgeýär. E-poçta şablona öwrülýär, alyjylar we degişli är-aýallar üýtgeýär.

Bu umumy mysaldy. Ansible, dinamiki mazmun ýa-da aňlatmalar döretmek üçin ulanylýan Python çarçuwalary üçin häzirki zaman şablon hereketlendirijisi bolan Jinja2 ulanýar. Birnäçe serwer üçin ýörite konfigurasiýa faýllary döredilende galyplar gaty peýdaly, ýöne olaryň hersi üçin özboluşly.

Jinja2 kesgitlenen üýtgeýjini goşmak üçin goşa egriji ýaýlary {{...}} ulanýar. Düşündirişler üçin {{# #} ulanyň we şertli jümleler üçin {%…%} ulanyň.

Toruňyzda görkezilişi ýaly degişli VLAN-lara basmak isleýän host ulgamlaryňyz bilen VLAN-laryň maglumat modeliniň bardygyny kabul edeliň.

vlans:
  - id: 10
    name: LB
  - id: 20
    name: WB_01
  - id: 30
    name: WB_02
  - id: 40
    name: DB

Bu konfigurasiýany görkezmek üçin, vlans.j2 atly degişli jinja2 şablony görkezilişi ýaly peýda bolar. Görşüňiz ýaly, vlan.id we vlan.name üýtgeýjileri egri ýaýlarda ýerleşdirildi.

vlan {{ vlan.id }}
  name {{ vlan.name }}

Bularyň hemmesini dürli host maşynlaryny ýerleşdirýän oýun depderine goýsaňyz, görkezilişi ýaly görüner:

    - hosts
  tasks:
    - name: Rendering VLAN configuration
      template:
         src: vlans.j2
         dest: "vlan_configs/{{ inventory_hostname }}.conf"

Mysal 1: Dürli ýaýlymlarda web serwerlerini sazlamak

Bu mysalda, hostOS ady we CentOS & Ubuntu bilen işleýän 2 web serweriniň OS hakda maglumatlary görkezjek index.html faýllaryny dörederis.

Ubuntu 18 - IP address: 173.82.202.239
CentOS 7 -  IP address: 173.82.115.165

Apache web serweri eýýäm iki serwerde guruldy.

Geliň, görkezilişi ýaly testbook_server.yml oýnamak kitabyny döredeliň:

---

 - hosts: all
   become: yes

   tasks:

    - name: Install index.html
      template:
        src: index.html.j2
        dest: /var/www/html/index.html
        mode: 0777

Jinja faýl şablonymyz, her web serwerindäki index.html faýlyna itergi berjek index.html.j2. Jinja2 faýlydygyny görkezmek üçin elmydama .j2 giňeltmesini goýmagy ýatdan çykarmaň.

Geliň indi şablon faýly index.html.j2 döredeliň.

<html>
<center>
   <h1> The hostname of this webserver is {{ ansible_hostname }}</h1>
   <h3> It is running on {{ ansible_os_family}}system </h3>
</center>
</html>

Bu şablon, esasy HTML faýly bolup, onda ansible_hostname we ansible_os_family içerki üýtgeýänler bolup, brauzerdäki aýratyn web serwerleriniň degişli atlary we operasiýa ulgamlary bilen çalşyrylar.

Indi, oýnawaç kitabyny işledeliň.

# ansible-playbook test_server.yml

Indi CentOS 7 we Ubuntu web serwerleri üçin web sahypalaryny täzeden açalyň.

Görşüňiz ýaly, her serwerde host ady we OS maşgalasy barada dürli maglumatlar görkezildi. Jinja2 şablony nähili ajaýyp!

Filtrler:

Käwagt üýtgeýjiniň bahasyny belli bir görnüşde görünýän setir bilen çalyşmak kararyna gelip bilersiňiz.

Mysal üçin, öňki mysalda, Ansible üýtgeýjileriň baş harpda görkezilmegini karar edip bileris. Munuň üçin üýtgeýjiniň ýokarky bahasyny goşuň. Şeýlelik bilen üýtgeýjiniň bahasy baş harp görnüşine öwrüler.

{{ ansible_hostname | upper }} => CENTOS 7
{{ ansible_os_family | upper }} => REDHAT

Şonuň ýaly-da, aşaky argumenti goşup, setir çykyşyny kiçi harplara öwrüp bilersiňiz.

{{ ansible_hostname | lower }}  => centos 7
{{ ansible_os_family | lower }} => redhat

Mundan başga-da, bir setiri başga birine çalyşyp bilersiňiz.

Mysal üçin:

Filmiň ady {{movie_name}} => Filmiň ady Ring.

Çykyşy başga bir setir bilen çalyşmak üçin çalyşma argumentini görkezilişi ýaly ulanyň:

Filmiň ady {{film_name | çalyş (\ Jylaw \, Heist)}} => Filmiň ady Heist.

Bir massiwdäki iň kiçi bahany almak üçin min süzgüçden peýdalanyň.

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

Şonuň ýaly-da, iň köp san almak üçin iň köp süzgüç ulanyň.

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

Üýtgeşik gymmatlyklary görkezmek üçin üýtgeşik süzgüç ulanyň.

{{ [ 2, 3, 3, 2, 6, 7 ] | unique }} =>	2, 3

0 bilen bahanyň arasynda tötänleýin san almak üçin tötänleýin süzgüç ulanyň.

{{ 50 | random }} =>  Some random number

GÖRNÜŞLER:

Programmirleme dillerindäki ýaly, Ansible Jinja2-de aýlawlarymyz bar.

Mysal üçin, sanlaryň sanawyny öz içine alýan faýl döretmek üçin aşakdaky mysalda görkezilişi ýaly aýlaw üçin ulanyň:

{% for number in [0, 1, 2, 3, 4, 5, 6, 7]  %}
{{ number }}
{% end for %}

Şeýle hem, belli bir bahalary süzmek we almak üçin aýlaw üçin if-else jümleleri bilen birleşdirip bilersiňiz.

{% for number in [0, 1, 2, 3, 4, 5, 6, 7]  %}
{% if number == 5 %}
         {{ number }}
{% endif%}
{% endfor %}

Ine, şu leksiýa üçin. Jogapkär üýtgeýjiler we faktlar bilen işlemek üçin indiki mowzukda bize goşulyň.