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.