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.