Chef Tutorial - Transform Infrastructure into Code



Chef Tutorial är den andra bloggen i Chef-bloggserien. Den här bloggen förklarar kockarkitektur och kockkomponenter som kokböcker, recept etc. med exempel.

Kökshandledning

Chef Tutorial är den andra bloggen i Chef-bloggserien. I min föregående blogg , Jag har förklarat vad som är Chef, Configuration Management och hur Chef uppnår Configuration Management med hjälp av ett användningsfall av Gannett.

I denna kockhandledning kommer följande ämnen att behandlas:





Jag är säker efter att ha läst min föregående blogg du måste vara nyfiken på att veta exakt hur kocken fungerar. Det första avsnittet i denna Chef Tutorial-blogg kommer att förklara kockarkitekturen i detalj, vilket rensar alla dina tvivel.



Chef Tutorial - Chef Architecture

Som visas i diagrammet nedan finns det tre huvudkockkomponenter:

  • Arbetsstation
  • Server
  • Knutpunkter

Chef Architecture - Chef Chef Tutorial - Edureka

Chef Tutorial - Workstation



Arbetsstationen är den plats som alla Chef-konfigurationer är frånlyckades. Den här maskinen innehåller all konfigurationsinformation som senare kan skickas till den centrala chefsservern. Dessa konfigurationer testas i arbetsstationen innan de trycks in i Chef Server. En arbetsstation består av ett kommandoradsverktyg som kallas Kniv, som används för att interagera med Chef Server. Det kan finnas flera arbetsstationer som tillsammans hanterar den centrala kockservern.

Arbetsstationer ansvarar för att utföra följande funktioner:

  • Skriva kokböcker och recept som senare kommer att skickas till den centrala kockservern
  • Hantera noder på den centrala kockservern

Låt oss nu förstå de ovan nämnda punkterna en efter en.

Skriva kokböcker och recept som senare kommer att skickas till den centrala kockservern

Recept: Ett recept är en samling resurser som beskriver en viss konfiguration eller policy. Den beskriver allt som krävs för att konfigurera en del av ett system. Användaren skriver recept som beskriver hur Chef hanterar applikationer och verktyg (som Apache HTTP Server, MySQL eller Hadoop) och hur de ska konfigureras.

Dessa recept beskriver en serie resurser som ska vara i ett visst tillstånd, dvs. paket som ska installeras, tjänster som ska köras eller filer som ska skrivas.

Senare i bloggen , Jag kommer att visa dig hur du skriver ett recept för att installera Apache2-paketet på Chef Nodes genom att skriva en rubinkod i Chef Workstation.

Kokböcker: Flera recept kan grupperas tillsammans för att bilda en kokbok. En kokbok definierar ett scenario och innehåller allt som krävs för att stödja detta scenario:

  • Recept, som anger resurserna som ska användas och i vilken ordning de ska tillämpas
  • Attributvärden
  • Filfördelningar
  • Mallar
  • Tillägg till Chef, till exempel bibliotek, definitioner och anpassade resurser

Hantera noder på den centrala kockservern

Workstation-systemet kommer att ha de nödvändiga kommandoradsverktygen för att styra och hantera alla aspekter av den centrala Chef Server. Saker som att lägga till en ny nod till den centrala kockservern, ta bort en nod från den centrala kockservern, ändra nodkonfigurationer etc kan alla hanteras från själva arbetsstationen.

Låt oss nu se vilka komponenter i Workstation som krävs för att utföra ovanstående funktioner.

Arbetsstationer har två huvudkomponenter:

Knivverktyg: Detta kommandoradsverktyg kan användas för att kommunicera med den centrala chefsservern från Workstation. Lägga till, ta bort, ändra konfigurationer av noder i en central Chef Server kommer att utföras med hjälp av detta knivverktyg. Med hjälp av knivverktyget kan kokböcker laddas upp till en central chefsserver och roller, miljöer kan också hanteras. I grund och botten kan alla aspekter av den centrala kockservern styras från Workstation med hjälp av knivverktyget.

Ett lokalt kockförvar: Här lagras varje konfigurationskomponent i den centrala Chef Server. Detta Chef-arkiv kan synkroniseras med den centrala Chef-servern (igen med själva knivverktyget).

Chef Tutorial - Chef Server

Chef-servern fungerar som ett nav för konfigurationsdata. Chef-servern lagrar kokböcker, policyerna som tillämpas på noder och metadata som beskriver varje registrerad nod som hanteras av Chef-Client.

