Bii o ṣe Ṣẹda Awọn ere ti o daju ati Awọn iwe-idaraya - Apakan 5


Ninu Apakan 5 ti Awọn ọna Ansible yii, a yoo ṣalaye bi o ṣe le ṣẹda Awọn ere idaraya ati Awọn iwe-idaraya nipa lilo awọn modulu Ansible.

Awọn ọkọ oju omi ti o ni ẹtọ pẹlu awọn iwe afọwọkọ ti a pe ni awọn modulu ti a lo ninu awọn iwe-idaraya fun ipaniyan awọn iṣẹ akanṣe lori awọn apa latọna jijin.

Awọn modulu wa ni ọwọ fun adaṣe awọn iṣẹ ṣiṣe bii iṣakoso package, iwe-ipamọ ati didakọ awọn faili lati mẹnuba diẹ diẹ. Wọn gba ọ laaye lati ṣe awọn tweaks lori awọn faili iṣeto ati ṣakoso awọn ẹrọ bii awọn olulana, awọn iyipada, awọn iwọntunwọnsi fifuye, awọn ogiriina ati ogun ti awọn ẹrọ miiran.

Idi ti ipilẹ-ọrọ yii ni lati fun ọ ni iwoye ti awọn iṣẹ-ṣiṣe pupọ ti o le ṣe nipasẹ awọn modulu Ansible:

Iṣakoso Isakojọpọ ni Linux

Iṣakoso idii jẹ ọkan ninu pataki julọ ati awọn iṣẹ loorekoore ti awọn alabojuto eto gbe. Awọn ọkọ oju omi ti o ni ipa pẹlu awọn modulu ti o ṣe iranlọwọ fun ọ lati ṣe awọn iṣẹ iṣakoso package ni mejeeji ni awọn ọna ṣiṣe RedHat ati Debian.

Wọn jẹ irọrun rọrun lati gboju. Modulu apt wa fun iṣakoso package package YUM ati module dnf ti o ni nkan ṣe pẹlu awọn pinpin RHEL tuntun.

Ni isalẹ wa awọn apẹẹrẹ diẹ ti bi o ṣe le lo awọn modulu ninu iwe-idaraya kan:

---
- 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 iṣẹ

Modulu iṣẹ ngbanilaaye awọn alakoso eto lati bẹrẹ, da duro, ṣe imudojuiwọn, igbesoke ati tun gbe awọn iṣẹ sori eto naa.

---
- 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

Ẹda Module

Bi orukọ ṣe daba, daakọ awọn faili adaakọ modulu lati ipo kan lori ẹrọ latọna jijin si ipo ọtọtọ lori ẹrọ kanna.

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

Iwe ẹda-orin daakọ faili atunto tecmint.conf lati/ati be be lo/awọn faili/itọsọna si/srv/ilana bi olumulo tecmint pẹlu awọn igbanilaaye 0644.

Awọn igbanilaaye tun le ṣe aṣoju ni lilo aṣoju aṣoju bi o ti han ni laini to kẹhin.

---
- 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

Awọn igbanilaaye ninu apẹẹrẹ ti tẹlẹ le ni aṣoju bi o ṣe han ni laini to kẹhin, A yan oluṣe ka ati kọ awọn igbanilaaye, a fun ẹgbẹ ni awọn igbanilaaye kikọ, ati pe iyoku agbaye ni a fun awọn igbanilaaye kika.

Module Faili

A lo modulu faili lati gbe ọpọlọpọ awọn iṣiṣẹ faili pẹlu ṣiṣẹda awọn faili & awọn ilana, fifun awọn igbanilaaye faili, ati siseto awọn ọna asopọ.

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

Ere ti o wa loke ṣẹda faili kan ti a pe ni tecmint.conf ninu// ati bẹ awọn igbanilaaye eto awọn igbanilaaye si 0644.

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

Eyi yọkuro tabi paarẹ faili tecmint.conf.

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

