Yadda ake ƙirƙirar Sahihan Wasanni da Littattafan Wasanni - Kashi na 5


A cikin wannan Kashi na 5 na Jerin Sahihi, zamuyi bayanin yadda ake kirkirar Ansible Plays da Playbooks ta hanyar amfani da ingantattun modulu.

Jiragen ruwa masu haske tare da rubutun kai tsaye da ake kira modulu waɗanda ake amfani dasu a cikin littattafan wasan don aiwatar da ayyuka na musamman akan nodes masu nisa.

Ulesananan kayayyaki sun kasance masu amfani don ayyukan atomatik kamar gudanar da kunshin, adanawa da kuma kwafin fayiloli don ambaci kaɗan. Sun ba ka damar yin tweaks kan fayilolin daidaitawa da sarrafa na'urori irin su masu ba da hanya, masu sauyawa, masu daidaita ma'auni, garun wuta da sauran wasu na'urori.

Makasudin wannan karamin jigon shine ya baku bayyanannen ayyuka da dama wadanda za'a iya aiwatar dasu ta hanyar ingantattun kayayyaki:

Gudanar da Kunshin a cikin Linux

Gudanar da kunshin ɗayan ɗayan mahimman ayyuka ne wanda yawancin masu gudanarwa ke gudanarwa. Saukakkun jiragen ruwa tare da kayayyaki waɗanda zasu taimaka muku aiwatar da ayyukan kula da kunshin duka a cikin tsarin RedHat da Debian.

Suna da ɗan sauƙin tsammani. Akwai samfurin da ya dace don gudanar da kunshin YUM da dnf module hade da sababbin raƙuman RHEL.

Da ke ƙasa akwai 'yan misalai na yadda za a iya amfani da abubuwan a cikin littafin ɗan wasa:

---
- name: install Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         dnf:  
          name: httpd  
          State: latest
---
- name: install Apache webserver
  hosts: databases

  tasks:
       - name: install Apache webserver
         apt:  
          name: apache2  
          State: latest

Module na Sabis

Moduleungiyar sabis ɗin tana bawa masu gudanarwa tsarin damar farawa, dakatarwa, sabuntawa, haɓakawa da sake loda ayyuka akan tsarin.

---
- name: Start service httpd, if not started
  service:
    name: httpd
    state: started
---
- name: Stop service httpd
  service:
    name: httpd
    state: stopped
---
- name: Restart network service for interface eth0
  service:
    name: network
    state: restarted
    args: enp2s0

Kwafi Module

Kamar yadda sunan ya nuna, kwafi na kwafin fayiloli daga wuri guda akan mashin mai nisa zuwa wani wuri daban akan mashin guda.

---
- name: Copy file with owner and permissions
  copy:
    src: /etc/files/tecmint.conf
    dest: /srv/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: '0644'

Littafin littafin yana kwafe fayil din jeri tecmint.conf daga/sauransu/fayiloli/shugabanci zuwa/srv/shugabanci azaman tecmint mai amfani da izini 0644.

Hakanan ana iya wakiltar izini ta amfani da wakilci na alama kamar yadda aka nuna a layin ƙarshe.

---
- name: Copy file with owner and permissions
  copy:
    src: /etc/files/tecmint.conf
    dest: /srv/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: u=rw, g=r, o=r

Izini a cikin misalin da ya gabata za a iya wakilta kamar yadda aka nuna a layin ƙarshe, An sanya wa mai amfani karatu da rubuta izini, an sanya rukuni ya rubuta izini, kuma sauran duniya an sanya izinin izini.

Module Fayil

Ana amfani da rukunin fayil don ɗaukar ayyukan fayil da yawa waɗanda suka haɗa da ƙirƙirar fayiloli & kundayen adireshi, sanya izini na fayil, da saita alamomi.

---
- name: Change file ownership, group, and permissions
  file:
    path: /etc/tecmint.conf
    owner: tecmint
    group: tecmint
    mode: '0644'

Wasan da ke sama ya ƙirƙiri fayil ɗin da ake kira tecmint.conf a cikin/sauransu izini saitin izini zuwa 0644.

---
- name: Remove file (delete file)
  file:
    path: /etc/tecmint.conf
    state: absent

Wannan yana cire ko share fayil din tecmint.conf.

