Yadda ake aiki da Sahihan Sauye-sauye da Gaskiya - Sashe na 8


Mun ambaci masu canji a cikin wannan jerin Ansible kuma don kawai dan motsa zuciyar ku. Canji, kamar a cikin yawancin yare na shirye-shirye, asali mahimmin maɓalli ne wanda ke wakiltar ƙima.

Menene Tabbataccen Sunan Mai Canji?

Suna mai canzawa ya haɗa da haruffa, lambobi, masu jaddadarwa ko haɗuwa ko dai 2 ko dukansu. Koyaya, ku tuna cewa suna mai canzawa dole koyaushe ya fara da wasiƙa kuma kada ya ƙunshi sarari.

Bari mu ɗan duba wasu 'yan misalai na ingantattun sunayen da ba za a karɓa ba:

football 
foot_ball
football20 
foot_ball20
foot ball
20 
foot-ball

Bari mu tattauna nau'ikan canzawa:

1. Canje-canje na Littafin Kunya

Canjin Playbook abu ne mai sauki kuma kai tsaye. Don ayyana mai canji a cikin littafin wasan, kawai yi amfani da maɓallin keɓaɓɓun kalmomi kafin rubuta masu canjin ku tare da ɓarna.

Don samun damar darajar mai canzawa, sanya shi tsakanin maɗaura madauri biyu haɗe tare da alamun ambato.

Ga misali littafin wasan kwaikwayo mai sauki:

- hosts: all
  vars:
    greeting: Hello world! 

  tasks:
  - name: Ansible Basic Variable Example
    debug:
      msg: "{{ greeting }}"

A cikin littafin wasan kwaikwayo na sama, ana musanya canjin gaisuwa da ƙimar San duniya! lokacin da aka kunna littafin wasan. Littafin wasan kawai ya buga sakon Barka da duniya! lokacin da aka zartar.

Ari, kuna iya samun jerin ko tsararru na masu canji kamar yadda aka nuna:

Littafin wasan da ke ƙasa yana nuna canjin da ake kira nahiyoyi. Mai canji yana riƙe da ƙimomi daban-daban guda 5 - sunayen nahiyar. Kowane ɗayan waɗannan ƙimar za a iya samun damarsa cikin sauƙi ta amfani da index 0 a matsayin farkon canji.

Misalin littafin wasan kwaikwayo na ƙasa ya dawo da kuma nuna Asiya (Fihirisa 1).

- hosts: all
  vars:
    continents:
      - Africa
      - Asia
      - South America
      - North America
      - Europe
      
  tasks:
  - name: Ansible List variable Example
    debug:
      msg: "{{ continents [1] }}"

Za'a iya tsara jerin masu canji kamar yadda aka nuna:

vars:
    Continents: [Africa, Asia, South America, North America, Europe]

Don jera dukkan abubuwa akan jerin, yi amfani da tsarin koyaushe. Wannan zai yi amfani da dukkanin ƙimomin da ke cikin jeri.

- hosts: all
  vars:
    continents: [Africa, Asia, South America, North America, Europe]

  tasks:
  - name: Ansible array variables example
    debug: 
      msg: "{{ item }}"
    with_items:
      - "{{ continents }}"

Wani nau'in Canji mai saurin fahimta shine ƙamus na kamus.

Ablesarin masu ƙamus ana samun ƙarin tallafi a cikin littafin waƙa. Don ayyana mai ƙamus na ƙamus, kawai gano maɓallin ƙimar maɓallin ke ƙasa da sunan mai ƙididdigar ƙamus ɗin.

hosts: switch_f01

vars:
   http_port: 8080
   default_gateway: 10.200.50.1
   vlans:
       id: 10
       port: 2

A cikin misalin da ke sama, vlans shine ƙamus na kamus yayin id da tashar jiragen ruwa sune nau'i-nau'i masu darajar maɓalli.

hosts: switch_f01

vars:
   http_port: 8080
   default_gateway: 
   vlans:
      id: 10
      port: 20

 tasks:
   name: Configure default gateway
   system_configs:
   default_gateway_ip: “{{ default_gateway  }}“


   name: Label port on vlan 10
   vlan_config:
	vlan_id: “{{ vlans[‘id’]  }}“
     port_id: 1/1/ {{ vlans[‘port’]  }}

Don port_id, tunda muna farawa da ƙimar da rubutu kuma ba mai canzawa ba, alamun ambaton ba lallai ba ne don kewaye da katakon takalmin gyaran kafa.

2. Musamman Masu canji

Ansible yana ba da jerin zaɓaɓɓun maɓuɓɓugan canji waɗanda za a iya nusar da su a cikin samfuran Jinja2 da littattafan wasa amma mai amfani ba zai iya canzawa ko bayyana shi ba.

Gabaɗaya, ana magana da jerin masu canji da za'a iya fayyace su azaman tabbatattun hujjoji kuma waɗannan ana tattara su lokacin da aka aiwatar da littafin wasan kwaikwayo.

Don samun jerin duk masu canji masu saurin amfani, yi amfani da tsarin saitin a cikin Ansible ad-hoc umurnin kamar yadda aka nuna a ƙasa:

# ansible -m setup hostname

Wannan yana nuna fitarwa a cikin tsarin JSON kamar yadda aka nuna:

# ansible -m setup localhost

Daga sakamakon, zamu iya ganin cewa wasu misalai na Ansible masu canji na musamman sun haɗa da:

