Bii o ṣe Ṣẹda Awọn awoṣe ni Ansible lati Ṣẹda Awọn atunto Lori Awọn apa ti a Ṣakoso - Apá 7


Ninu Apakan 7 ti jara Ansible, iwọ yoo kọ bi o ṣe le ṣẹda ati lo awọn awoṣe ni Ansible lati ṣẹda awọn atunto ti adani lori awọn apa iṣakoso. Awoṣe ni Ansible jẹ ọna ti o rọrun ati ọrẹ ti titari awọn atunto aṣa si awọn apa iṣakoso ti nṣiṣẹ awọn ọna oriṣiriṣi pẹlu ṣiṣatunṣe kekere ti awọn faili iwe-orin.

Lati ni oye ti o dara julọ ti kini awoṣe jẹ, jẹ ki a ṣe akiyesi oluṣakoso IT ti n kọ imeeli lati pe ẹka rẹ fun ajọ amulumala kan. Ti fi imeeli ranṣẹ si ọkọọkan awọn ọmọ ẹgbẹ kan tun pe wọn lati taagi pẹlu awọn iyawo wọn.

Ti ṣe imeeli ti adani bii pe ara imeeli naa wa kanna, ṣugbọn awọn afikun ati awọn orukọ ti awọn oko tabi aya wọn yatọ. Imeeli naa di awoṣe, lakoko ti awọn olugba ati awọn oko tabi aya kọọkan jẹ awọn oniyipada.

Iyẹn jẹ apẹẹrẹ jeneriki. Idahun lo awọn Jinja2 eyiti o jẹ ẹrọ templating igbalode fun awọn ilana Python ti a lo lati ṣe agbejade akoonu tabi awọn ifihan agbara. Templating jẹ iwulo lalailopinpin nigbati ṣiṣẹda awọn faili iṣeto aṣa fun awọn olupin pupọ ṣugbọn alailẹgbẹ fun ọkọọkan wọn.

Jinja2 lo awọn àmúró isomọ ilọpo meji {{...}} lati ṣafikun oniyipada kan ti o ti ṣalaye. Fun awọn asọye, lo {{# #} ati fun awọn alaye ipo ni lilo {%…%} .

Jẹ ki a ro pe o ni awoṣe data ti awọn VLAN ninu nẹtiwọọki rẹ pẹlu awọn ọna ṣiṣe ogun ti o fẹ lati Titari si awọn oniwun VLAN wọn bi o ti han.

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

Lati ṣe iṣeto yii, awoṣe jinja2 ti o baamu ti a pe ni vlans.j2 yoo han bi o ti han. Bi o ti le ri, awọn oniyipada vlan.id ati vlan.name ti wa ni pipade ni awọn àmúró diduro.

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

Fifi gbogbo rẹ papọ ninu iwe-orin ti o gbe awọn ero oriṣiriṣi oriṣiriṣi si, eyi yoo han bi o ti han:

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

Apẹẹrẹ 1: Tito leto Awọn olupin Wẹẹbu ni Awọn Distros oriṣiriṣi

Ni apẹẹrẹ yii, a yoo ṣẹda awọn faili index.html ti yoo ṣe afihan alaye nipa orukọ olupin & OS ti awọn olupin ayelujara 2 ti o nṣiṣẹ CentOS & Ubuntu.

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

Wẹẹbu afun ti ti fi sori ẹrọ tẹlẹ lori awọn olupin mejeeji.

Nitorinaa jẹ ki a ṣẹda iwe-idaraya test_server.yml bi o ti han:

---

 - hosts: all
   become: yes

   tasks:

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

Awoṣe faili Jinja wa jẹ index.html.j2 eyiti yoo fa si faili index.html lori oju opo wẹẹbu kọọkan. Ranti nigbagbogbo lati fi itẹsiwaju .j2 sii ni ipari lati fihan pe faili jinja2 ni.

Jẹ ki a ṣẹda faili awoṣe awoṣe.html.j2 bayi.

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

Awoṣe yii jẹ faili HTML ipilẹ nibiti ansible_hostname ati ansible_os_family jẹ awọn oniyipada ti a ṣe sinu rẹ ti yoo rọpo pẹlu awọn orukọ alejo ati awọn ọna ṣiṣe ti awọn oju-iwe wẹẹbu kọọkan lori ẹrọ lilọ kiri ayelujara.

Bayi, Jẹ ki a ṣiṣẹ iwe-idaraya.

# ansible-playbook test_server.yml

Bayi jẹ ki a tun gbe awọn oju-iwe wẹẹbu fun CentOS 7 ati awọn oju-iwe ayelujara Ubuntu.

Bi o ti le rii, alaye oriṣiriṣi nipa orukọ olupin ati ẹbi ti OS ti han lori olupin kọọkan. Ati pe iyẹn jẹ bi itura Jinja2 templating ṣe dara to!

Àlẹmọ:

Nigba miiran, o le pinnu lati rọpo iye ti oniyipada kan pẹlu okun ti o han ni ọna kan.

Fun apẹẹrẹ, ninu apẹẹrẹ ti tẹlẹ, a le pinnu lati jẹ ki awọn oniyipada Ansible farahan ni Oke nla. Lati ṣe bẹ, ṣe afikun iye oke si oniyipada. Ni ọna yii iye ninu iyipada le yipada si ọna kika Oke.

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

Bakan naa, o le yi iyipada okun jade si kekere nipasẹ fifi ariyanjiyan isalẹ.

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

Ni afikun, o le rọpo okun pẹlu omiiran.

Fun apere:

Akọle fiimu naa ni {{movie_name}} => akọle fiimu naa ni Oruka.

Lati ropo iṣẹjade pẹlu okun miiran, lo ariyanjiyan ropo bi o ti han:

Akọle fiimu naa ni {{orukọ fiimu] ropo (\ "Iwọn \", "Heist")}} => Akọle fiimu ni Heist.

Lati gba iye ti o kere julọ ninu ọpọlọpọ, lo iyọda min.

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

Ni bakanna, lati gba nọmba ti o tobi julọ, lo àlẹmọ max.

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

Lati ṣe afihan awọn iye alailẹgbẹ, lo iyasọtọ alailẹgbẹ.

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

Lo àlẹmọ laileto lati gba nọmba alainiduro laarin 0 ati iye.

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

Awọn iwadii:

Gẹgẹ bi ninu awọn ede siseto, a ni awọn losiwajulosehin ni Ansible Jinja2.

Fun apẹẹrẹ, lati ṣe faili kan ti o ni akojọ awọn nọmba kan lo fun lupu bi o ti han ninu apẹẹrẹ ni isalẹ:

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

O tun le ṣapọpọ fun lupu pẹlu awọn alaye ti if-miiran lati ṣe iyọlẹ ati gba awọn iye kan.

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

Ati pe eyi ni fun ọjọgbọn yii. Darapọ mọ wa ni akọle ti n bọ nibiti a yoo ṣe igboya ṣiṣẹ pẹlu awọn oniyipada ati otitọ to ṣee ṣe.