Eyi yoo ṣẹda itọsọna kan ninu/ati bẹbẹ awọn igbanilaaye eto itọsọna si 0777.

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

Ere ti o wa loke tun ṣe atunṣe paarẹ itọsọna kan.

Lineinfile Module

Modulu linini naa ṣe iranlọwọ nigbati o ba fẹ yi ila kan pada ninu faili kan. O le rọpo laini ti o wa tẹlẹ.

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

Ere ti o wa loke n ṣeto iye SELINUX si alaabo.

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

Eyi ṣe afikun titẹsi 10.200.50.51 linux-console.net si faili/ati be be/awọn ogun.

Module Archive

A lo modulu Archive fun ẹda ti iwe ifunpọ ti fisinuirindigbindigbin ti ẹyọkan tabi ọpọ awọn faili. O gba pe orisun ifunpọ wa tẹlẹ lori ibi-afẹde ibi-afẹde. Lẹhin igbasilẹ, faili orisun le ṣee paarẹ tabi yọkuro nigbamii nipa lilo alaye naa remove = Otitọ .

- 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

Ninu iṣere ti o wa loke, faili orisun/ọna/si/tecmint ti parẹ lẹhin igbasilẹ ti pari.

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

Eyi ṣẹda faili fisinuirindigbindigbin ni ọna kika bz2 lati faili/ọna/si/tecmint.

Module Git

Modulu naa n ṣakoso awọn isanwo git ti awọn ibi ipamọ sọfitiwia.

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

Modfin Module

Ọkan ninu awọn modulu ti a nlo julọ, module pipaṣẹ gba orukọ aṣẹ ati lẹhinna atẹle nipa atako awọn ariyanjiyan. Aṣẹ naa ti kọja ni ọna kanna ti o fẹ tẹ ninu ikarahun Linux kan.

- 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

Modulu aṣẹ gba akoko igbesoke ti awọn olupin latọna jijin.

Awọn oniyipada lati Gba Awọn abajade ti Awọn pipaṣẹ Ṣiṣe

Nigbagbogbo, Awọn iwe orin ti o ni idahun ni a lo lati ṣe awọn iṣẹ-ṣiṣe lori awọn ogun ti a ṣakoso laisi iṣafihan iṣelọpọ lori laini aṣẹ. Awọn apeere wa, sibẹsibẹ, pe o le nilo lati mu iṣẹjade tabi awọn abajade. Ni apakan yii, a rin ọ nipasẹ bi o ṣe le mu iṣujade iwe orin ni oniyipada kan ati iṣafihan rẹ nigbamii.

A ti lo iforukọsilẹ ti o dahun fun mimujade iṣiṣẹ iṣẹ-ṣiṣe kan ati fipamọ oniyipada kan. Oniyipada yoo lẹhinna ni stdout ti iṣẹ-ṣiṣe naa.

Fun apeere, jẹ ki a ro pe o fẹ lati ṣayẹwo lilo disiki ti awọn apa iṣakoso ni awọn ilana ilana root nipa lilo pipaṣẹ df -Th/. Iwọ yoo lo modulu 'pipaṣẹ' lati ṣalaye aṣẹ ati 'forukọsilẹ' lati fipamọ ifipamọ std ni oniyipada kan.

Lati ṣe afihan aṣẹ naa, iwọ yoo lo modulu ‘debug’ lẹgbẹẹ iye ipadabọ stdout.

---

 - hosts: all
   become: yes

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

     - debug: var=df.stdout

Bayi, jẹ ki a ṣiṣẹ iwe-idaraya. Ni idi eyi, a ti lorukọ iwe-iṣere wa check_disk_space.yml.

# ansible-playbook check_disk_space.yml

Bi o ti rii, iṣelọpọ ti wa ni gbogbo jumle ati pe o nira lati tẹle pẹlu.

Lati ṣatunṣe iṣẹjade ati jẹ ki o rọrun lati ka, rọpo iye ipadabọ stdout pẹlu awọn stdout_lines.

