Võimalik õpetus algajatele: juhend, käsud ja näide
Mis on Ansible?
Võimalik on avatud lähtekoodiga automatiseerimis- ja orkestreerimistööriist tarkvara pakkumiseks, konfiguratsioonihalduseks ja tarkvara juurutamiseks. Ansible saab hõlpsasti käitada ja konfigureerida nii Unixi sarnaseid süsteeme kui ka Windows süsteemid, mis pakuvad koodina infrastruktuuri. See sisaldab oma deklaratiivset programmeerimiskeelt süsteemi konfigureerimiseks ja haldamiseks.
Ansible on populaarne oma paigaldamise lihtsuse, klientidega ühendamise lihtsuse, Ansible'i klientide agentide puudumise ja paljude oskuste tõttu. See toimib ühenduse kaudu SSH klientidele, nii et see ei vaja kliendipoolset spetsiaalset agenti ja mooduleid klientidele surudes käivitatakse moodulid seejärel lokaalselt kliendi poolel ja väljund lükatakse tagasi Ansible serverisse.
Kuna see kasutab SSH-d, saab see SSH-võtmeid kasutades klientidega väga hõlpsalt ühendust luua, lihtsustades kogu protsessi. Kliendi üksikasjad, nagu hostinimed või IP-aadressid ja SSH-pordid, salvestatakse failidesse, mida nimetatakse laofailideks. Kui olete varude faili loonud ja selle asustanud, saab ansible seda kasutada.
Miks kasutada Ansiblet?
Siin on mõned Ansible kasutamise plussid/kasud
- Ansible'i üks olulisemaid eeliseid on see, et seda saavad kõik tasuta kasutada.
- Ansible'i installimine ja kasutamine ei vaja erilisi süsteemiadministraatori oskusi ning ametlik dokumentatsioon on väga põhjalik.
- Selle modulaarsus pistikprogrammide, moodulite, varude ja mänguraamatute osas muudab Ansible'i ideaalseks kaaslaseks suurte keskkondade korraldamiseks.
- Ansible on väga kerge ja järjepidev ning operatsioonisüsteemi või selle aluseks oleva riistvara osas pole piiranguid.
- See on ka väga turvaline tänu agentideta võimalustele ja OpenSSH turvafunktsioonide kasutamisele.
- Teine Ansible'i kasutuselevõttu soodustav eelis on selle sujuv õppimiskõver, mille määrab põhjalik dokumentatsioon ning hõlpsasti õpitav struktuur ja konfiguratsioon.
Ansible ajalugu
Siin on olulised maamärgid ansible ajaloost:
- 2012. aasta veebruaris algas projekt Ansible. Selle töötas esmakordselt välja Michael DeHaan, Cobbleri ja Funci, Fedora Unified Network Controlleri looja.
- Algselt nimega AnsibleWorks Inc, ansible tööriista rahastava ettevõtte ostis 2015. aastal RedHat ja hiljem kolis koos RedHatiga ettevõtte katuse alla. IBM.
- Praegu on Ansible kaasatud sellistesse distributsioonidesse nagu Fedora Linux, RHEL, Centos ja Oracle Linux.
Ansibles kasutatud olulised terminid
-
Võimalik server
Masin, kuhu Ansible on installitud ja millest käivitatakse kõik ülesanded ja mänguraamatud
-
moodulid
Põhimõtteliselt on moodul käsk või sarnaste Ansible käskude komplekt, mis on mõeldud täitmiseks kliendi poolel
-
Ülesanne
Ülesanne on osa, mis koosneb ühest lõpetatavast protseduurist
-
Roll
Ülesannete ja nendega seotud failide korraldamise viis, mida hiljem mänguraamatusse kutsuda
-
Fakt
Kliendisüsteemist kogumistoiminguga globaalsetest muutujatest hangitud teave
-
Inventar
Fail, mis sisaldab andmeid võimalike kliendiserverite kohta. Hilisemates näidetes määratletud hostifailina
-
mängima
Näiteraamatu teostamine
-
handler
Ülesanne, mida kutsutakse välja ainult teavitaja olemasolul
-
Teataja
Jaotis, mis on omistatud ülesandele, mis kutsub välja töötleja, kui väljundit muudetakse
-
Tag
Nimetus on määratud ülesandele, mida saab hiljem kasutada just selle konkreetse ülesande või ülesannete rühma väljastamiseks.
Võimalik installimine Linuxis
Kui olete oma võimalusi võrrelnud ja kaalunud ning otsustanud Ansible'i kasuks, on järgmiseks selle installimine oma süsteemi. Me läbime installimise etapid erinevates Linux distributsioonid, kõige populaarsemad, järgmises väikeses õpetuses.
Installige Ansible süsteemidesse Centos/RedHat
Step 1) Installige EPEL repo
[root@ansible-server ~]# sudo yum install epel-release
Step 2) Installige võimalik pakett
[root@ansible-server ~]# sudo yum install -y ansible
Install ansible on Ubuntu/Debiani süsteemid
Step 1) Värskendage pakette
$ sudo apt update
Step 2) Installige tarkvara-atribuudid-üldpakett
$ sudo apt install software-properties-common
Step 3) Installige võimalik isiklik pakettide arhiiv
$ sudo apt-add-repository ppa:ansible/ansible
Step 4) Paigaldage võimalik
$ sudo apt update $ sudo apt install ansible
Võimalikud ad-hoc käsud
Üks lihtsamaid viise Ansible'i kasutamiseks on ad-hoc-käskude kasutamine. Neid saab kasutada siis, kui soovite anda serveris või mitmes serveris käske. Ad-hoc käske ei salvestata edaspidiseks kasutamiseks, vaid need on kiire viis soovitud serveritega suhtlemiseks.
Selle Ansible õpetuse jaoks konfigureeritakse lihtne kahe serveri hostifail, mis sisaldab host1 ja host2.
Saate veenduda, et hostidele on juurdepääs võimalikust serverist, kui annate kõikidele hostidele pingi käsu.
[root@ansible-server test_ansible]# ansible -i hosts all -m ping
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Selgitus:
- Käsu olek, antud juhul SUCCESS
- Host, millel käsk jooksis
- Käsk, mis antakse välja parameetri -m kaudu, antud juhul ping
- Parameetri -i abil saate osutada hosts-failile.
Vajadusel saate sama käsu anda ainult konkreetses hostis.
[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Selgitus:
- Limit parameetrit saab kasutada käskude väljastamiseks ainult konkreetsetel hostifaili hostidel
- Hosti nimi, nagu on määratletud inventarifailis
Kui teil on vaja faili kiiresti mitmesse sihtkohta kopeerida, saate kasutada kopeerimismoodulit ansible, mis kasutab SCP-d. Nii et käsk ja selle väljund näevad välja järgmised:
[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile"
host1 | SUCCESS => {
"changed": true,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/tmp/testfile",
"gid": 0,
"group": "root",
"md5sum": "d41d8cd98f00b204e9800998ecf8427e",
"mode": "0644",
"owner": "root",
"size": 0,
"src": "/root/.ansible/tmp/ansible-tmp-1562216392.43-256741011164877/source",
"state": "file",
"uid": 0
}
host2 | SUCCESS => {
"changed": true,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/tmp/testfile",
"gid": 0,
"group": "root",
"md5sum": "d41d8cd98f00b204e9800998ecf8427e",
"mode": "0644",
"owner": "root",
"size": 0,
"src": "/root/.ansible/tmp/ansible-tmp-1562216392.6-280302911361278/source",
"state": "file",
"uid": 0
}
Selgitus:
- Määratletud mooduli kopeerimine
- Mooduli argumendid on sel juhul allika absoluutne tee ja sihtkoha absoluutne tee.
- Võimalik käsuväljund, mis peegeldab kopeerimiskäsu edukust ja muid üksikasju, nagu sha1 või md5 kontrollsummad faili terviklikkuse kontrollimiseks ja metaandmed, nagu omanik, suurus või load. Paketi installimine hulga serveritesse on lihtne. Ansible'il on mitu moodulit, mis suhtlevad kasutatud installijatega, nagu yum, apt, dnf jne.
Järgmises näites saate teada, kuidas installida paketti yum-mooduli kaudu kahele Centose hostile.
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present'
host1 | SUCCESS => {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.xservers.ro\n * epel: fedora.mirrors.telekom.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: remi.schlundtech.de\n * remi-safe: remi.schlundtech.de\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n ncdu x86_64 1.14-1.el7 epel 51 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nInstalled:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n"
]
}
host2 | SUCCESS => {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.leadhosts.com\n * epel: mirrors.nav.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: mirrors.uni-ruse.bg\n * remi-safe: mirrors.uni-ruse.bg\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n ncdu x86_64 1.14-1.el7 epel 51 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nInstalled:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n"
]
}
Selgitus:
- Selles näites kasutatakse Yum moodulit
- See määrab mooduli argumendid ja sel juhul valite paketi nime ja oleku. Kui olek näiteks puudub, otsitakse pakk läbi ja kui leitakse, siis eemaldatakse
- Kollase värvi korral näete käsu ansible väljundit muudetud olekuga, mis tähendab antud juhul seda, et pakett leiti ja installiti.
- Ansible kaudu välja antud yum install käsu olek. Sel juhul installiti pakett ncdu.x86_64 0:1.14-1.el7.
Loomulikult saab kõiki yumi installimisvalikuid kasutada võimaliku kaudu, sealhulgas värskendamine, installimine, uusim versioon või eemaldamine.
Allolevas näites anti sama käsk varem installitud ncdu paketi eemaldamiseks.
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent'
host1 | SUCCESS => {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nRemoving:\n ncdu x86_64 1.14-1.el7 @epel 87 k\n\nTransaction Summary\n================================================================================\nRemove 1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Erasing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nRemoved:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n"
]
}
host2 | SUCCESS => {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nRemoving:\n ncdu x86_64 1.14-1.el7 @epel 87 k\n\nTransaction Summary\n================================================================================\nRemove 1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Erasing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nRemoved:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n"
]
}
Selgitus:
- Käsu yum väljund näitab, et pakett eemaldati.
Veel üks kasulik ja oluline funktsioon, mida ansible kasutab kliendi serveriga suhtlemiseks, on süsteemi kohta faktide kogumine. Seega hangib see süsteemist riistvara, tarkvara ja versiooniteabe ning salvestab iga väärtuse muutujas, mida saab hiljem kasutada.
Kui vajate üksikasjalikku teavet ansible kaudu muudetavate süsteemide kohta, saate kasutada järgmist käsku. Seadistusmoodul kogub süsteemi muutujatest fakte.
Võimalikud mänguraamatud
Võimalikud mänguraamatud on viis skriptide kaudu kaugsüsteemidesse käskude saatmiseks. Võimalikke käsiraamatuid kasutatakse keerukate süsteemikeskkondade konfigureerimiseks, et suurendada paindlikkust, käivitades skripti ühes või mitmes süsteemis. Võimalikud mänguraamatud on pigem konfiguratsioonikeel kui programmeerimiskeel.
Võimalikud mänguraamatu käsud kasutavad YAML-vormingut, seega pole süntaksit palju vaja, kuid taandust tuleb järgida. Nagu nimigi ütleb, on näidendiraamat näidendite kogu. Mänguraamatu kaudu saate määrata teatud rollid mõnele võõrustajale ja teised rollid teistele hostidele. Seda tehes saate korraldada mitu serverit väga erinevates stsenaariumides, kõik ühes mänguraamatus.
Et kõik üksikasjad oleksid täpsed enne Ansible mänguraamatu näidetega jätkamist, peame esmalt määratlema ülesande. Need on liides rollide ja mänguraamatute võimalikele moodulitele.
Nüüd tutvume Ansible mänguraamatuga, kasutades näidet ühest mänguraamatust ja ühe mänguga, mis sisaldab mitut alltoodud ülesannet.
---
- hosts: group1
tasks:
- name: Install lldpad package
yum:
name: lldpad
state: latest
- name: check lldpad service status
service:
name: lldpad
state: started
Ülaltoodud Ansible esitusraamatu näites on hosti failis olev hostide rühm1 sihitud lldpad paketi installimiseks, kasutades moodulit yum, ja seejärel käivitatakse pärast installimist loodud teenuse lldpad, kasutades teenindusmoodulit, mida kasutatakse enamasti systemd ansambliga suhtlemiseks.
Selgitus:
- Hostide rühm, millel mänguraamat töötab
- Yum moodulit kasutatakse selles ülesandes lldpadi installimiseks
- Teenindusmoodulit kasutatakse pärast installimist, et kontrollida, kas teenus töötab ja töötab
Iga võimalik mänguraamat töötab koos inventarifailiga. Inventarifail sisaldab serverite loendit, mis on jagatud rühmadesse, et paremini kontrollida selliseid üksikasju nagu IP-aadress ja SSH-port iga hosti jaoks.
Inventarifail, mida saate selle Ansible mänguraamatu näite jaoks kasutada, näeb välja selline. Seal on kaks rühma, mille nimi on rühm1 ja rühm2, millest igaüks sisaldab vastavalt host1 ja host2.
[group1] host1 ansible_host=192.168.100.2 ansible_ssh_port=22 [group2] host2 ansible_host=192.168.100.3 ansible_ssh_port=22
Selgitus:
- Grupi nimi
- Hostinimi koos IP-aadressi ja ssh-pordiga, antud juhul vaikimisi, 22.
Teine kasulik Ansible mänguraamatu näide, mis sisaldab seekord kahte näidendit kahele saatejuhile, on järgmine. Esimese hostide rühma, group1, jaoks on selinux lubatud. Kui see on lubatud, ilmub hosti ekraanile teade.
Teise rühma hostide jaoks installitakse pakett httpd ainult siis, kui ansible_os_family on RedHat ja ansible_system_vendor on HP.
Ansible_os_family ja ansible_system_vendor on muutujad, mis on kogutud valikuga collection_facts ja neid saab kasutada nagu selles tingimuslikus näites.
---
- hosts: group1
tasks:
- name: Enable SELinux
selinux:
state: enabled
when: ansible_os_family == 'Debian'
register: enable_selinux
- debug:
Imsg: "Selinux Enabled. Please restart the server to apply changes."
when: enable_selinux.changed == true
- hosts: group2
tasks:
- name: Install apache
yum:
name: httpd
state: present
when: ansible_system_vendor == 'HP' and ansible_os_family == 'RedHat'
Selgitus:
- Näide klausli when Sel juhul, kui OS-i tüüp on Debian. Muutuja ansible_os_family kogutakse funktsiooni collection_facts kaudu.
- Ülesande väljund registreeritakse edaspidiseks kasutamiseks nimega enable_selinux
- Veel üks näide millal-klauslist. Sel juhul kuvatakse hostkasutajale teade, kas SELinux oli tõepoolest varem lubatud.
- Veel üks näide kahest reeglist koosnevast klausist millal
Lisaks ülesannetele on ka mõned konkreetsed ülesanded, mida nimetatakse töötlejateks. Käsitlejatel peab kogu mänguraamatus olema kordumatu nimi. Need toimivad samamoodi nagu tavalised toimingud, kuid töötlejat saab teavitaja kaudu teavitada.
Kui käsitlejat mänguraamatu käitamise ajal ei teavitata, siis seda ei käivitata. Kui aga töötlejat teavitab rohkem kui üks ülesanne, käivitatakse see pärast kõigi ülesannete lõpetamist ainult üks kord.
Allolevas näites näete, kuidas konkreetsel ülesandel on teavitusjaotis, mis kutsub teist ülesannet. Kui esimese ülesande väljundit muudetakse, kutsutakse välja töötleja ülesanne. Parim näide on konfiguratsioonifaili muutmine ja seejärel selle konkreetse teenuse taaskäivitamine.
---
- hosts: group2
tasks:
- name: sshd config file modify port
lineinfile:
path: /etc/ssh/sshd_config
regexp: 'Port 28675'
line: '#Port 22'
notify:
- restart sshd
handlers
- name: restart sshd
service: sshd
name: sshd
state: restarted
Sel juhul kui esimest ülesannet "sshd config file modify port" muudetakse, mis tähendab, et kui port pole algselt 28675, siis seda muudetakse ja ülesanne teavitab samanimelist käitlejat käivitamiseks. ja see taaskäivitab sshd-teenuse.
Selgitus:
- Teataja näide
- Käitleja näide
Võimalikud rollid
Ulatuslike mänguraamatutega tegelemisel on lihtsam ülesandeid rollideks jagada. See aitab ka rolle tulevikus taaskasutada. Rollid on ülesannete kogum, mida saab teisaldada ühest mänguraamatust teise, mida saab käivitada iseseisvalt, kuid ainult mänguraamatu faili kaudu.
Rollid on salvestatud eraldi kataloogidesse ja neil on konkreetne kataloogistruktuur.
[root@ansible-server test2]# tree
.
`-- role1
|-- defaults
| `-- main.yml
|-- handlers
| `-- main.yml
|-- meta
| `-- main.yml
|-- README.md
|-- tasks
| `-- main.yml
|-- tests
| |-- inventory
| `-- test.yml
`-- vars
`-- main.yml
7 directories, 8 files
Vaikekataloogis olev yaml-fail sisaldab vaikemuutujate loendit, mida kasutatakse koos mänguraamatuga. Käsitlejate kataloogi kasutatakse töötlejate salvestamiseks. Metakataloogis peaks olema teave autori ja rollide sõltuvuste kohta. Ülesannete kataloogis on rolli jaoks peamine yamli fail.
Testide kataloog sisaldab yamli esitusraamatu näidisfaili ja laofaili näidisfaili ning seda kasutatakse enamasti testimiseks enne tegeliku rolli loomist.
Kataloog vars sisaldab yaml-faili, milles määratletakse kõik rolli kasutatavad muutujad. Kataloogimallid ja kataloogifailid peaksid sisaldama faile ja malle, mida rolli ülesanded kasutavad.
Rolli kataloogipuu loomiseks peaksite kasutama järgmist käsku koos viimase parameetriga, rolli nimega:
[root@ansible-server test2]# ansible-galaxy init role1
Ansible töötab hästi ka mallidega. Mallide koostamise keelena kasutab see Jinja2.
Järgmises näites saate teada, kuidas näeb välja tavaline jinja2 mall, ja kasutada seda rollis.
Käitusajal, olenevalt sellest, millises andmekeskuses teie server asub, saate muutuja „resolver_ip_addresses” abil valida rohkem kui ühe nimeserveri hulgast, millest igaüks vastab andmekeskusele.
{% for resolver in resolver_ip_addresses %}
nameserver {{ resolver }}
{% endfor %}
options timeout:1
options attempts:5
options rotate
Selles näites on mänguraamatu kataloogis määratletud mõned muutujad, sealhulgas muutuja nimega solver_ip_addresses, millel on sõltuvalt andmekeskusest erinevad väärtused.
- name: Set resolver for server
template:
src: dns.j2
dest: /etc/resolv.conf
group: root
owner: root
mode: "0644"
tag: resolver
Selgitus:
- Kasutatava malli nimi. Mall asub mallide kaustas rolliteel
- Malliga asendatava failinime sihttee kliendi poolel.
- Sihtfaili õigused
Rolliülesannetel võib olla ka sildiväli, millele on omistatud nimi. Sama silti võib jagada rohkem kui üks ülesanne. Võimaliku mänguraamatu käitamisel saate määrata ka sildi, nii et need ülesanded täidetakse.
Võimalik juhtumiuuring
Selles jaotises analüüsime kolme rolliga olulise võimaliku mänguraamatu juhtumiuuringut. Selle eesmärk on tuua praktiline näide sellest, millest me varem rääkisime. Mõnda Ansible'i mänguraamatu õpetuses kasutatud näidet kohandatakse ja kasutatakse selles juhendis.
Allpool on mänguraamatu kataloogistruktuur. Kasutatav Yaml-fail on p4.yml.
[root@ansible-server test_ansible]# ls -lrth total 16K -rw-r--r--. 1 root root 0 Jul 3 10:13 testfile -rw-r--r--. 1 root root 203 Jul 3 13:30 p1.yml -rw-r--r--. 1 root root 125 Jul 3 15:00 hosts -rw-r--r--. 1 root root 488 Jul 3 16:40 p2.yml -rw-r--r--. 1 root root 188 Jul 4 17:33 p4.yml drwxr-xr-x. 5 root root 47 Jul 4 17:35 roles [root@ansible-server test_ansible]# cd roles [root@ansible-server roles]# ls -lrth total 12K drwxr-xr-x. 9 root root 4.0K Jul 4 12:52 httpd drwxr-xr-x. 9 root root 4.0K Jul 4 13:55 selinux drwxr-xr-x. 9 root root 4.0K Jul 4 16:54 resolver
Mänguraamatul on kolm rolli, millest üks nimetatakse lahendajaks, mis määrab serverites konkreetse nimeserveri, kopeerides faili serverist sihtkohta /etc/resolv.conf. Teist nimetatakse httpd-ks ja see installib yum-mooduliga httpd-paketi ning kolmas lubab SELinuxi ja teavitab logitud kasutajat süsteemi taaskäivitusest. Iga roll loodi käsu ansible-galaxy abil.
Lahendaja roll, main.yml ülesanne:
Httpd roll, main.yml ülesanne:
Selinuxi roll, main.yml ülesanne:
Allpool on määratletud p4.yml mänguraamat. See töötab kõigil hostidel, kui käsureal pole teisiti määratud, see töötab juurkasutajana pordis 22 (SSH), kogub enne rollide käivitamist fakte ja täidab kõiki kolme eelnevalt mainitud rolli. Iga rolli saab käivitada iseseisvalt, määrates sildi ansible-playbook käsureal parameetriga –t.
---
- hosts: all
user: root
port: 22
gather_facts: True
roles:
- { role: selinux, tags: selinux }
- { role: httpd, tags: httpd }
- { role: resolver, tags: resolver }
P4.yml esitusraamatu käitamine kahel hostil ja väljundi tõlgendamine. Sama käsku saab käivitada kuivkäivituse parameetriga –check. Kui soovite kasutada parooliga autentimist, kasutage parameetrit -k.
Selgitus:
- Ansible-playbook käsk, mis käivitab p4.yml
- Playbook jätab SELinuxi rolli vahele, kuna see on juba lubatud.
- Ansible leidis, et httpd-pakett on juba installitud, seega tagastab see ok.
- Lahendaja määrati ja rollilahendaja olekut muudeti.
Võimalike käskude petuleht
Installige EPEL repo Centos/RHEL süsteemidesse
[root@ansible-server ~]# sudo yum install epel-release
Installige Centos/RHEL süsteemidesse võimalik pakett
[root@ansible-server ~]# sudo yum install -y ansible
Värskendage Debiani pakette/Ubuntu süsteemid
$ sudo apt update
Installige tarkvara-properties-common pakett Debiani/Ubuntu süsteemid
$ sudo apt install software-properties-common
Paigalda võimalik isiklik pakettide arhiiv Debiani/Ubuntu süsteemid
$ sudo apt-add-repository ppa:ansible/ansible
Install võimalik Debiani/Ubuntu süsteemid
$ sudo apt update $ sudo apt install ansible
Andke pingi käsk kõikides serverites, mis on määratletud inventarifailis nimega hosts
[root@ansible-server test_ansible]# ansible -i hosts all -m ping
Väljasta pingi käsk ainult host2-s
[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2
Kopeerige fail "testfile" kõigis inventarifaili hostides
[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile"
Installige ncdu pakett kõikidesse hostidesse
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present'
Eemaldage ncdu pakett kõigilt hostidelt
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent'
Looge rolli roll1 kataloogistruktuur.
[root@ansible-server test2]# ansible-galaxy init role1
Kuivkäivitatav p4.yml mänguraamat
[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml --check
Käivitage kõigi hostide jaoks parooliga autentimisega p4.yml esitusraamat
[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml -k
kokkuvõte
Maailmas, kus tehnoloogia muutub pidevalt kiires tempos ja kasvab samal ajal uskumatult kiiresti, peavad süsteemiadministraatorid ja arendusinsenerid mõtlema erinevatele lähenemisviisidele, kuidas rutiinseid toiminguid automatiseerida ja suuri serverikogumeid korraldada.
Kuigi neid on palju alternatiiv Ansible'ile (Chef, Puppet), kes teevad sama asja teatud erinevustega, suutis Ansible tõusta neist kõigist kõrgemale oma lihtsuse, täiustatud turvalisuse ja mis kõige tähtsam - sujuva õppimiskõveraga. Tänu nendele omadustele ja Ansible'i kiirele kasutuselevõtule lõime õpetuse, mis on täis näiteid, et saaksite Ansible'iga töötamisel veelgi sujuvama esimese kogemuse.
Selles Ansible'i põhitõdede õpetuses kirjeldasime ansible'i ja rääkisime veidi selle ajaloost. Nimetasime Ansible tugevaid külgi ja eeliseid, mida ansible võib tuua erineva suurusega infrastruktuuride automatiseerimisele ja orkestreerimisele. Määratlesime olulised kasutatavad terminid ja määratlesime Ansible mänguraamatute struktuuri. Põhjalikud näited koos kogu teabega koos üksikasjalike selgitustega.