Noder använder Chef-Client för att be Chef-servern om konfigurationsinformation, såsom recept, mallar och fildistributioner. Chef-klienten gör så mycket av konfigurationsarbetet som möjligt på själva noderna (och inte på Chef-servern). Varje nod har en Chef Client-programvara installerad som kommer att dra ner konfigurationen från den centrala Chef Server som är tillämplig på den noden. Detta skalbara tillvägagångssätt distribuerar konfigurationsinsatsen i hela organisationen.

Chef Tutorial - Chef Nodes

Noder kan vara en molnbaserad virtuell server eller en fysisk server i ditt eget datacenter som hanteras med hjälp av den centrala Chef Server. Huvudkomponenten som måste finnas i noden är en agent som kommer att upprätta kommunikation med den centrala kockservern. Detta kallas Chef Client.

Chef Client utför följande funktioner:

  • Det ansvarar för att interagera med den centrala kockservern.
  • Den hanterar den första registreringen av noden till den centrala kockservern.
  • Det drar ner kokböcker och tillämpar dem på noden för att konfigurera dem.
  • Periodisk avfrågning av den centrala Chef Server för att hämta nya konfigurationsobjekt, om sådana finns.

Klicka här för att lära dig hur du installerar Chef Server, Workstation och Node

Chef Tutorial - Fördelar med Chef:

Denna kockhandledning är ofullständig om jag inte inkluderar de viktigaste fördelarna med kocken:

  • Du kan automatisera en hel infrastruktur med Chef. Alla uppgifter som manuellt utfördes kan nu göras via kockverktyget.
  • Du kan konfigurera tusentals noder inom några minuter med Chef.
  • Kockautomatisering fungerar med majoriteten av de offentliga molntjänsterna som .
  • Chef kommer inte bara att automatisera saker utan kommer också att hålla systemen under konstant kontroll och bekräfta att systemet faktiskt är konfigurerat på det sätt som krävs (Chef Agent / Client gör det här jobbet). Om någon gör ett misstag genom att ändra en fil kommer kocken att korrigera den.
  • En hel infrastruktur kan spelas in i form av ett Chef-arkiv, som kan användas som en ritning för att återskapa infrastrukturen från grunden.

Jag hoppas att du har haft denna kockhandledning tills nu, tillräckligt med de teoretiska inläggen! låt oss ha lite kul med hands-on.

Kökshandledning | Komma igång med kock | Edureka

Kökshandledning - Hands-On

Här kommer jag att förklara hur du skapar en recept, kokbok och en mall i Chef Workstation. Jag kommer också att förklara hur du distribuerar en kokbok från Workstation till Chef-Client (Chef Node).

Jag använder två virtuella bilder, en för Chef Workstation och en för Chef Node. För Chef Server kommer jag att använda den värdversionen av Chef (på molnet). Du kan också använda en fysisk maskin för Chef Server också.

Steg 1: Installera Chef DK (Development Kit) i din Chef Workstation.

Chef DK är ett paket som innehåller alla utvecklingsverktyg som du behöver när du kodar Chef. Här är länken att ladda ner Kock DK .

Välj det operativsystem du använder här. Jag använder CentOS 6.8. Så jag klickar på Red Hat Enterprise Linux .

Kopiera länken enligt den version av CentOS som du använder. Jag använder CentOS 6, som du kan se att jag har markerat i ovanstående skärmdump.

Gå till din Workstation-terminal och ladda ner Chef DK med kommandot wget och klistra in länken.

Utför detta:

wget https://packages.chef.io/stable/el/6/chefdk-1.0.3-1.el6.x86_64.rpm

Paketet laddas nu ner. Det är dags att installera detta paket med hjälp av rpm.

Utför detta:

rpm -ivh chefdk-1.0.3-1.el6.x86_64.rpm

Chef DK är nu installerad i min arbetsstation.

Steg 2: Skapa ett recept i arbetsstationen

Låt oss börja med att skapa ett recept i arbetsstationen och testa det lokalt för att säkerställa att det fungerar.Skapa en mapp med namnet chef-repo. Vi kan skapa våra recept i den här mappen.

Utför detta:

mkdir kock-repo cd kock-repo

I denna kock-repokatalog skapar jag ett recept med namnet edureka.rb. .rb är förlängningen som används för rubin. Jag kommer att använda vim-editor, du kan använda vilken annan redigerare som helst som gedit, emac, vi etc.

Utför detta:

vim edureka.rb

Lägg till följande:

fil '/ etc / motd' innehåll 'Välkommen till kock' slut

Denna Recipe är dureka .rb skapar en fil med namnet / etc / motd med innehållet 'Welcome to Chef'.

Nu ska jag använda detta recept för att kontrollera om det fungerar.

Kör detta:

kock-applicera edureka.rb

Så det finns en fil som skapats i chef-repo som har innehåll Välkommen till kocken.

