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.