Što je automatizacija i upravljanje konfiguracijom uz CHEF – 1. dio
Uzmimo jednostavan scenarij, imate 10 redhat poslužitelja gdje morate stvoriti 'tecmint' korisnika na svim poslužiteljima. Izravan pristup je da se trebate prijaviti na svaki poslužitelj i stvoriti korisnika pomoću naredbe useradd. Kada su poslužitelji 100 ili 1000, prijava na sve poslužitelje jedan po jedan praktički nije moguća.
Ovdje prvo što nam padne na pamet u takvim slučajevima je napisati skriptu i pustiti skriptu da izvrši izvršenje na poslužiteljima, to je provjeren pristup. Skriptiranje ima svoje nedostatke, iako se široko koristi u organizacijama, teško ga je održavati ako vlasnik skripte napusti organizaciju.
Skripta neće raditi u heterogenom okruženju. Skripta je imperativna metoda za izvršavanje zadatka, gdje trebate napisati dugačak kod za jednostavan zadatak itd., ova situacija zahtijeva da potražimo alate za Automatizaciju i upravljanje konfiguracijom kao što je Kuhara.
U ovoj seriji članaka o Chefu vidjet ćemo postupke instalacije i konfiguracije Chef Automation alata kroz dijelove 1-3 i pokriva sljedeće teme.
Ovaj vodič pruža početnu točku o tome kako Chef radi, automatizaciji, upravljanju konfiguracijom, arhitekturi i komponentama Chefa.
1. Upravljanje konfiguracijom
Upravljanje konfiguracijom ključna je točka fokusa prakse DevOps. U ciklusu razvoja softvera, svi poslužitelji trebaju biti softverski konfigurirani i dobro održavani na takav način da ne bi smjeli napraviti nikakav prekid u ciklusu razvoja. Upravljanje lošom konfiguracijom može uzrokovati prekide rada sustava, curenja i povrede podataka. Korištenje alata za Upravljanje konfiguracijom olakšava točnost, učinkovitost i brzinu u okruženju koje pokreće DevOps.
Postoje dva modela alata za upravljanje konfiguracijom – PUSH-based & PULL-based. U PUSH-u, glavni poslužitelj šalje konfiguracijski kod na poslužitelje pri čemu PULL-u pojedinačni poslužitelji kontaktiraju glavnog za dobivanje konfiguracijskog koda. PUPPET i CHEF naširoko su korišteni modeli temeljeni na POVUČENJU, ANSIBLE je popularan model temeljen na PUSH-u. U ovom ćemo članku vidjeti nešto o KUHARJU.
2. Što je kuhar?
A chef je program za automatizaciju otvorenog koda koji administratorima sustava omogućuje automatizaciju postavljanja, konfiguracija, upravljanja i tekućih zadataka na brojnim poslužiteljima i drugim uređajima u organizaciji na jednostavan i lak način.
- Osnovan je 2008. kao OPSCODE kasnije je preimenovan u CHEF (alat za Chef Automation).
- To je alat za automatizaciju temeljen na Rubyju koji se koristi za upravljanje konfiguracijom, automatiziranje i orkestriranje cijele infrastrukture organizacije.
- To je Opensource projekt i dolazi s dva modela implementacije: Server Client & Standalone.
- Chef podržava različite operativne sustave kao što su Ubuntu, Redhat/CentOS, Fedora, macOS, Windows, AIX itd.
- Chef je deklarativan i puno je jednostavniji od izvornih skriptnih jezika.
- Omogućuje kontinuiranu implementaciju kako bi tvrtka bila u toku sa zahtjevima tržišta.
- Primarna odgovornost kuhara je održavanje definiranog stanja konfiguracije.
- Ima vlastiti deklarativni jezik za lako upravljanje s 10 i 1000 čvorova.
- Chef je prilagodljiv oblaku, lako se integrira s Infrastructure on Cloud.
- Chef je jednostavan za naučiti i snažan je alat prilagođen DevOps-u koji podržava zajednica.
3. Chef Arhitektura
Arhitektura Chef podijeljena je u 3 glavna dijela.
- Chef WorkStation: lokalna razvojna platforma za korisnike Chefa za izradu, testiranje i primjenu konfiguracija. To može biti vaše lokalno stolno računalo, prijenosno računalo s instaliranim Chef DK (Development Kit). Može se koristiti kao okruženje za razvoj/testiranje prije promicanja u proizvodnju.
- Chef Server: To je poslužitelj na kojem je instaliran i konfiguriran softver chef-server. Odgovoran je za upravljanje kodom kuhara i pristup konfiguracijskom kodu s radne stanice kuhara. Poslužitelj kuhara trebao bi biti Linux stroj, neće podržavati nijedan drugi operativni sustav.
- Chef klijenti: Postoje poslužitelji koji kontaktiraju Chef poslužitelj za detalje konfiguracije kao što su chef kod i druge zavisne datoteke u binarnim datotekama. Povlači kod s poslužitelja Chef i postavlja ih lokalno.
4. Komponente kuhara
Slijede ključne komponente Chef.
- Resursi su osnovni modul Recepta koji se koristi za upravljanje infrastrukturom.
- Atribut su postavke u obliku para ključ-vrijednost.
- Recepti su zbirka atributa koji se mogu izraditi na radnoj stanici. To je skup naredbi koje se mogu primijeniti na Chef klijente kao Chef Code.
- Zbirka recepata zove se Kuharica.
- Nož je alat naredbenog retka u Chef Workstation koji komunicira s Chef Serverom.
5. Model postavljanja kuhara
Postoje dva modela implementacije za Chef.
- Klijent poslužitelja – Koristi se za produkcijsku implementaciju.
- Chef Zero – Koristi se za razvoj, testiranje i POC-ove.
6. Kako kuhar radi? Infrastruktura kao kod
Infrastructure as Code je upravljanje IT infrastrukturom gdje nam omogućuje automatsku izvedbu raznih instalacija/postavljanje i upravljanje konfiguracijom. Ovdje su sve konfiguracije, instalacije napisane kao kod.
- Chef klijent/čvor izvršit će registraciju i autentifikaciju s Chef poslužiteljem.
- Chef klijent/čvor će povremeno pregledavati Chef Server. Proces autentifikacije provodi se svaki put kada chef-klijent želi pristupiti podacima pohranjenim u chef-poslužitelju.
- Ohai je alat koji će pokrenuti Chef klijent za određivanje stanja sustava, otkrit će atribute (OS, memorija, disk, CPU, kernel itd.) čvora i pružiti te atribute kuharu-klijentu. Ohai je dio Chef Client instalacije.
- Ako dođe do bilo kakvih promjena u Kuharici ili postavkama konfiguracije, to će biti poslano Chef-Clientu i bit će ažurirano/instalirano.
- Kuharice i postavke ažurirat će se na Chef poslužitelju pomoću Chef Workstation putem alata naredbenog retka Knife. Radna stanica gura sva pravila na Chef poslužitelj koristeći Knife.
- Budući da će svaki klijent/čvor imati periodičku provjeru s Chef poslužiteljem, konfiguracije će se primjenjivati pojedinačno prema ulozi poslužitelja. Na primjer: u Chef čvorovima, neki čvorovi će biti poslužitelji baze podataka, neki čvorovi će biti pristupni poslužitelji itd.
Zaključak
U ovom smo članku vidjeli osnovne koncepte upravljanja konfiguracijom i alata za automatizaciju Chefa. U nadolazećim člancima vidjet ćemo korak po korak proces instalacije Chefa.