---
- name: create a directory if it doesn’t exist
  file:
    path: /etc/mydirectory
    State: directory
    mode: '0777'

Wannan zai haifar da kundin adireshi a cikin/etc saitin izini zuwa 0777.

---
- name: Recursively deleting a  directory
  file:
    path: /etc/tecmint.conf
    state: absent

Wasan da ke sama ya sake share kundin adireshi.

Lineinfile Module

Maballin layi yana taimakawa lokacin da kake son canza layi ɗaya a cikin fayil. Zai iya maye gurbin layin da yake ciki.

---
 - name: Ensure SELinux is set to enforcing mode
  lineinfile:
    path: /etc/selinux/config
    regexp: '^SELINUX='
    line: SELINUX=disabled

Wasan da ke sama ya saita ƙimar SELINUX zuwa naƙasasshe.

SELINUX=disabled
---
- name: Add a line to a file if the file does not exist, without         passing regexp
  lineinfile:
    path: /etc/hosts
    line: 10.200.50.51 linux-console.net
    create: yes

Wannan yana ƙara shigarwar 10.200.50.51 linux-console.net zuwa fayil ɗin/sauransu/runduna.

Module Amsoshi

Ana amfani da ƙirar Taskar Amsoshi don ƙirƙirar matattarar bayanai na fayil ɗaya ko fayiloli da yawa. Yana ɗauka cewa tushen matsi yana nan akan inda aka nufa. Bayan ajiyar tarihi, daga baya za'a iya share ko cire fayil ɗin asalin ta amfani da bayanin cire = Gaskiya ne .

- name: Compress directory /path/to/tecmint_dir/ into /path/to/tecmint.tgz
  archive:
    path: /path/to/tecmint_dir
    dest: /path/to/tecmint.tgz

This compresses the /path/to/tecmint_dir  directory to /path/to/tecmint.tgz
- name: Compress regular file /path/to/tecmint into /path/to/foo.gz and remove it
  archive:
    path: /path/to/tecmint
    dest: /path/to/tecmint.tgz
    remove: yes

A cikin wasan kwaikwayon da ke sama, an share fayil ɗin tushe/hanya/zuwa/tecmint bayan an kammala aikin tarihin.

- name: Create a bz2 archive of /path/to/tecmint
  archive:
    path: /path/to/tecmint
    format: bz2

Wannan yana ƙirƙirar fayil mai matsewa a cikin tsarin bz2 daga/hanyar/zuwa/tecmint fayil.

Git Module

Moduleaƙwalwar tana sarrafa git ɗin rajistan wuraren ajiyar software.

- git:
    repo: 'https://foosball.example.org/path/to/repo.git'
    dest: /srv/checkout
    version: release-0.22

Module na Umarni

Ofaya daga cikin matakan da aka fi amfani da su, rukunin umarni yana ɗaukar sunan umarnin sannan daga baya jerin maganganu suka biyo baya. Umurnin an wuce shi ta hanyar da zaku rubuta a cikin kwasfan Linux.

- name: Executing a command using the command module
  command: cat helloworld.txt
---
 - name: Check the remote host uptime
    hosts: servers
    tasks:
      - name: Execute the Uptime command over Command module
        register: uptimeoutput
        command: "uptime"

- debug:
          var: uptimeoutput.stdout_lines

Modulea'idodin umarni suna dawo da lokacin aiki na sabobin nesa.

Sauye-sauye don dawo da Sakamakon Gudun Gudun

Yawancin lokaci, ana amfani da littattafan wasa masu amfani don aiwatar da ayyuka a kan rundunonin gudanarwa ba tare da nuna fitarwa akan layin umarni ba. Akwai lokuta, kodayake, ana iya buƙatar ku don ɗaukar fitarwa ko sakamako. A wannan ɓangaren, muna bi da ku ta yadda zaku iya ɗaukar fitowar littafin wasan kwaikwayo a cikin canji kuma daga baya a nuna shi.

Ana amfani da rajista mai amfani don ɗaukar fitowar aiki da adana shi mai canji. Mai canzawa daga baya zai ƙunshi ƙarfin aikin.

Misali, bari mu ɗauka cewa kana so ka bincika amfani da faifai na nodes masu sarrafawa a cikin kundin adireshin da ke amfani da umarnin df -Th/. Za ku yi amfani da ƙirar 'umarni' koyaushe don ayyana umarni da 'rejista' don adana fitowar std a cikin canji.

