de Mohak Puri
Conţinut
Un ghid pentru începători complet pentru Chef și infrastructură ca cod
În ultimele săptămâni, am săpat mult în Chef. Deși documentația este bună, au existat de multe ori când am rămas fără niciun indiciu. Așa că voi face o introducere în profunzime la Chef. Dacă nu ați auzit deloc de Chef (ca mine cu câteva luni în urmă) nu vă faceți griji, vă voi explica totul.

Ce este Chef și de ce?
Chef este o platformă puternică de automatizare care transformă infrastructura în cod. Chef automatizează modul în care infrastructura este configurată, implementată și gestionată în rețeaua dvs., indiferent de dimensiunea acesteia.
Dar ce înseamnă infrastructură ca cod? Deci, să presupunem că aveți o aplicație Java care trebuie să fie implementată pe o singură mașină. Nu aveți nevoie de automatizare pentru asta – o puteți face manual.
Dar ce se întâmplă atunci când o singură mașină nu poate face față sarcinii și trebuie să implementați aplicația pe alte 10 sau 50 sau 100 de mașini? Aici intervine Chef. Mai degrabă decât să implementați manual aplicația dvs. pe fiecare mașină, puteți scrie cod care să o facă pentru dvs.

Terminologie
- Stație de lucru – mașina dvs. locală, numită și laptopul. Aici vă scrieți codul care este atunci împins către serverul dvs. bucătar.
- Chef Server – Aici se află tot codul tău. De asemenea, conține toate informațiile despre noduri.
- Nodes aka Chef Client – Mașinile în care codul dvs. trebuie să ruleze. Puteți folosi ceva de genul vagabond în scopuri de învățare și aws / gcp în producție. Nodurile tale Trage cel mai recent cod de pe serverul dvs. chef.
Noțiuni de bază cu bucătarul-șef
Pentru a începe, trebuie mai întâi să instalăm ChefDK pe stația noastră de lucru. ChefDK este setul de dezvoltare Chef care conține toate instrumentele necesare pentru a începe să folosiți chef. Puteți instala ChefDK de la Aici.
După ce ați instalat ChefDK, rulați următoarea comandă:
chef generate cookbook testingCheftree testingChef