Steg 3: Modifying Recept-fil för att installera httpd-paketet

Jag kommer att ändra receptet för att installera httpd-paketet på min arbetsstation och kopiera en index.html-fil till standarddokumentrot för att bekräfta installationen. Standardåtgärden för en paketresurs är installation, därför behöver jag inte ange den åtgärden separat.

Kör detta:

vim edureka.rb

Härifrån lägg till följande:

paket 'httpd' tjänst 'httpd' gör åtgärd [: aktivera,: start] slutfil '/var/www/html/index.html' gör innehåll 'Välkommen till Apache i kock' slut

Nu kommer jag att tillämpa dessa konfigurationer genom att utföra kommandot nedan:

Kör detta:

kock-applicera edureka.rb

Kommandokörningen beskriver tydligt varje instans i receptet. Den installerar Apache-paketet, aktiverar och startar httpd-tjänsten på arbetsstationen. Och det skapar en index.html-fil i standarddokumentroten med innehållet 'Välkommen till Apache i Chef'.

Bekräfta nu installationen av Apache2 genom att öppna din webbläsare. Skriv din offentliga IP-adress eller namnet på din värd. I mitt fall är det localhost.

Steg 4: Nu skapar vi vår första kokbok.

Skapa en katalog som heter kokböcker och kör kommandot nedan för att skapa kokboken.

Kör detta:

mkdir kokböcker cd kokböcker kock genererar kokbok httpd_deploy

httpd_deploy är ett namn som ges till kokboken. Du kan ge vilket namn du vill.

Låt oss gå till den här nya katalogen httpd_deploy.

Kör detta:

cd httpd_deploy

Låt oss nu se filstrukturen för den skapade kokboken.

Kör detta:

träd

Steg 5: Cåterskapa en mallfil.

Tidigare skapade jag en fil med lite innehåll, men det passar inte med mina recept och kokbokstrukturer. Så låt oss se hur vi kan skapa en mall för index.html-sidan.

Kör detta:

kock generera mall httpd_deploy index.html

Nu om du ser min Cookbook-filstruktur, finns det en mapp som skapats med namnmallarna med index.html.erb-filen. Jag kommer att redigera den här index.html.erb-mallfilen och lägga till mitt recept i den. Se exemplet nedan:

Gå till standardkatalogen

Kör detta:

cd / root / chef-repo / kokbok / httpd_deploy / mallar / standard

Härifrån redigerar du index.html.erb-mallen med en redigerare som du är bekväm med. Jag kommer att använda vim editor.

Kör detta:

vim index.html.erb

Lägg nu till följande:

Välkommen till Chef Apache Deployment

Steg 6: Cskriv ett recept med den här mallen.

Gå till receptkatalogen.

Utför t hans:

cd / root / chef-repo / kokböcker / httpd_deploy / recept

Redigera nu standard.rb-filen med vilken redigerare du vill. Jag kommer att använda vim editor.

Kör detta:

vim default.rb

Härifrån lägg till följande:

paket 'httpd' tjänst 'httpd' gör åtgärd [: aktivera,: start] slutmall '/var/www/html/index.html' gör källa 'index.html.erb' slut

Nu går jag tillbaka till min chef-repo-mapp och kör / testar mitt recept på min arbetsstation.

Kör detta:

cd / root / chef-repo chef-client --local-mode --runlist 'recept [httpd_deploy]'

Enligt mitt recept är Apache installerad på min arbetsstation, tjänsten startas och aktiveras vid start. En mallfil har också skapats på min standarddokumentrot.

Nu när jag har testat min arbetsstation. Det är dags att konfigurera Chef Server.

Steg 7: Installera Chef Server

Jag kommer att använda den värdversionen av Chef Server i molnet men du kan också använda en fysisk maskin. Denna Chef-Server är närvarande på hantera.chef.io

iterativ retracement c ++

Här skapar du ett konto om du inte har ett. När du har skapat ett konto loggar du in med dina inloggningsuppgifter.

Så här ser Chef Server ut.

Om du loggar in för första gången är det allra första du ska göra att skapa en organisation. Organisation är i grunden en grupp maskiner som du kommer att hantera med Chef Server.

Först går jag till fliken administration. Där har jag redan skapat en organisation som heter edu. Så jag måste ladda ner startpaketet i min arbetsstation. Detta startpaket hjälper dig att skicka filer från arbetsstationen till Chef-servern. Klicka på inställningsikonen till höger och klicka på Startpaket.

När du klickar dit får du ett alternativ att ladda ner startpaketet. Klicka bara på den för att ladda ner Starter Kit zip-filen.