ansible_architecture
ansible_bios_date
ansible_bios_version
ansible_date_time
ansible_machine
ansible_memefree_mb
ansible_os_family
ansible_selinux

Akwai sauran masu canji masu sauƙin fahimta na musamman waɗannan 'yan misalai ne kaɗan.

Ana iya amfani da waɗannan masu canjin a cikin samfurin Jinja2 kamar yadda aka nuna:

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

3. Kayayyakin Kayayyaki

Aƙarshe, a cikin jeren, muna da Ansible kaya masu canji. Ididdigar kaya fayil ne a cikin tsarin INI wanda ya ƙunshi dukkan rundunonin da Ansible zai sarrafa su.

A cikin ƙididdigar abubuwa, zaku iya sanya canji ga tsarin mai masauki kuma daga baya kuyi amfani dashi a littafin wasan.

[web_servers]

web_server_1 ansible_user=centos http_port=80
web_server_2 ansible_user=ubuntu http_port=8080

Za a iya wakiltar abin da ke sama a cikin fayil ɗin wasan yara YAML kamar yadda aka nuna:

---
   web_servers:
     web_server_1:
        ansible_user=centos
	   http_port=80

web_server_2:
        ansible_user=ubuntu
	   http_port=8080

Idan tsarin masu masaukin sun raba masu canji iri ɗaya, zaku iya ayyana wani rukuni a cikin fayil ɗin kayan kaya don sanya shi mara nauyi kuma ku guje maimaita maimaitawa.

Misali:

[web_servers]

web_server_1 ansible_user=centos http_port=80
web_server_2 ansible_user=centos http_port=80

Za a iya tsara abubuwan da ke sama kamar:

[web_servers]
web_server_1
web_server_2


[web_servers:vars]
ansible_user=centos
http_port=80

Kuma a cikin fayil ɗin littafin YAML, za a bayyana wannan kamar yadda aka nuna:

---
   web_servers:
    
     hosts: 
       web_server_1:
	  web_server_2:

     vars: 
        ansible_user=centos
   http_port=80

Gaskiyar Magana

Lokacin kunna littattafan wasa, aiki na farko wanda Ansible yayi shine aiwatar da saitin aiki. Na tabbata da gaske cewa tabbas kun riski fitowar:

TASK:  [Gathering facts] *********

Hujjoji masu ma'ana ba komai bane face kaddarorin tsarin ko wasu bayanai game da nodes masu nisa wadanda ka hada su. Wannan bayanin ya hada da tsarin gine-gine, da tsarin OS, da bayanan BIOS, da tsarin zamani da kwanan wata, da tsarin aiki, da adireshin IP, da kuma bayanan kayan aiki don ambaton kadan daga ciki.

Don samun gaskiyar game da kowane tsarin kawai yi amfani da tsarin saitin kamar yadda aka nuna a cikin umarnin da ke ƙasa:

# ansible -m setup hostname

Misali:

# ansible -m setup database_server

Wannan yana fitar da babban adadi na bayanai a cikin tsarin JSON kamar yadda aka nuna:

Tabbatattun hujjoji suna da sauki wajan taimakawa masu kula da tsarin wadanda suke gudanar dasu, misali, gwargwadon tsarin aiki, zasu iya sanin wadanne kunshin software ake bukatar shigarwa, da yadda za'a tsara su, da sauransu.

Gaskiyar Al'ada

Shin kun san cewa zaku iya ƙirƙirar takaddunku na al'ada wanda za'a iya tattara su ta Ansible? Ee, zaka iya. To, yaya kuke tafiya game da shi? Bari mu canza kaya mu ga yadda.

Mataki na farko shine ƙirƙirar kundin adireshi /etc/ansible/facts.d a kan hanyar sarrafawa ko nesa.

A cikin wannan kundin adireshin, ƙirƙiri fayil (s) tare da .fact tsawo. Wannan fayil din (bayanan) zai dawo da bayanan JSON lokacin da aka kunna littafin wasan a kan Ansible control node, wanda ya hada da sauran hujjojin da Ansible ke fitarwa bayan littafin wasan.

Ga misalin fayil ɗin gaskiya na al'ada wanda ake kira date_time.fact wanda zai dawo da kwanan wata da lokaci.

# mkdir -p /etc/ansible/facts.d
# vim /etc/ansible/facts.d/date_time.fact

Sanya layuka masu zuwa a ciki.

#!/bin/bash
DATE=`date`
echo "{\"date\" : \"${DATE}\"}"

Adana kuma ka fita fayil din.

Yanzu sanya izinin izini:

# chmod +x /etc/ansible/facts.d/date_time.fact

Yanzu, na ƙirƙiri littafin wasan kwaikwayo kan kumburi mai sarrafawa mai suna check_date.yml.

---

- hosts: webservers

  tasks:
   - name: Get custom facts
     debug:
      msg: The custom fact is {{ansible_local.date_time}}

Endara fayil ɗin gaskiyar zuwa maɓallin ansible_local. Ansible_local yana adana duk bayanan al'ada.

Yanzu gudanar da littafin kunna kuma kiyaye Sahihan bayanan dawo da ingantattun bayanai akan fayil ɗin gaskiya:

# ansible_playbook check_date.yml

Wannan ya kawo mu karshen wannan darasin kan aiki tare da Ansible masu canji da hujjoji.