Jinsi ya Kuunda Violezo kwa Ansible Kuunda Mipangilio Kwenye Nodi Zinazodhibitiwa - Sehemu ya 7


Katika Sehemu hii ya 7 ya Mfululizo Unaowezekana, utajifunza jinsi ya kuunda na kutumia violezo katika Ansible ili kuunda usanidi uliobinafsishwa kwenye nodi zinazodhibitiwa. Kuiga katika Ansible ni njia rahisi na ya kirafiki ya kusukuma usanidi maalum kwa nodi zinazodhibitiwa zinazoendesha mifumo tofauti na uhariri mdogo wa faili za kitabu cha kucheza.

Ili kuelewa vyema kiolezo ni nini, hebu tufikirie msimamizi wa TEHAMA akiandika barua pepe ili kualika idara yake kwa karamu ya chakula. Barua pepe inatumwa kwa kila mmoja wa wanachama na pia inawaalika kutambulisha pamoja na wenzi wao.

Barua pepe imebinafsishwa ili mwili wa barua pepe ubaki sawa, lakini wanaoandikiwa anwani na majina ya wenzi wao hutofautiana. Barua pepe inakuwa kiolezo, wakati wapokeaji na wanandoa husika ni vigezo.

Huo ulikuwa mfano wa kawaida. Ansible hutumia Jinja2 ambayo ni injini ya kisasa ya violezo kwa mifumo ya Python inayotumiwa kutoa maudhui au misemo inayobadilika. Kiolezo ni muhimu sana wakati wa kuunda faili maalum za usanidi kwa seva nyingi lakini za kipekee kwa kila moja.

Jinja2 hutumia viunga vilivyopindapinda mara mbili {{ ... }} kuambatisha kigezo ambacho kimefafanuliwa. Kwa maoni, tumia {{# #} na kwa taarifa za masharti tumia {% … %}.

Hebu tuchukulie kuwa una muundo wa data wa VLAN kwenye mtandao wako na mifumo ya seva pangishi ambayo ungependa kusukuma kwa VLAN zao kama inavyoonyeshwa.

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

Ili kutekeleza usanidi huu, kiolezo kinacholingana cha jinja2 kinachoitwa vlans.j2 kitaonekana kama inavyoonyeshwa. Kama unavyoona, vigeu vlan.id na vlan.name vimefungwa kwenye viunga vilivyopindapinda.

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

Kuweka yote pamoja katika kitabu cha kucheza ambacho huweka mashine tofauti za mwenyeji, hii itaonekana kama inavyoonyeshwa:

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

Mfano 1: Kusanidi Seva za Wavuti katika Distros Tofauti

Katika mfano huu, tutaunda faili za index.html ambazo zitaonyesha maelezo kuhusu jina la mpangishaji na Mfumo wa Uendeshaji wa seva 2 za wavuti zinazoendesha CentOS na Ubuntu.

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

Apache webserver tayari imesakinishwa kwenye seva zote mbili.

Kwa hivyo, tuunde playbook test_server.yml kama inavyoonyeshwa:

---

 - hosts: all
   become: yes

   tasks:

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

Kiolezo chetu cha faili ya Jinja ni index.html.j2 ambacho kitasukumwa hadi kwenye faili ya index.html kwenye kila seva ya tovuti. Daima kumbuka kuweka kiendelezi .j2 mwishoni ili kuashiria kuwa ni faili ya jinja2.

Hebu sasa tuunde index ya faili ya kiolezo.html.j2.

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

Kiolezo hiki ni faili ya msingi ya HTML ambapo ansible_hostname na ansible_os_family ni vibadilishi vilivyojengewa ndani ambavyo vitawekwa badala ya majina ya wapangishi na mifumo ya uendeshaji ya seva maalum za wavuti kwenye kivinjari.

Sasa, Wacha tuendeshe kitabu cha kucheza.

# ansible-playbook test_server.yml

Sasa wacha tupakie upya kurasa za wavuti kwa seva za wavuti za CentOS 7 na Ubuntu.

Kama unavyoona, habari tofauti kuhusu jina la mwenyeji na familia ya OS imeonyeshwa kwenye kila seva. Na hivyo ndivyo uwekaji picha wa Jinja2 ulivyo mzuri!

VICHUJIO:

Wakati mwingine, unaweza kuamua kubadilisha thamani ya kigezo kwa mfuatano unaoonekana kwa namna fulani.

Kwa mfano, katika mfano uliopita, tunaweza kuamua kufanya viambajengo vya Ansible kuonekana katika herufi kubwa. Ili kufanya hivyo, ongeza thamani ya juu kwa kutofautisha. Kwa njia hii thamani katika kutofautisha inabadilishwa kuwa umbizo la herufi kubwa.

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

Vile vile, unaweza kubadilisha pato la kamba kuwa herufi ndogo kwa kuambatanisha hoja ya chini.

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

Zaidi ya hayo, unaweza kuchukua nafasi ya kamba na nyingine.

Kwa mfano:

Jina la filamu ni {{ movie_name }} => Jina la filamu ni Gonga.

Ili kubadilisha pato na kamba nyingine, tumia hoja ya kubadilisha kama inavyoonyeshwa:

Jina la filamu ni {{ movie_name | badilisha (\Pete\,Heist) }} => Jina la filamu ni Heist.

Ili kurejesha thamani ndogo zaidi katika safu, tumia kichujio cha min.

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

Vile vile, ili kurejesha nambari kubwa zaidi, tumia kichujio cha juu zaidi.

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

Ili kuonyesha thamani za kipekee, tumia kichujio cha kipekee.

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

Tumia kichujio nasibu kupata nambari nasibu kati ya 0 na thamani.

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

VITANZI:

Kama tu katika lugha za programu, tuna vitanzi katika Ansible Jinja2.

Kwa mfano, kutengeneza faili iliyo na orodha ya nambari tumia kitanzi kama inavyoonyeshwa kwenye mfano hapa chini:

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

Unaweza pia kuchanganya for loop na kauli if-engine ili kuchuja na kupata thamani fulani.

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

Na hiyo ni kwa ajili ya hotuba hii. Jiunge nasi katika mada inayofuata ambapo tutajitosa katika kufanya kazi na vigeuzo vinavyofaa na ukweli.