Yadda ake Kirkirar Samfura cikin Sauki don Kirkiro Gudanarwa akan Nodes Masu Sarrafawa - Sashe na 7


A cikin wannan Sashe na 7 na Jerin Ansible, zaku koyi yadda ake ƙirƙira da amfani da samfura a cikin Ansible don ƙirƙirar ƙayyadaddun tsari a kan nodes masu sarrafawa. Samun haske a cikin Ansible hanya ce mai sauƙi da kuma abokantaka ta turawa daidaitattun al'ada ga nodes masu sarrafawa waɗanda ke aiki da tsarin daban-daban tare da ƙaramin gyara fayilolin littafin wasan.

Don samun kyakkyawar ma'anar abin da samfuri yake, bari muyi la'akari da manajan IT wanda ke tsara imel don gayyatar sashinsa don liyafa na giyar. Ana aika imel ɗin ga kowane ɗayan membobin kuma an gayyace su don yin alama tare da matansu.

An tsara imel ɗin ta yadda jikin imel ɗin zai kasance ɗaya, amma addressees da sunayen abokan aurensu sun bambanta. Adireshin imel ya zama samfuri, yayin da masu karɓa da ma aurata masu canji ne.

Wannan misali ne na gama gari. Mai amfani yana amfani da Jinja2 wanda shine injinan templating na zamani don tsarin Python da ake amfani dashi don samarda abun ciki mai ƙarfi ko maganganu. Templating yana da amfani sosai yayin ƙirƙirar fayilolin sanyi na al'ada don sabobin da yawa amma na musamman ga kowane ɗayansu.

Jinja2 yana amfani da takalmin madauri biyu {{...}} don haɗawa da canjin da aka ayyana. Don tsokaci, yi amfani da {{# #} kuma don bayanan larura amfani da {%…%} .

Bari mu ɗauka cewa kuna da samfurin bayanai na VLANs a cikin hanyar sadarwar ku tare da tsarin karɓar bakuncin waɗanda kuke son turawa zuwa ga VLAN ɗin su kamar yadda aka nuna.

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

Don bayar da wannan daidaitawar, samfurin jinja2 mai suna vlans.j2 zai bayyana kamar yadda aka nuna. Kamar yadda kake gani, masu canji vlan.id da vlan.name an saka su a cikin takalmin gyaran kafa.

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

Haɗa shi gaba ɗaya a cikin littafin wasan kwaikwayo wanda ke sanya injunan watsa shiri daban-daban, wannan zai bayyana kamar yadda aka nuna:

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

Misali 1: Harhada Sabbin Yanar Gizon a Daban-Daban

A cikin wannan misalin, zamu ƙirƙiri fayilolin index.html waɗanda zasu nuna bayanai game da sunan mai masauki & OS na sabobin yanar gizo 2 da ke gudana CentOS & Ubuntu.

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

An riga an shigar da Apache webserver akan sabobin biyu.

Don haka bari mu kirkiro littafin gwaji_server.yml kamar yadda aka nuna:

---

 - hosts: all
   become: yes

   tasks:

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

Samfurin fayil ɗinmu na Jinja shine index.html.j2 wanda za'a turashi zuwa fayil ɗin index.html akan kowane mai amfani da yanar gizo. Koyaushe ka tuna saka sanya .j2 a karshen don nuna cewa fayil ne na jinja2.

Bari yanzu ƙirƙirar fayil ɗin samfuri.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>

Wannan samfurin shine ainihin HTML fayil inda ansible_hostname da ansible_os_family an gina su a cikin canje-canje waɗanda za a maye gurbinsu tare da sunayen masaƙai daban-daban da kuma tsarin aiki na masu satar yanar gizo a kan mai binciken.

Yanzu, Bari mu gudanar da littafin wasan kwaikwayo.

# ansible-playbook test_server.yml

Yanzu bari mu sake loda shafukan yanar gizon duka CentOS 7 da Ubuntu webservers.

Kamar yadda kake gani, an nuna bayanai daban-daban game da sunan mai masauki da dangin OS a kan kowane sabar. Kuma wannan shine kyakkyawan yanayin Jinja2!

Tace:

Wani lokaci, kuna iya yanke shawarar sauya darajar mai canjin da zaren da ke bayyana a wata hanya.

Misali, a misalin da ya gabata, zamu iya yanke shawarar sanya Masu canji masu saurin bayyana a babban Harafi. Don yin haka, ɗaura darajar sama zuwa mai canji. Wannan hanyar ƙimar da ke cikin canjin ya canza zuwa tsarin Babban Harafi.

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

Hakanan, zaku iya sauya fitowar kirtani zuwa ƙaramin ƙarami ta hanyar haɗa ƙaramar magana.

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

Allyari, zaku iya maye gurbin kirtani tare da wani.

Misali:

Taken fim din shine {{movie_name}} => Sunan fim din shine Zobe.

Don maye gurbin fitarwa tare da wani zaren, yi amfani da maye gurbin kamar yadda aka nuna:

Taken fim din shine {{sunan_ movie | maye gurbin (\ "Zobe \", "Heist")}} => Sunan fim ɗin Heist.

Don dawo da ƙaramin ƙima a cikin tsararru, yi amfani da matatar min.

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

Hakanan, don dawo da mafi girma lamba, yi amfani da matatar max.

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

Don nuna ƙimomi na musamman, yi amfani da matatar ta musamman.

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

Yi amfani da matattarar bazuwar don samun bazuwar lamba tsakanin 0 da ƙimar.

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

Duba:

Kamar dai a cikin harsunan shirye-shirye, muna da madaukai a cikin Ansible Jinja2.

Misali, don ƙirƙirar fayil mai ɗauke da jerin lambobi amfani da madauki kamar yadda aka nuna a misalin da ke ƙasa:

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

Hakanan zaka iya haɗuwa da madauki tare da maganganun if-wasu don tacewa da samun wasu ƙimomin.

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

Kuma wannan shine don wannan laccar. Kasance tare damu a cikin jigo na gaba inda zamu yunkuro don aiki tare da masu canji da gaskiya.