---

 - hosts: all
   become: yes

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

     - debug: var=df.stdout_lines

Lo Awọn ipo lati Ṣakoso ipaniyan Ere

Gẹgẹ bi ninu awọn ede siseto, awọn alaye ipo ni a lo nigbati abajade to ju ọkan lọ ṣee ṣe. Jẹ ki a wo diẹ ninu awọn alaye ipo majemu ti a nlo nigbagbogbo ni Awọn iwe ere idaraya Ansible.

Nigba miiran, o le fẹ lati ṣe awọn iṣẹ lori awọn apa pato kii ṣe awọn miiran. Awọn nigbati Gbólóhùn majẹmu jẹ ohun rọrun lati lo ati gbekalẹ ninu iwe-orin. Nigbati o ba lo nigbawo ipinfunni nirọrun sọ ipo ti o wa nitosi ipin naa bi o ti han:

when: condition

Nigbati ipo naa ba ni itẹlọrun, lẹhinna a ṣe iṣẹ-ṣiṣe lori ẹrọ latọna jijin.

Jẹ ki a ṣayẹwo awọn apẹẹrẹ diẹ:

---
- hosts: all

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

Ere ti o wa loke n fi sori ẹrọ Nginx webserver lori awọn ọmọ ogun ti n ṣiṣẹ idile Debian ti distros.

O tun le lo OR ati AND onišẹ lẹgbẹẹ nigbati alaye majemu naa.

---
- hosts: all

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

Nigbati o ba nlo oniṣe AND , awọn alaye mejeeji gbọdọ ni itẹlọrun fun ṣiṣe naa.

Ere ti o wa loke nfi Nginx sori Awọn apa ti nṣiṣẹ idile Debian ti OS eyiti o jẹ ẹya 18.04. O han ni, eyi yoo jẹ Ubuntu 18.04.

Pẹlu OR onišẹ, a ṣe iṣẹ-ṣiṣe naa ti boya awọn ipo ba ṣẹ.

---
- hosts: all

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

Ere ti o wa loke nfi awọn oju opo wẹẹbu Nginx sori boya Debian tabi idile SUSE ti OS tabi awọn mejeeji.

AKIYESI: Nigbagbogbo rii daju lati lo ami imudogba meji == nigba idanwo ipo kan.

Awọn ipo ni awọn losiwajulosehin

Awọn ipo le tun ṣee lo ninu lupu kan. Sọ fun apeere o ni atokọ ti awọn idii pupọ ti o nilo lati fi sori ẹrọ lori awọn apa latọna jijin.

Ninu iwe-idaraya ti o wa ni isalẹ, a ni opo kan ti a pe ni awọn idii ti o ni atokọ ti awọn idii ti o nilo lati fi sii. Awọn iṣẹ-ṣiṣe wọnyi ni yoo ṣe ọkan lẹhin ekeji ti o ba ṣeto ipin ti o nilo si Otitọ.

---
 - 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 }}”  

Tunto aṣiṣe mimu

Nigba miiran, awọn iṣẹ ṣiṣe kuna nigbati o nṣiṣẹ awọn iwe-idaraya. Jẹ ki a ro pe o n ṣiṣẹ awọn iṣẹ 5 lori awọn olupin 3 bi o ṣe han ninu iwe-orin ni isalẹ. Ti aṣiṣe kan ba waye lori iṣẹ-ṣiṣe 3 (Bibẹrẹ MySQL) lori olupin 2, Ansible yoo da ṣiṣe ṣiṣe awọn iṣẹ to ku lori olupin 2 ati igbiyanju lati pari awọn iṣẹ ṣiṣe ti o ku lori awọn olupin to ku.

---
 - 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 >>

Ti o ba fẹ aitasera ninu ipaniyan ti iwe-iṣere, fun apẹẹrẹ, da ipaniyan ti iwe-idaraya ṣiṣẹ, ti ọkan ninu awọn olupin ba kuna, ṣafikun aṣayan naa.

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