Flytta den här filen till din rotkatalog.Packa upp den här zip-filen med hjälp av kommandot Unzip i din terminal. Du kommer att märka att den innehåller en katalog som heter chef-repo.

Kör detta:

packa upp chef-starter.zip

Flytta nu startpaketet till katalogen med kokböcker i chef-repo-katalogen.

Kör detta:

mv starter / root / chef-repo / kokbok

Chef Cookbooks finns i Cookbook Super Market, vi kan gå till Chef SuperMarket. Ladda ner de nödvändiga kokböckerna från stormarknad.chef.io . Jag laddar ner en av kokboken för att installera Apache därifrån.

Kör e t h är:

cd chef-repo kniv kokbok webbplats nedladdning learn_chef_httpd

Det har laddats ner tjärboll för Apache Cookbook. Nu måste vi extrahera innehållet från den nedladdade Tar-filen. För det kommer jag att använda tjärkommando.

tar -xvf learn_chef_httpd-0.2.0.tar.gz

Alla nödvändiga filer skapas automatiskt under denna kokbok. Det finns ingen anledning att göra några ändringar. Låt oss kolla receptbeskrivningen i min receptmapp.

Utför t h är :

cd / root / chef-repo / learn_chef_httpd / recept cat default.rb

Nu laddar jag bara upp den här kokboken till min Chef Server eftersom den ser perfekt ut för mig.

Steg 8: Ladda upp kokboken till kockens server.

För att ladda upp den Apache Cookbook som jag har laddat ner, flytta först den här learning_chef_httpd-filen till Cookbooks-mappen i chef-repo. Ändra sedan din katalog till kokböcker.

Utför t h är :

mv / root / chef-repo / learn_chef_httpd / root / chef-repo / cookbooks

Gå nu till den här katalogen med kokböcker.

Utför detta:

cd kokböcker

Kör nu kommandot nedan i den här katalogen för att ladda upp Apache Cookbootill:

Exec ute t h är:

kniv kokbok ladda upp learn_chef_httpd

Verifiera kokboken från Chef Server Management-konsolen. I policyavsnittet hittar du den kokbok som du har laddat upp. Se skärmdumpen nedan:

Nu är vårt sista steg att lägga till Chef Node. Jag har installerat en arbetsstation, en kockserver och nu måste jag lägga till mina klienter i kockservern för automatisering.

Steg 9: Lägga till Chef-nod till Chef-servern.

För demonstrationsändamål kommer jag att använda en CentOS-maskin som Chef Node. Det kan finnas hundratals noder anslutna till en kockserver. Terminalfärgen på min Node-maskin skiljer sig från arbetsstationen så att du kommer att kunna skilja mellan båda.

Jag behöver bara IP-adressen till min nod för att jag kommer att utföra kommandot nedan i min Node-maskinär.

Exec u t är t h är:

ifconfig

Jag lägger till min Chef-nod till servern genom att utföra kommandot Knife Bootstrap där jag kommer att ange IP-adressen till The Chef Node och dess namn. Utför kommandot som visasi:

Exec ute t h är:

kniv bootstrap 192.168.56.102 --ssh-användarrot --ssh-lösenord edureka --nodnamn chefNode

Detta kommando initierar också installationen av Chef-Client i Chef Node. Du kan verifiera det från CLI på arbetsstationen med hjälp av kommandot kniv, som visas häri:

Exec ute t h är:

Lista över knivnoder

Du kan också verifiera från Chef Server. Gå till fliken noder i din serverhanteringskonsol, här kommer du att märka att noden du har lagt till är närvarande. Se skärmdumpen nedan.

Steg 10: Hantera nodkörningslista

Låt oss se hur vi kan lägga till en kokbok i noden och hantera dess körlista från Chef Server. Som du kan se på skärmdumpen nedan klickar du på fliken Åtgärder och väljer alternativet Redigera körlista för att hantera körlistan.

I tillgängliga recept kan du se vårt lär_chef_httpd-recept, du kan dra det från tillgängliga paket till den aktuella körlistan och spara körlistan.

Logga in på din nod och kör bara kock-klient för att köra Run List.

Exec ute t h är:

huvudklient

Jag hoppas att du gillade denna kockhandledning och lärde dig hur kocken kan användas för att konfigurera hundratals noder. Kocken spelar en viktig roll i många organisationer för att uppnå DevOps. With Chef-organisationer släpper applikationer oftare och reliabglas.

Om du hittade den här bloggen på “ Kökshandledning ' relevant, kolla in av Edureka, ett pålitligt online-lärande företag med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edureka DevOps Certification Training-kursen hjälper eleverna att få expertis inom olika DevOps-processer och verktyg som Puppet, Chef, Jenkins, Nagios och GIT för att automatisera flera steg i SDLC.