Don nuna umarnin, za ku yi amfani da ƙirar 'debug' tare da ƙimar dawowar stdout.

---

 - hosts: all
   become: yes

   tasks:
     - name: Execute /boot usage on Hosts
       command: 'df -Th /'
       register: df

     - debug: var=df.stdout

Yanzu, bari mu gudanar da littafin wasan kwaikwayo. A wannan halin, mun sanya wa littafin wasanmu check_disk_space.yml.

# ansible-playbook check_disk_space.yml

Kamar yadda kuka gani, fitowar gabaɗaya ya tashi sama kuma yana sa wahalar bin sa.

Don daidaita aikin fitarwa kuma sauƙaƙe a karanta shi, maye gurbin ƙimar dawowar stdout da stdout_lines.

---

 - hosts: all
   become: yes

   tasks:
     - name: Execute /boot usage on Hosts
       command: 'df -Th /'
       register: df

     - debug: var=df.stdout_lines

Yi amfani da Yanayi don Sarrafa Kashe Play

Kamar dai a cikin harsunan shirye-shirye, ana amfani da bayanan sharaɗi yayin da sakamako fiye da ɗaya zai yiwu. Bari mu duba wasu daga cikin maganganun sharaɗin da aka saba amfani dasu a cikin littattafan wasan kwaikwayo masu sauki.

Wani lokaci, kuna iya yin ayyuka akan takamaiman nodes ba wasu ba. The lokacin da Bayanin sharaɗi mai sauƙin amfani da aiwatarwa a cikin littafin wasan ɗan adam. Lokacin amfani da lokacin magana kawai bayyana yanayin kusa da magana kamar yadda aka nuna:

when: condition

Lokacin da yanayin ya gamsu, to ana yin aikin akan tsarin nesa.

Bari mu bincika wasu misalai:

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian”

Wasan da ke sama yana girka Nginx webserver akan rundunonin da ke tafiyar da gidan Debian na distros.

Hakanan zaka iya amfani da OR da AND afareta kusa da lokacin bayanin sharaɗin.

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian” and
           ansible_distribution_version == “18.04”

Lokacin amfani da mai amfani da AND , duka maganganun dole ne su gamsu don aiwatar da aikin.

Wasan da ke sama yana girka Nginx akan Nodes wanda ke tafiyar da gidan Debian na OS wanda shine sigar 18.04. Babu shakka, wannan zai zama Ubuntu 18.04.

Tare da KO mai aiki, ana aiwatar da aikin idan ɗayan sharuɗɗan sun cika.

---
- hosts: all

  tasks:
  - name: Install Nginx on Debian
     apt: name=nginx state=present
     when: ansible_os_family == “Debian” or
	      Ansible_os_family == “SUSE”

Wasan da ke sama yana shigar da Nginx webservers akan Debian ko SUSE dangin OS ko duka biyun.

NOTE: Kullum ka tabbatar kayi amfani da alamar daidaito biyu == lokacin gwajin wani yanayi.

Yanayi a cikin madaukai

Hakanan za'a iya amfani da yanayi a madauki. Misali ka ce misali kana da jerin kunshe-kunshe da yawa da ake buƙatar girka su a kan nodu masu nisa.

A cikin littafin wasan kwaikwayon da ke ƙasa, muna da tsararru waɗanda ake kira kunshe-kunshe waɗanda ke ƙunshe da jerin kunshin da ake buƙatar shigarwa. Wadannan ayyukan za'a gudanar dasu daya bayan daya idan an saita sashin da ake bukata zuwa Gaskiya.

---
 - name: Install Software packages
    hosts: all
    vars:
	packages:
    • name: nginx
required: True
    • name: mysql
required: True
    • name: apache
required: False



   tasks:
    • name: Install “{{ item.name }}”on Debian
apt: 
 name: “{{ item.name }}”
 state: present 
When: item.required == True
loop: “{{ packages }}”  

Sanya Kuskuren Kulawa

Wasu lokuta, ayyuka suna faɗuwa yayin gudanar da littattafan wasa. Bari mu ɗauka cewa kuna gudanar da ayyuka 5 a kan sabobin 3 kamar yadda aka nuna a littafin littafin da ke ƙasa. Idan kuskure ya faru akan aiki na 3 (Fara MySQL) akan uwar garke 2, Ansible zai daina aiwatar da sauran ayyukan akan uwar garken 2 kuma yayi ƙoƙarin kammala sauran ayyukan akan sauran sabobin.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   tasks:
- name: Install dependencies
<< some code >>

