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.