Aceasta este structura generată de bucătarul generează carte de bucate comanda. Să trecem peste fiecare fișier pentru a vedea ce fac.
Cărți de bucate
O carte de bucate este unitatea fundamentală de configurație care își propune să atingă starea dorită cu ajutorul altor componente, cum ar fi rețete, șabloane, fișiere etc. În mod implicit, atunci când generați o carte de bucate, primiți doar un folder de rețete. Cu toate acestea, puteți crea foldere pentru șabloane și alte componente, de asemenea, dacă intenționați să le utilizați (vom vorbi despre ele mai târziu).
Să presupunem că doriți să rulați o aplicație Java pe o mașină. Există două lucruri care sunt necesare pentru asta:
- Aparatul dvs. trebuie să aibă java instalat.
- Trebuie să aibă aplicația pentru a rula.
Apoi puteți rula aplicația.
Deci, creați o carte de bucate care, atunci când este rulată pe un nod, instalează java pe acel nod, preia aplicația pe care trebuie să o rulați și rulează aplicația respectivă.
Resurse pentru bucătar
O resursă este un bloc Ruby cu patru componente: un tip, un nume, una (sau mai multe) proprietăți (cu valori) și una (sau mai multe) acțiuni. Sintaxa unei resurse este astfel:
type 'name' do attribute 'value' action :type_of_actionend
Să presupunem că doriți să instalați OpenJDK 7 pe nodul dvs. Pentru a face acest lucru, puteți utiliza pachet resursă disponibilă la bucătar.
package 'java-1.7.0-openjdk' do action :installend
acțiune: instalare este acțiunea implicită pentru resursa pachetului, deci puteți sări peste asta dacă doriți.
package 'java-1.7.0-openjdk'
Pentru a rula un cronJob pe nodul dvs., puteți utiliza cron resursă.
cron 'reporting' do action :create minute '0' hour '0' weekday '1' command "/srv/app/scripts/daily_report" # Path of script to runend
În funcție de ceea ce doriți să obțineți, există o mulțime de resurse încorporate pentru bucătar pe care le puteți utiliza. Puteți citi mai multe despre ele Aici.
Rețete
O rețetă este o colecție de resurse care tinde să vă aducă nodul cu un pas mai aproape de starea dorită. Rețetele sunt scrise în rubin.
Pentru a rula o rețetă, folosim următoarea comandă:
chef-client -z pathToRecipe
-z
semnalarea înseamnă că bucătarul-client ar trebui să ruleze în modul local, deoarece nu suntem conectați la niciun server bucătar. În cazul în care nodurile dvs. sunt conectate la server, nu trebuie să utilizați -z
steag.
************************** default.rb ****************************
/* This is an example recipe to install install httpd (Apache HyperText Transfer Protocol (HTTP) server program), creates a file on the node at /var/www/html/index.html (default path for serving web pages on apache server) and starts the service on a centOS based machine */
package 'httpd'
file '/var/www/html/index.html' do content '<html>This is a placeholder for the home page.<;/html>'end
service 'httpd' do action [:enable, :start]end
Metadate și Berksfile
Când lucrați la o carte de bucate, nu trebuie să începeți chiar de la primul pas, deoarece există șanse mari ca cineva să fi construit deja ceva similar și să vă puteți extinde munca.
Acesta este locul unde Chef Supermarket vine. Conține cărți de bucate din comunitate pe care le puteți folosi ca dependențe în propria carte de bucate. Aceste dependențe sunt listate în fișierul metadata.rb sau chiar în fișierul dvs. Berksfile. Dar atunci apare întrebarea: în ce fel sunt ele diferite?
************************* Berksfile ********************************source 'https://supermarket.chef.io' # Fetch dependencies from here
metadata
Când încărcați cartea de bucate pe serverul bucătarului, trebuie să încărcați și dependențele cărții de bucate. Aici ajută Berks. Trebuie doar să executați două comenzi simple:
berks install berks upload
care descarcă toate dependențele cărților de bucate și le încarcă pe serverul bucătarului. Cărțile de bucate pentru dependență sunt prezente la
~/.berkshelf/cookbooks/
În cazul în care v-ați actualizat cartea de bucate și doriți să le reîncărcați pe serverul bucătarului, atunci trebuie să actualizați versiunea din fișierul de metadate. În caz contrar, când utilizați încărcare berks comanda, noua rețetă nu va fi încărcată decât dacă forțați o încărcare.
**************************** metadata.rb ***************************name 'testingChef'maintainer 'The Authors'maintainer_email 'you@example.com'license 'All Rights Reserved'description 'Installs/Configures testingChef'long_description 'Installs/Configures testingChef'version '0.1.0' # Update after changes are made to the cookbookchef_version '>= 12.14' if respond_to?(:chef_version)
depends 'haproxy', '~> 6.2.6'
Chefignore
Puneți fișiere / directoare care ar trebui ignorate în acest fișier la încărcare
sau partajarea cărților de bucate pe site-ul comunității.
Ohai
Când instalăm CheckDK, primim și ohai. De fiecare dată când rulați bucătar-client pe nodul dvs., bucătarul rulează ohai înainte de asta. Ohai colectează o mulțime de informații despre sistem. Tipurile de atribute pe care Ohai le colectează includ, dar nu se limitează la:
- Sistem de operare
- Reţea
- Memorie
- Disc
- CPU
Când rulați ohai obțineți o mulțime de rezultate, deci fiți atenți la ceea ce doriți și scrieți comenzile în consecință.



Dacă dorim, putem folosi toate aceste informații în rețetele noastre. Tot ce trebuie să facem este să ne referim la o anumită proprietate a nodului.
if node['hostname'] == "Some hostname" do // do something only if the nodes hostname matchesend
Cuţit
Cuțitul este un instrument pe care îl utilizați pentru a comunica cu serverul bucătarului. Dacă doriți să știți ceva despre nodurile dvs. sau doriți să actualizați ceva precum rețetele lor, cuțitul este calea de urmat. Există mai mult de o duzină de comenzi cu cuțitul. Aici sunt câțiva dintre ei
- cizmă cuțit – Această comandă este utilizată pentru a crea un nou nod și a-l atașa la serverul dvs. chef. Când bootstrappează un nod, bucătarul instalează totul cum ar fi ohai, bucătar-client pe nod și, de asemenea, rulează bucătar-client automat. Pentru orice modificări ulterioare aduse nodului respectiv, trebuie să rulați bucătar-client manual pentru a vă actualiza nodul.
- nodul cuțitului arată $ {nodeName} – Această comandă este utilizată pentru a obține informații despre nodul dvs., care include rețete, mediu, platformă etc.

3. listă carte de bucate cuțit $ {nodeName} – Această comandă este utilizată pentru a obține toate cărțile de bucate asociate cu nodul dvs.

Cam atât! Vă mulțumesc că ați citit și sper că v-a plăcut articolul.
#ghid #pentru #începători #complet #pentru #Chef #și #infrastructură #cod
Un ghid pentru începători complet pentru Chef și infrastructură ca cod