Ni ọna yii, ti iṣẹ-ṣiṣe kan ba kuna lori olupin kan, Ansible yoo da ipaniyan ti gbogbo iwe-orin lori gbogbo awọn olupin ati ijade kuro.

Ti o ba fẹ iwe-idaraya lati foju awọn aṣiṣe ki o tẹsiwaju lati ṣe awọn iṣẹ ṣiṣe ti o ku, lẹhinna lo foju_ootọ: Aṣayan otitọ.

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

Ṣẹda Awọn iwe-orin lati tunto Awọn eto si Ipinle ti a Ṣalaye

Ni apakan yii, a wo diẹ ninu awọn aṣayan afikun ti o wa nigba ṣiṣe iwe-orin kan.

Jẹ ki a bẹrẹ pẹlu ipo Ṣayẹwo tabi aṣayan ṣiṣe gbigbẹ. Ṣiṣe gbigbẹ tabi aṣayan ipo ayẹwo ni a lo nigbati o ba n ṣiṣẹ iwe-orin lati ṣayẹwo ti eyikeyi awọn aṣiṣe yoo ba pade ati ti awọn ayipada eyikeyi ba wa ti yoo ṣe lori awọn ogun ti a ṣakoso. O, sibẹsibẹ, ko ṣe awọn ayipada eyikeyi si awọn apa latọna jijin.

Fun apẹẹrẹ, lati gbẹ ṣiṣe iwe-orin ti a pe ni httpd.yml ti o nfi sori ẹrọ ati bẹrẹ ṣiṣe wẹẹbu Apache:

# ansible-playbook httpd.yml --check

Aṣayan miiran ti a nilo lati wo ni aṣayan - Ibẹrẹ-ni iṣẹ-ṣiṣe . Eyi ni a lo nigbati o ba n sọ orukọ iṣẹ-ṣiṣe ti iwe-orin yẹ ki o bẹrẹ tabi bẹrẹ ni.

Jẹ ki a mu apẹẹrẹ kan: Iwe-iṣere ti o wa ni isalẹ sọ awọn iṣẹ-ṣiṣe 2 jade: Ere akọkọ nfi olupin ayelujara Apache sori ẹrọ ati ohun elo keji ti o fi sori ẹrọ ohun elo htop.

---
 - name: Install httpd

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

- name: Install htop

      yum:  
      name: htop
      state: started

Ti o ba fẹ foo lati fi sori ẹrọ Webserver Apache ati dipo fi sori ẹrọ ṣiṣe iwulo htop:

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

Ni ikẹhin, o le fi aami le awọn iṣẹ rẹ tabi awọn ere nipasẹ fifi aṣayan awọn afi si iwe-akọrin rẹ bi o ti han. Eyi wa ni ọwọ nigbati o ba ni iwe-orin nla nla ati pe o fẹ lati ṣiṣe awọn iṣẹ-ṣiṣe kan pato lati gbogbo iwe-orin.

---
 - 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"

Lati fi awọn aami afi silẹ lo awọn aṣayan --kiki-afi bi a ti han.

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

Ninu akọle yii, a mu ọ nipasẹ awọn modulu ti a lo nigbagbogbo ni Ansible, bii o ṣe le gba igbapada lati ipaniyan iwe-orin kan fun itupalẹ, ni lilo awọn ipo inu iwe-orin ati bi o ṣe le ṣakoso awọn aṣiṣe ti o le waye nigbati o ba n ṣiṣẹ awọn iṣẹ ṣiṣe. Ni ikẹhin, a tun ṣe atunto iṣeto ti awọn iwe-idaraya ati bii o ṣe le lo awọn aṣayan afikun lati pinnu iru awọn iṣẹ ṣiṣe lati ṣiṣẹ ti o ko ba ni ero lati ṣiṣẹ gbogbo iwe-orin.