de Mohak Puri

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.

Un ghid pentru incepatori complet pentru Chef si infrastructura ca
credite: Google

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.

Un ghid pentru incepatori complet pentru Chef si infrastructura ca
Chef

Terminologie

  1. 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.
  2. Chef Server – Aici se află tot codul tău. De asemenea, conține toate informațiile despre noduri.
  3. 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
1612185607 669 Un ghid pentru incepatori complet pentru Chef si infrastructura ca
Ieșire

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:

  1. Aparatul dvs. trebuie să aibă java instalat.
  2. 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ță.

1612185608 326 Un ghid pentru incepatori complet pentru Chef si infrastructura ca
Rularea ohai în mod explicit
1612185608 103 Un ghid pentru incepatori complet pentru Chef si infrastructura ca
Obținerea de informații despre gazdă de la ohai
1612185609 842 Un ghid pentru incepatori complet pentru Chef si infrastructura ca
Obținerea informațiilor legate de procesor de la ohai

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

  1. 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.
  2. 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.
1612185610 632 Un ghid pentru incepatori complet pentru Chef si infrastructura ca
Obținerea de informații despre nodul dvs. cu ajutorul cuțitului

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.

1612185610 759 Un ghid pentru incepatori complet pentru Chef si infrastructura ca

Cam atât! Vă mulțumesc că ați citit și sper că v-a plăcut articolul.

Poți să mă urmărești mai departe Mediu și Github 🙂