- name: Install MySQL database
<< some code >>

- name: Start MySQL
<< some code >>

- name: Install Nginx
<< some code >>

- name: Start Nginx
<< some code >>

Idan kuna son daidaito a cikin aiwatar da littafin kunna, misali, dakatar da aiwatar da littafin wasa, idan ɗayan sabobin ya gaza, ƙara zaɓi.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   any_errors_fatal:  true
   tasks:

Wannan hanyar, idan ɗayan aiki ya gaza akan sabar ɗaya, Ansible zai dakatar da aiwatar da littafin gaba ɗaya akan dukkan sabar sannan ya fita.

Idan kuna son littafin wasan yayi watsi da kurakurai kuma ku ci gaba da aiwatar da ragowar ayyukan, sa'annan kuyi amfani da sakannin_gyara: Gaskiya zaɓi.

---
 - name: Install Software packages
   hosts: server1, server2, server3
   tasks:
- name: Install dependencies
<< some code >>
     ignore_errors: True

Createirƙira Litattafan Wasa don Saka Tsarin Tsarin ga aayyadadden Jiha

A wannan ɓangaren, zamu kalli wasu ƙarin zaɓuɓɓuka waɗanda suke akwai yayin gudanar da littafin wasan kwaikwayo.

Bari mu fara da Yanayin Duba ko Dry run zaɓi. Ana amfani da zaɓin bushe ko zaɓi na yanayin dubawa yayin gudanar da littafin ɗan wasa don bincika idan akwai wasu kurakurai kuma idan akwai wasu canje-canje da za a yi akan rundunonin da aka gudanar. Amma, duk da haka, baya yin canje-canje ga nodes masu nisa.

Misali, don bushewa wani littafin kunnawa mai suna httpd.yml wanda ya girka kuma ya fara gudu Apache webserver:

# ansible-playbook httpd.yml --check

Sauran zabin da muke bukatar dubawa shine zabin --farawa-kan aiki . Ana amfani da wannan yayin sanya sunan aikin da littafin kunnawa zai fara ko farawa a ciki.

Bari mu dauki misali: Littafin wasan kwaikwayo da ke kasa ya fitar da ayyuka 2: Wasan farko yana shigar da sabar yanar gizo ta Apache kuma na biyu yana girke mai amfani da htop.

---
 - name: Install httpd

   hosts: all
   tasks:
    yum:	 
name: httpd
     state: Installed

- name: Install htop

      yum:  
      name: htop
      state: started

Idan kana son tsallake shigar da Apache webserver kuma a maimakon shigar da htop utility gudu:

# ansible-playbook playbook.yml --start-at-task “Install htop”

Aƙarshe, zaka iya yiwa aikinka alama ko wasan kwaikwayo ta ƙara zaɓin alamun a cikin littafin wasan ka kamar yadda aka nuna. Wannan ya zo da sauki lokacin da kuna da babban littafin littafi kuma kuna son gudanar da takamaiman ayyuka daga dukkan littafin wasan.

---
 - name: Install httpd
   tags: Install and start
   hosts: all
   tasks:
    yum:	 
name: httpd
     state: Installed

   tags: Install

    • service: 
name: httpd
state: started
# ansible-playbook playbook.yml -tags "Install"

Don barin alamun suna amfani da zaɓin --skip-tags kamar yadda aka nuna.

# ansible-playbook playbook.yml --skip-tags "Install"

A cikin wannan batun, mun ɗauke ku ta hanyoyin da aka saba amfani da su a cikin Ansible, yadda za a dawo da ƙarfi daga aiwatar da littafin wasan kwaikwayo don nazari, ta yin amfani da sharuɗɗa a cikin littafin wasan da yadda za a gudanar da kurakurai da ka iya faruwa yayin gudanar da ayyuka. Aƙarshe, mun sake sanya jeri na littattafan wasa da kuma yadda zaku iya amfani da ƙarin zaɓuɓɓuka don yanke shawarar ayyukan da zaku gudanar idan baku da niyyar gudanar da littafin wasan gaba ɗaya.