Otu esi emepụta egwu egwu na akwụkwọ egwu egwu - Nkebi nke 5
N'ime akụkụ 5 nke usoro ihe omume, anyị ga-akọwa otu esi emepụta egwu egwu na akwụkwọ egwu nwere ike iji modul nwere ike.
Ụgbọ mmiri nwere ike nwere scripts kwụ ọtọ akpọrọ modul nke a na-eji na akwụkwọ egwu egwu maka ịrụ ọrụ pụrụ iche na ọnụ ụzọ dịpụrụ adịpụ.
Module na-abịa aka maka ịrụ ọrụ akpaaka dị ka njikwa ngwugwu, ịdebe akwụkwọ na idetu faịlụ iji kwuo naanị ole na ole. Ha na-enye gị ohere ịme tweaks na faịlụ nhazi ma jikwaa ngwaọrụ ndị dị ka ndị na-anya ụgbọ mmiri, ndị na-agbanwe agbanwe, ndị na-ebu ibu, firewalls na ọtụtụ ngwaọrụ ndị ọzọ.
Ebumnuche nke isiokwu nta a bụ inye gị nkọwapụta nke ọrụ dị iche iche nke modul nwere ike ịrụzu:
Njikwa ngwugwu na Linux
Ijikwa ngwugwu bụ otu n'ime ọrụ kachasị mkpa na nke ndị na-ahụ maka sistemụ na-arụ. Shipgbọ mmiri nwere ike nwere modul na-enyere gị aka ịrụ ọrụ njikwa ngwugwu ma na RedHat na sistemụ Debian.
Ha dịtụ mfe ịkọ. Enwere modul dabara adaba maka njikwa ngwugwu YUM yana modul dnf jikọtara ya na nkesa RHEL ọhụrụ.
N'okpuru bụ ọmụmaatụ ole na ole ka enwere ike iji modul ahụ na akwụkwọ egwuregwu:
--- - 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
Modul ọrụ
Modul ọrụ na-enye ndị na-ahụ maka sistemu ohere ịmalite, kwụsị, melite, kwalite na bugharịa ọrụ na sistemụ.
--- - 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
Detuo modul
Dị ka aha ahụ na-egosi, detuo faịlụ modul site na otu ebe dị na igwe dịpụrụ adịpụ gaa n'ebe dị iche n'otu igwe.
--- - name: Copy file with owner and permissions copy: src: /etc/files/tecmint.conf dest: /srv/tecmint.conf owner: tecmint group: tecmint mode: '0644'
Akwụkwọ egwuregwu ahụ na-ebipụta faịlụ nhazi tecmint.conf site na /etc/files/ directory gaa na /srv/ directory dị ka onye ọrụ tecmint nwere ikike 0644.
A nwekwara ike nọchite anya ikike site na iji ihe nnọchianya dịka egosiri na ahịrị ikpeazụ.
--- - 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
Enwere ike igosipụta ikike dị na ihe atụ gara aga dị ka egosiri na ahịrị ikpeazụ, Enyere onye ọrụ ikike ịgụ na ide ikike, ekenye otu ikike ide akwụkwọ, yana ndị ọzọ nke ụwa ka ekenye ikike ịgụ akwụkwọ.
Modul faịlụ
A na-eji modul faịlụ a na-ebu ọtụtụ ọrụ faịlụ gụnyere ịmepụta faịlụ & akwụkwọ ndekọ aha, inye ikike faịlụ, na ịtọ symlinks.
--- - name: Change file ownership, group, and permissions file: path: /etc/tecmint.conf owner: tecmint group: tecmint mode: '0644'
Egwuregwu a dị n'elu na-emepụta faịlụ a na-akpọ tecmint.conf na ikike ntọala /etc directory na 0644.
--- - name: Remove file (delete file) file: path: /etc/tecmint.conf state: absent
Nke a na-ewepụ ma ọ bụ hichapụ faịlụ tecmint.conf.
--- - name: create a directory if it doesn’t exist file: path: /etc/mydirectory State: directory mode: '0777'
Nke a ga-emepụta ikikere na /etc directory ntọala ikike na 0777.
--- - name: Recursively deleting a directory file: path: /etc/tecmint.conf state: absent
Egwuregwu a dị n'elu na-ehichapụ ndekọ aha ugboro ugboro.
Modul Lineinfile
Modul lineinfile na-enyere aka mgbe ịchọrọ ịgbanwe otu ahịrị na faịlụ. Ọ nwere ike dochie ahịrị dị adị.
--- - name: Ensure SELinux is set to enforcing mode lineinfile: path: /etc/selinux/config regexp: '^SELINUX=' line: SELINUX=disabled
Egwuregwu a dị n'elu na-edozi uru SELINUX ka ọ bụrụ nkwarụ.
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
Nke a na-agbakwunye ntinye 10.200.50.51 linux-console.net na faịlụ /etc/hosts.
Modul Archive
A na-eji modul Archive maka imepụta ebe nchekwa abịakọrọ nke otu faịlụ ma ọ bụ ọtụtụ. Ọ na-eche na isi mmalite mkpakọ dị dị na ebe ebumnuche. Mgbe ebe nchekwa gasịrị, enwere ike ihichapụ ma ọ bụ wepụ faịlụ isi mmalite site na iji nkwupụta wepu=Eziokwu
.
- 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
N'ime egwuregwu a dị n'elu, a na-ehichapụ faịlụ/ụzọ/to/tecmint ka emechara ebe nchekwa.
- name: Create a bz2 archive of /path/to/tecmint archive: path: /path/to/tecmint format: bz2
Nke a na-emepụta faịlụ abịakọrọ n'ụdị bz2 site na faịlụ /path/to/tecmint.
Git Module
Modul ahụ na-ejikwa git checkout nke ebe nchekwa ngwanrọ.
- git: repo: 'https://foosball.example.org/path/to/repo.git' dest: /srv/checkout version: release-0.22
Ụkpụrụ Iwu
Otu n'ime modul a na-ejikarị eme ihe, modul iwu na-ewere aha iwu ma emesịa soro ndepụta arụmụka. A na-agafe iwu a n'otu ụzọ ị ga-esi pịnye na shei 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
Modul iwu ahụ na-eweghachite oge nke sava dịpụrụ adịpụ.
Ọdịiche iji weghachite nsonaazụ nke iwu ịgba ọsọ
Ọtụtụ mgbe, a na-eji akwụkwọ egwu egwu nwere ike rụọ ọrụ na ndị ọbịa a na-achịkwa na-egosipụtaghị ihe nrụpụta na ahịrị iwu. Enwere oge, agbanyeghị, enwere ike ịchọọ ka weghara nsonaazụ ma ọ bụ nsonaazụ. N'akụkụ a, anyị na-ejegharị gị ka ị ga-esi weghara mmepụta akwụkwọ egwu n'ụdị mgbanwe wee gosipụta ya.
A na-eji akwụkwọ ndekọ aha nwere ike iji wepụta mmepụta ọrụ ma chekwaa ya mgbanwe. Ngbanwe ahụ ga-emesịa nwee stdout nke ọrụ ahụ.
Dịka ọmụmaatụ, ka anyị chee na ịchọrọ ịlele ojiji disk nke ọnụ ọnụ jisiri ike na akwụkwọ ndekọ aha dị iche iche site na iji iwu df -Th /
. Ị ga-eji modul 'iwu'
kọwapụta iwu na 'debanye aha'
iji chekwaa mmepụta std na mgbanwe.
Iji gosipụta iwu ahụ, ị ga-eji modul ' debug'
n'akụkụ uru nloghachi stdout.
--- - hosts: all become: yes tasks: - name: Execute /boot usage on Hosts command: 'df -Th /' register: df - debug: var=df.stdout
Ugbu a, ka anyị mee akwụkwọ egwuregwu. N'okwu a, anyị akpọla akwụkwọ egwu egwu check_disk_space.yml.
# ansible-playbook check_disk_space.yml
Dị ka ị hụla, ihe niile a na-emepụta na-agbakọta ma na-eme ka ọ sie ike ịgbaso.
Iji mezie mmepụta ahụ wee mee ka ọ dịkwuo mfe ịgụ, dochie uru nloghachi stdout na stdout_lines.
--- - hosts: all become: yes tasks: - name: Execute /boot usage on Hosts command: 'df -Th /' register: df - debug: var=df.stdout_lines
Jiri ọnọdụ iji jikwaa mmebe egwuregwu
Dịka n'asụsụ mmemme, a na-eji nkwupụta ọnọdụ mgbe enwere ike karịa otu nsonaazụ. Ka anyị leba anya n'ụfọdụ n'ime nkwupụta ọnọdụ ọnọdụ a na-ejikarị eme ihe n'akwụkwọ egwu egwu nwere ike.
Mgbe ụfọdụ, ị nwere ike ịchọ ịrụ ọrụ na ọnụ ọnụ kpọmkwem ọ bụghị ndị ọzọ. Nkwupụta ọnọdụ mgbe
dị mfe iji yana mejuputa n'ime akwụkwọ egwuregwu. Mgbe ị na-eji nkeji mgbe
naanị kwupụta ọnọdụ dị n'akụkụ nkebiokwu ahụ dịka egosiri:
when: condition
Mgbe ọnọdụ ahụ jupụtara, mgbe ahụ, a na-arụ ọrụ ahụ na usoro dịpụrụ adịpụ.
Ka anyị lelee ihe atụ ole na ole:
--- - hosts: all tasks: - name: Install Nginx on Debian apt: name=nginx state=present when: ansible_os_family == “Debian”
Egwuregwu dị n'elu na-etinye Nginx webserver na ndị ọbịa na-agba ọsọ ezinụlọ Debian nke distros.
Ị nwekwara ike iji OR
na NA
onye ọrụ n'akụkụ mgbe nkwupụta ọnọdụ.
--- - hosts: all tasks: - name: Install Nginx on Debian apt: name=nginx state=present when: ansible_os_family == “Debian” and ansible_distribution_version == “18.04”
Mgbe ị na-eji onye ọrụ NA
, nkwupụta abụọ ahụ ga-eju afọ maka ọrụ a ga-arụ.
Egwuregwu dị n'elu na-etinye Nginx na Nodes na-agba ọsọ ezinụlọ Debian nke OS nke bụ ụdị 18.04. N'ụzọ doro anya, nke a ga-abụ Ubuntu 18.04.
Site na onye ọrụ OR
, a na-arụ ọrụ a ma ọ bụrụ na emezuru nke ọ bụla n'ime ọnọdụ a.
--- - hosts: all tasks: - name: Install Nginx on Debian apt: name=nginx state=present when: ansible_os_family == “Debian” or Ansible_os_family == “SUSE”
Egwuregwu dị n'elu na-arụnye sava weebụ Nginx na Debian ma ọ bụ SUSE ezinụlọ nke OS ma ọ bụ ha abụọ.
IHE: Gbaa mbọ hụ na ị na-eji akara nhata okpukpu abụọ ==
mgbe ị na-anwale ọnọdụ.
Ọnọdụ na loops
Enwere ike iji ọnọdụ mee ihe na loop. Dị ka ọmụmaatụ, ị nwere ndepụta nke ọtụtụ ngwungwu achọrọ ka etinyere n'ọnụ ọnụ ndị dịpụrụ adịpụ.
N'akwụkwọ egwuregwu dị n'okpuru ebe a, anyị nwere usoro a na-akpọ ngwugwu nwere ndepụta ngwugwu ndị kwesịrị ịwụnye. A ga-arụ ọrụ ndị a otu na nke ọzọ ma ọ bụrụ na edobere nkebiokwu achọrọ ka ọ bụrụ eziokwu.
--- - 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 }}”
Hazie njikwa mperi
Mgbe ụfọdụ, ọrụ na-ada mgbe a na-agba akwụkwọ egwu egwu. Ka anyị were ya na ị na-arụ ọrụ 5 na sava 3 dị ka egosiri na akwụkwọ egwu dị n'okpuru. Ọ bụrụ na njehie emee na ọrụ 3 (Malite MySQL) na ihe nkesa 2, Ansible ga-akwụsị ịrụ ọrụ ndị fọdụrụ na ihe nkesa 2 ma gbalịa imezu ọrụ ndị fọdụrụ na sava ndị ọzọ.
--- - 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 >>
Ọ bụrụ na ịchọrọ ịdịgidesi ike na mmebe nke akwụkwọ egwuregwu, dịka ọmụmaatụ, kwụsị ogbugbu nke akwụkwọ egwuregwu, ọ bụrụ na otu n'ime sava ahụ daa, gbakwunye nhọrọ.
--- - name: Install Software packages hosts: server1, server2, server3 any_errors_fatal: true tasks:
N'ụzọ dị otú a, ọ bụrụ na otu ọrụ ada ada na otu nkesa, Ansible ga-akwụsị ogbugbu nke dum playbook na niile sava wee pụọ.
Ọ bụrụ na ị ga-achọ ka akwụkwọ egwu ahụ leghara njehie ndị ahụ anya wee gaa n'ihu na-arụ ọrụ ndị fọdụrụnụ, wee jiri ileghara_errors: Ezi nhọrọ.
--- - name: Install Software packages hosts: server1, server2, server3 tasks: - name: Install dependencies << some code >> ignore_errors: True
Mepụta akwụkwọ egwuregwu iji hazie sistemu ka ọ bụrụ steeti akọwapụtara
Na ngalaba a, anyị na-ele anya ụfọdụ nhọrọ ndị ọzọ dị mgbe ị na-agba akwụkwọ egwuregwu.
Ka anyị malite na ọnọdụ nlele ma ọ bụ nhọrọ ịgba ọsọ akọrọ. A na-eji nhọrọ akọrọ ma ọ bụ nlele ọnọdụ mgbe ị na-agba akwụkwọ egwuregwu iji lelee ma ọ bụrụ na a ga-ezute mperi yana ọ bụrụ na enwere mgbanwe ọ bụla a ga-eme na ndị ọbịa a na-achịkwa. Otú ọ dị, ọ dịghị eme mgbanwe ọ bụla na oghere ndị dịpụrụ adịpụ.
Dịka ọmụmaatụ, iji kpoo akwụkwọ egwu a na-akpọ httpd.yml
nke na-arụnye wee malite ọsọ sava weebụ Apache:
# ansible-playbook httpd.yml --check
Nhọrọ ọzọ anyị kwesịrị ileba anya bụ nhọrọ --start-at-task
. A na-eji nke a mgbe akọwapụta aha ọrụ nke akwụkwọ egwuregwu kwesịrị ịmalite ma ọ bụ malite na.
Ka anyị were ọmụmaatụ: Akwụkwọ egwu egwuregwu dị n'okpuru na-akọwapụta ọrụ abụọ: Egwuregwu mbụ na-etinye sava weebụ Apache na nke abụọ na-arụnye utility htop.
--- - name: Install httpd hosts: all tasks: yum: name: httpd state: Installed - name: Install htop yum: name: htop state: started
Ọ bụrụ na ịchọrọ ịwụpụ wụnye Apache webserver kama wụnye ngwa ngwa htop:
# ansible-playbook playbook.yml --start-at-task “Install htop”
N'ikpeazụ, ị nwere ike ịkpado ọrụ ma ọ bụ egwu gị site na ịgbakwunye nhọrọ mkpado na akwụkwọ egwu egwu gị dịka egosiri. Nke a na-abara gị uru mgbe ị nwere nnukwu akwụkwọ egwuregwu ma ịchọrọ ịme ụfọdụ ọrụ site na akwụkwọ egwuregwu niile.
--- - 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"
Iji hapụ mkpado ahụ jiri nhọrọ --skip-tags
dị ka egosiri.
# ansible-playbook playbook.yml --skip-tags "Install"
N'isiokwu a, anyị kpọgara gị site na modul ndị a na-ejikarị eme ihe na Ansible, otu esi eweghachi stdout site na njedebe nke akwụkwọ egwuregwu maka nyocha, na-eji ọnọdụ dị na akwụkwọ egwu egwu na otu esi ejikwa njehie ndị nwere ike ime mgbe ị na-arụ ọrụ. N'ikpeazụ, anyị chịkọtara nhazi nke akwụkwọ egwu egwu yana otu ị ga-esi jiri nhọrọ ndị ọzọ kpebie ọrụ ị ga-arụ ma ọ bụrụ na i bughị n'obi ịme akwụkwọ egwuregwu ahụ dum.