Si të instaloni dhe konfiguroni Ansible në Ubuntu 16.04
Prezantimi
Sistemet e menaxhimit të konfigurimit janë krijuar për të bërë kontrollin e një numri të madh serverësh të lehtë për administratorët dhe ekipet e operacioneve. Ato ju lejojnë të kontrolloni shumë sisteme të ndryshme në një mënyrë të automatizuar nga një vend qendror.
Ndërsa ka shumë sisteme të njohura të menaxhimit të konfigurimit të disponueshëm për sistemet Linux, të tilla si Chef dhe Puppet, këto janë shpesh më komplekse sesa duan ose kanë nevojë shumë njerëz. Ansible është një alternativë e shkëlqyeshme për këto opsione sepse ka një shpenzim shumë më të vogël për të filluar.
Në këtë udhëzues, ne do të diskutojmë se si të instaloni Ansible në një server Ubuntu 16.04 dhe do të shqyrtojmë disa baza se si të përdorni softuerin.
Si funksionon Ansible?
Ansible funksionon duke konfiguruar makinat e klientit nga një kompjuter me komponentë Ansible të instaluar dhe konfiguruar.
Ai komunikon përmes kanaleve normale SSH në mënyrë që të marrë informacion nga makinat e largëta, të lëshojë komanda dhe të kopjojë skedarët. Për shkak të kësaj, një sistem Ansible nuk kërkon që të instalohet ndonjë softuer shtesë në kompjuterët e klientit.
Kjo është një mënyrë që Ansible thjeshton administrimin e serverëve. Çdo server që ka një port SSH të ekspozuar mund të sillet nën ombrellën e konfigurimit të Ansible, pavarësisht nga faza në të cilën ndodhet në ciklin e tij jetësor.
Çdo kompjuter që mund ta administroni përmes SSH, mund ta administroni edhe përmes Ansible.
Ansible merr një qasje modulare, duke e bërë të lehtë zgjerimin e përdorimit të funksionaliteteve të sistemit kryesor për t'u marrë me skenarë specifikë. Modulet mund të shkruhen në çdo gjuhë dhe të komunikojnë në JSON standard.
Skedarët e konfigurimit shkruhen kryesisht në formatin e serializimit të të dhënave YAML për shkak të natyrës së tij shprehëse dhe ngjashmërisë së tij me gjuhët e njohura të shënjimit. Ansible mund të ndërveprojë me klientët përmes mjeteve të linjës së komandës ose përmes skripteve të konfigurimit të tij të quajtur Playbooks.
Parakushtet
Për të ndjekur këtë tutorial, do t'ju duhet:
- Një server Ubuntu 16.04 me një përdorues sudo jo-root dhe çelësa SSH, të cilin mund ta konfiguroni duke ndjekur këtë tutorial fillestar të konfigurimit të serverit, duke përfshirë hapin 4
Hapi 1 - Instalimi i Ansible
Për të filluar të eksplorojmë Ansible si një mjet për të menaxhuar serverët tanë të ndryshëm, ne duhet të instalojmë softuerin Ansible në të paktën një makinë. Ne do të përdorim një server Ubuntu 16.04 për këtë seksion.
Mënyra më e mirë për të marrë Ansible për Ubuntu është të shtoni PPA (arkivi personal i paketave) të projektit në sistemin tuaj. Ne mund të shtojmë Ansible PPA duke shtypur komandën e mëposhtme:
- sudo apt-add-repository ppa:ansible/ansible
Shtypni ENTER
për të pranuar shtesën PPA.
Më pas, ne duhet të rifreskojmë indeksin e paketave të sistemit tonë në mënyrë që ai të jetë në dijeni të paketave të disponueshme në APP. Më pas, ne mund të instalojmë softuerin:
- sudo apt-get update
- sudo apt-get install ansible
Siç e përmendëm më lart, Ansible kryesisht komunikon me kompjuterët e klientit përmes SSH. Ndërsa sigurisht ka aftësinë për të trajtuar vërtetimin SSH të bazuar në fjalëkalim, çelësat SSH ndihmojnë që gjërat të jenë të thjeshta. Mund të ndiqni udhëzuesin e lidhur në parakushtet për të vendosur çelësat SSH nëse nuk e keni bërë tashmë.
Tani kemi të gjithë softuerin e nevojshëm për të administruar serverët tanë përmes Ansible.
Hapi 2 — Konfigurimi i hosteve Ansible
Ansible mban gjurmët e të gjithë serverëve për të cilët di përmes një skedari \host. Duhet ta konfigurojmë fillimisht këtë skedar përpara se të fillojmë të komunikojmë me kompjuterët tanë të tjerë.
Hapni skedarin me privilegje root si kjo:
- sudo nano /etc/ansible/hosts
Do të shihni një skedar që ka shumë konfigurime shembulli, asnjë prej të cilave nuk do të funksionojë në të vërtetë për ne, pasi këto hoste janë të përbërë. Pra, për të filluar, le të komentojmë të gjitha rreshtat në këtë skedar duke shtuar një \# përpara çdo rreshti.
Ne do t'i mbajmë këta shembuj në skedar për të na ndihmuar me konfigurimin nëse duam të zbatojmë skenarë më kompleksë në të ardhmen.
Pasi të komentohen të gjitha rreshtat, ne mund të fillojmë të shtojmë hostet tanë aktualë.
Skedari i hosteve është mjaft fleksibël dhe mund të konfigurohet në disa mënyra të ndryshme. Sintaksa që do të përdorim megjithatë duket diçka si kjo:
[group_name]
alias ansible_ssh_host=your_server_ip
Emri_grupi është një etiketë organizative që ju lejon t'i referoheni çdo serveri të listuar nën të me një fjalë. Pseudonimi është vetëm një emër për t'iu referuar atij serveri.
Pra, në skenarin tonë, ne po imagjinojmë se kemi tre serverë që do t'i kontrollojmë me Ansible. Këta serverë janë të aksesueshëm nga serveri Ansible duke shtypur:
- ssh root@your_server_ip
Nuk duhet t'ju kërkohet një fjalëkalim nëse e keni konfiguruar saktë. Ne do të supozojmë se adresat IP të serverëve tanë janë 192.0.2.1
, 192.0.2.2
dhe 192.0.2.3
. Ne do ta vendosim këtë në mënyrë që t'u referohemi këtyre individualisht si host1
, host2
dhe host3
, ose si një grup si serverët
.
Ky është blloku që duhet të shtojmë në skedarin tonë të hosteve për ta arritur këtë:
[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2
host3 ansible_ssh_host=192.0.2.3
Pritësit mund të jenë në grupe të shumta dhe grupet mund të konfigurojnë parametrat për të gjithë anëtarët e tyre. Le ta provojmë këtë tani.
Me cilësimet tona aktuale, nëse do të përpiqeshim të lidheshim me ndonjë prej këtyre hosteve me Ansible, komanda do të dështonte (duke supozuar se nuk po veproni si përdorues rrënjë). Kjo është për shkak se çelësi juaj SSH është i ngulitur për përdoruesin rrënjë në sistemet e largëta dhe Ansible si parazgjedhje do të përpiqet të lidhet si përdoruesi juaj aktual. Një përpjekje për lidhje do të marrë këtë gabim:
host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
Në serverin Ansible, ne po përdorim një përdorues të quajtur demo. Ansible do të përpiqet të lidhet me çdo host me ssh demo@server
. Kjo nuk do të funksionojë nëse përdoruesi demo nuk është në sistemin në distancë.
Ne mund të krijojmë një skedar që u thotë të gjithë serverëve në grupin \serverët të lidhen duke përdorur përdoruesin rrënjë.
Për ta bërë këtë, ne do të krijojmë një direktori në strukturën e konfigurimit Ansible të quajtur group_vars
. Brenda kësaj dosjeje, ne mund të krijojmë skedarë të formatuar YAML për çdo grup që duam të konfigurojmë:
- sudo mkdir /etc/ansible/group_vars
- sudo nano /etc/ansible/group_vars/servers
Mund të vendosim konfigurimin tonë këtu. Skedarët YAML fillojnë me \—, prandaj sigurohuni që të mos e harroni atë pjesë.
---
ansible_ssh_user: root
Ruani dhe mbylleni këtë skedar kur të keni mbaruar.
Nëse dëshironi të specifikoni detajet e konfigurimit për çdo server, pavarësisht nga shoqërimi i grupit, mund t'i vendosni ato detaje në një skedar në /etc/ansible/group_vars/all
. Pritësit individualë mund të konfigurohen duke krijuar skedarë nën një drejtori në /etc/ansible/host_vars
.
Hapi 3 - Përdorimi i komandave të thjeshta ansible
Tani që kemi konfiguruar hostet tanë dhe detaje të mjaftueshme të konfigurimit për të na lejuar të lidhemi me sukses me hostet tanë, ne mund të provojmë komandën tonë të parë.
Pini të gjithë serverët që keni konfiguruar duke shtypur:
- ansible -m ping all
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Ky është një test bazë për t'u siguruar që Ansible ka një lidhje me të gjithë hostet e tij.
Të gjitha do të thotë të gjithë hostet. Po aq lehtë mund të specifikojmë një grup:
- ansible -m ping servers
Ne gjithashtu mund të specifikojmë një host individual:
- ansible -m ping host1
Ne mund të specifikojmë hoste të shumtë duke i ndarë me dy pika:
- ansible -m ping host1:host2
Pjesa -m ping
e komandës është një udhëzim për Ansible për të përdorur modulin \ping. Këto janë në thelb komanda që mund t'i ekzekutoni në hostet tuaja në distancë. Moduli ping funksionon në shumë mënyra si p.sh. mjeti normal ping në Linux, por në vend të kësaj ai kontrollon për lidhjen Ansible.
Moduli ping në të vërtetë nuk merr ndonjë argument, por ne mund të provojmë një komandë tjetër për të parë se si funksionon. Ne kalojmë argumente në një skript duke shtypur -a
.
Moduli shell na lejon të dërgojmë një komandë terminali te hosti i largët dhe të marrim rezultatet. Për shembull, për të zbuluar përdorimin e memories në makinën tonë host1, mund të përdorim:
- ansible -m shell -a 'free -m' host1
host1 | SUCCESS | rc=0 >>
total used free shared buffers cached
Mem: 3954 227 3726 0 14 93
-/+ buffers/cache: 119 3834
Swap: 0 0 0
konkluzioni
Deri tani, duhet ta keni serverin tuaj Ansible të konfiguruar për të komunikuar me serverët që dëshironi të kontrolloni. Ne kemi verifikuar që Ansible mund të komunikojë me çdo host dhe kemi përdorur komandën ansible
për të ekzekutuar detyra të thjeshta nga distanca.
Edhe pse kjo është e dobishme, ne nuk kemi mbuluar veçorinë më të fuqishme të Ansible në këtë artikull: Playbooks. Ne kemi krijuar një bazë të shkëlqyer për të punuar me serverët tanë përmes Ansible, por ngritja e rëndë do të bëhet në një artikull të ardhshëm, kur të trajtojmë se si të përdorni Playbooks për të automatizuar konfigurimin e kompjuterëve tuaj në distancë.