Configurarea serverelor și a aplicațiilor folosind bucătarul deploim, articole despre mkdev programare
DevOps consultant, expert în AWS, OpenStack, păpuși, ansiblu, programator Ruby și Du-te, CTO și fondator al mkdev.me.
Un pic despre Chef
Chef folosit pentru a configura serverul. Acest lucru se face folosind kukbukov care descriu starea dorită a serverului. În kukbukah au rețete care și este definiția statutului de server. Chef există o diviziune în bucătar-server și bucătar-client. Bucătarul serverul stocat kukbuki și informații cu privire la toate serverele dvs. (nodah), bucătar-client sunt noduri separate. Fiecare nod are o listă a alerga - o listă de kukbukov și \ sau prescriptii care trebuie să fie efectuate pe acest nod. Managementul nodurilor bucătar-server, și există o stație de lucru. Statie de lucru nu este altceva decât un calculator de dezvoltare.
Pentru multe aplicații comunitatea Open Source a scris deja kukbuki: pentru a configura PostgreSQL, rubin, Nginx, etc. Dar deploya aplicație specială va avea în continuare să scrie kukbuk ta, în care dependențele vom da toate kukbuki necesare.
De obicei, dezvoltatorul are un depozit separat, care stochează kukbuki, diverse setări și cheile pentru a se conecta la bucătar-server.
Astfel, trebuie să facem următoarele:
- ajusta bucătar-server
- configura stații de lucru
- conectați la bucătarul-server de un fel de server de
- colecta necesare pentru Rails kukbuki
- scrie kukbuk dvs., care va utiliza kukbuki aplicația descărcată anterior și deploit
Hosted Chef, Ocean Digital și stații de lucru noastre
Există două opțiuni pentru bucătar-server: Instalați-l pe serverul sau de a folosi Enterprise Chef. Enterprise Chef este un hosting cu o interfață frumos bucătar-server. Si cel mai important - la 5 noduri pot fi configurate gratuit. Doar ceea ce avem nevoie.
Cel mai ieftin VPS hosting pe care l-am cunoscut acest Ocean Digital, doar 5 $ pe lună. se potrivesc excelent, cel puțin pentru acest experiment. Dar nu se grăbesc să creeze acolo primul său Dev, vom un mod puțin diferit face.
Total: Chef-server înființat, trebuie să se poate conecta rapid un nou server într-un ocean digital.
punerea kukbuki
Pentru Chef există mai multe instrumente pentru a facilita lucrul cu kukbukami: bibliotecar bucătar și berkshelf. Din anumite motive, am decis să utilizeze bibliotecar-bucătar, deși ca și cum berkshelf mai popular. Du-te la bucătar-șef set depozit bibliotecar nostru, inițializa-l:
Apoi, cel mai interesant: este necesar să se găsească și să le kukbuki drept punct în Cheffile'e. Pentru Rails, avem nevoie de un minim de Postgresql, Nginx, și Ruby. Și el kukbuk responsabil pentru cererile de declanșare, aveți nevoie pentru a pune într-un dosar separat, cum ar fi cărți de bucate-dev. Creați un nou kukbuk poate crea cuțit carte de bucate comandă șine aplicație. El va fi, în dosarul său cărți de bucate. dar am făcut-o deplasa în cărți de bucate-dev.
Cuțit - este un program pentru gestionarea bucătar-server, prin intermediul stației de lucru. Kukbuki vă permite să încărcați, lista de noduri și multe altele.
Permiteți-mi să explic de ce: în dosarul cărți de bucate stocăm gata de utilizare kukbuki, astfel încât să păstreze un design acolo kukbukov ușor incorect. Mai mult decât atât, în cazul în care kukbuk dvs. Necunoscut în Cheffile și executați din nou Setup kukbukov, acesta va fi scos din cărți de bucate. Astfel, mult mai mult sens pentru a păstra kukbuki în cărți de bucate-dev și specificați calea către acesta în Cheffile. Atunci când o versiune nouă kukbuka gata, vei scapa de kukbukov de instalare care va copia o versiune nouă a kukbuka în cărți de bucate.
Cheffile mea în cele din urmă arata astfel:
Kukbuk pentru Rails deploya
Până în acest moment tocmai am creat mediul și kukbuki nostru. Este timpul pentru a scrie ei înșiși ceva. Am stabilit deja kukbuk șine aplicație, este timpul pentru a vedea de ce este el. Cel mai important astăzi este directorul atribute, rețete și șabloane.
Șabloanele sunt fișiere de diferite șabloane care vor fi folosite la configurarea nodurilor stocate. De exemplu, modelul database.yml, pe care va trebui să substituie valoarea pentru baza de date numele bazei de date, numele de utilizator și parola. Ca un șablon utilizat de ERB, fără surprize pentru un programator Ruby.
Retetele sunt rețete care și de a face toate lucrările stocate. Rețeta de bază constă dintr-o resursă (resurse bucătar). Resursa descrie starea dorită a sistemului. Se zvonește că mulți utilizatori novice scris rețete Chef ca un simplu cod. De fapt, în rețetă ar trebui să fie doar o descriere a modului în care ar trebui să fie instituit sistemul. Prin urmare, principiul resurselor idempotența, potrivit căreia relansarea resursei nu ar trebui să schimbe starea sistemului în cazul în care acesta este deja în concordanță cu starea de așteptat.
În plus față de resursele în rețetă, puteți conecta alte retete, de exemplu, de la alte kukbukov. Fiecare built-in Chef de resurse există o documentație vastă, deci nu ezitați să facă referire la ea, dacă nu înțelegi ceva. Când am încercat mai întâi Chef câțiva ani în urmă, documentația a avut probleme serioase. Acum, din fericire, aceste probleme nu sunt prezente, orice întrebare vă pot răspunde.
Deci, în primul rând trebuie să includem rețete pentru rubin, Nginx, postgresl, precum și o rețetă pentru bibliotecile de bază necesare, inclusiv compilarea rubin, Nginx, PostgreSQL. bine, înțelegi. Orice modificări ulterioare aduse la fișierul .cookbooks-dev / șine app / rețete / default.rb
Aceste rețete sunt executate înainte de a începe să se desfășoare rețeta noastră. Următorul pas este de a instala Ruby și bundler:
resursă Ruby_build_ruby definit în ruby_build kukbuke. După cum puteți vedea, vă permite să specificați versiunea necesară de rubin și diverse opțiuni pentru instalare. gem_package vine la pachet cu el însuși Chef și seturi hem (surpriza surpriza). Nu sunt sigur că există încă nici o nevoie nici o explicație, DSL Chef'a foarte simplu și chelovekochitaemy.
Acum, configurați Nginx!
Aici vom folosi mai întâi șablonul de resurse. În primul rând am numele fișierului (cu calea) trece. Apoi specificați un șablon din dosarul Șabloanele de utilizat și prevede, de asemenea, dreptul de proprietate de fișiere și permisiunile.
Șabloanele pot fi transmise variabile, aproximativ la fel ca și noi facem în controlere de aplicații Rails. Doar mai jos este un exemplu de transmitere a variabilelor.
Ne apropiem foarte aplicația esență deploya. Acum trebuie să configurați ssh chei pentru utilizatorul disloca. Mintea, trebuie să utilizați pentru acest pungi de date. pe care nu vă va spune în acest articol. Așa cum am spus mai înainte, de data aceasta am simplifica în mod deliberat unele lucruri, astfel încât cheia deploya am aruncat direct în dosarul șabloane.
Mai mult vom avea nevoie de un mic script de shell-cheie ssh pentru utilizarea în timpul deploya care nu au obstacole pentru a trage de cod dintr-un depozit privat. cod de script în sine este preluat din documentația Chef.
Ei bine, cat de cool? Cred că e un mod grozav de a configura serverul. Și cel mai remarcabil lucru: am scris rețeta cred că o dată și niciodată despre asta. Oh, da, am uitat să arate cum să se uite și ./cookbooks-dev/rails-app/templates/database.yml.erb ./cookbooks-dev/rails-app/attributes/default.rb.
încărcare Kukbuki și de a crea rolul.
Deoarece toate kukbuki suntem gata, putem să le încărcați numai la serverul de bucătar-șef:
Chef are ceva numit roluri. Totul este simplu: în cerere, cu o grămadă de servere, există noduri, care sunt responsabili pentru baza de date, există o balancer'y de sarcină, există noduri cu propriile lor aplicații. Chef vă permite să definiți rolurile, încearcă să identifice rețete care trebuie efectuate pe nodah cu acest rol și pentru a specifica atributele care sunt specifice nodului cu acel rol. Aici sunt doar un rol, care este suficient pentru noi să tragem concluzia că etapa de cod scris:
Se încarcă rol în bucătar-server: rol de cuțit de fișier roluri / application.rb.
Și acum cel mai tare: acum suntem o echipa, de a crea un nou server de pe Oceanul digital, conectați-l la serverul de bucătar-șef, configurați-l pe tot ceea ce este necesar pentru crearea și aplicarea zadeploim. E ca Heroku, doar mai abruptă, pentru că suntem cu toții în scris și știm cum funcționează ;-)
Prin înregistrarea pe Oceanul Digital. du-te la Panoul de control, apoi, sub API-ul, de a genera un nou API-cheie. În plus, nu ar trebui să meargă mână în Panoul de control pentru a crea servere și care să automatizeze procesul de conectare a noului nod la bucătar-server, vom folosi un plug-cutit-digital_ocean:
Există plugin-uri similare pentru AWS, Rackspace și alte servicii cloud, astfel încât nu este, de obicei, nu este nevoie de bootstrap nod în sine (care, de altfel, nu este dificil, dar este incomod).
a creat anterior o cheie API, adăugați .chef / knife.rb:
Bine, să mergem. Notă opțiunea boostrap, datorită ei serverul nou creat va fi stabilit imediat pentru a lucra cu maestru bucătar-server.
Ce se întâmplă aici:
- Cu ajutorul unei chei API de la Oceanul Digital, vom crea un nou server
- Ne întoarcem la ssh și configurați serverul pentru a lucra cu serverul de bucătar-șef
- Noi transporta toate retetele enumerate ca aplicație
Pentru a reporni toate rețete pe care le puteți utiliza următoarea comandă:
Acesta este același care merge la server prin SSH și a alerga bucătar-client.
CONCLUZIONEAZĂ, utilizați Chef la deploya sine aplicații ușor mai complicate decât Capistrano, dar un pic de efort vom obține un complet automatizate setările de server de proces de la zero la o aplicație de lucru. kukbuki scrisă poate fi folosit pentru orice număr de aplicații. Petrecerea un pic mai mult timp de a intra în suita noastră de instrumente pentru dezvoltatori putrernica super-armă. Și asta e minunat.
Mai multe despre acest subiect
În cele din urmă am decis să ne educe?
Apoi, începe cu ghidul nostru liber în lumea de dezvoltare web. În interiorul o grămadă de sfaturi și materiale pentru auto-studiu.
obține cartea