Chef-tutorial - Transformeer infrastructuur in code



Chef Tutorial is de tweede blog van de blogserie van Chef. Deze blog legt de Chef-architectuur en Chef-componenten zoals kookboeken, recepten etc. uit met voorbeelden.

Tutorial van de chef

Chef Tutorial is de tweede blog van de blogserie van Chef. In mijn vorige blog , Heb ik uitgelegd wat Chef is, Configuratiebeheer en hoe Chef Configuratiebeheer bereikt met behulp van een use-case van Gannett.

In deze Chef Tutorial komen de volgende onderwerpen aan bod:





Ik ben er zeker van na het lezen van mijn vorige blog je moet wel benieuwd zijn hoe Chef precies werkt. In het eerste deel van deze Chef Tutorial-blog wordt de Chef-architectuur in detail uitgelegd, waardoor al uw twijfels worden weggenomen.



Chef-tutorial - Chef-architectuur

Zoals weergegeven in het onderstaande diagram, zijn er drie belangrijke Chef-componenten:

  • Werkstation
  • Server
  • Knooppunten

Chef Architectuur - Chef Tutorial - Edureka

Chef-zelfstudie - Werkstation



Het werkstation is de locatie waar alle Chef-configuraties zich bevindenbeheerd. Deze machine bevat alle configuratiegegevens die later naar de centrale Chef Server kunnen worden gepusht. Deze configuraties worden op het werkstation getest voordat ze in de Chef Server worden gepusht. Een werkstation bestaat uit een opdrachtregelprogramma met de naam Mes, dat wordt gebruikt om te communiceren met de Chef Server. Er kunnen meerdere werkstations zijn die samen de centrale Chef Server beheren.

Werkstations zijn verantwoordelijk voor het uitvoeren van de onderstaande functies:

  • Kookboeken en recepten schrijven die later naar de centrale Chef Server worden gestuurd
  • Nodes beheren op de centrale Chef Server

Laten we nu de bovengenoemde punten een voor een begrijpen.

Kookboeken en recepten schrijven die later naar de centrale Chef Server worden gestuurd

java wat is een token

Recepten: Een recept is een verzameling bronnen die een bepaalde configuratie of beleid beschrijft. Het beschrijft alles wat nodig is om een ​​deel van een systeem te configureren. De gebruiker schrijft Recepten die beschrijven hoe Chef toepassingen en hulpprogramma's beheert (zoals Apache HTTP Server, MySQL of Hadoop) en hoe ze moeten worden geconfigureerd.

Deze recepten beschrijven een reeks bronnen die in een bepaalde staat zouden moeten zijn, d.w.z. pakketten die moeten worden geïnstalleerd, services die moeten worden uitgevoerd of bestanden die moeten worden geschreven.

Later in de blog , Zal ik je laten zien hoe je een recept schrijft om Apache2-pakket te installeren op Chef Nodes door een robijnrode code te schrijven in Chef Workstation.

Kookboeken: Meerdere recepten kunnen worden gegroepeerd om een ​​kookboek te vormen. Een kookboek definieert een scenario en bevat alles wat nodig is om dat scenario te ondersteunen:

  • Recepten, die de middelen specificeren die moeten worden gebruikt en de volgorde waarin ze moeten worden toegepast
  • Kenmerkwaarden
  • Bestandsdistributies
  • Sjablonen
  • Uitbreidingen voor Chef, zoals bibliotheken, definities en aangepaste bronnen

Nodes beheren op de centrale Chef Server

Het Workstation-systeem heeft de vereiste hulpprogramma's voor de opdrachtregel om elk aspect van de centrale Chef Server te besturen en te beheren. Dingen zoals het toevoegen van een nieuwe Node aan de centrale Chef Server, het verwijderen van een Node uit de centrale Chef Server, het wijzigen van Node configuraties etc. kunnen allemaal worden beheerd vanaf het Workstation zelf.

Laten we nu eens kijken welke componenten van Workstation nodig zijn om de bovenstaande functies uit te voeren.

Werkstations hebben twee hoofdcomponenten:

Mes hulpprogramma: Deze command line tool kan gebruikt worden om te communiceren met de centrale Chef Server vanaf Workstation. Het toevoegen, verwijderen en wijzigen van configuraties van Nodes in een centrale Chef Server zal worden uitgevoerd met behulp van dit Knife-hulpprogramma. Met het hulpprogramma Knife kunnen kookboeken worden geüpload naar een centrale Chef Server en kunnen ook Rollen en omgevingen worden beheerd. In principe kan elk aspect van de centrale Chef Server worden bediend vanaf Workstation met het hulpprogramma Knife.

Een lokale chef-kok: Dit is de plek waar elke configuratiecomponent van de centrale Chef Server wordt opgeslagen. Deze Chef-repository kan worden gesynchroniseerd met de centrale Chef Server (opnieuw met behulp van het mesprogramma zelf).

Chef-zelfstudie - Chef-server

De Chef Server fungeert als een hub voor configuratiegegevens. De Chef-server slaat kookboeken op, het beleid dat wordt toegepast op knooppunten en metagegevens die elk geregistreerd knooppunt beschrijven dat wordt beheerd door de chef-client.

Nodes gebruiken de Chef-Client om de Chef Server om configuratiedetails te vragen, zoals recepten, sjablonen en bestandsdistributies. De Chef-Client doet dan zoveel mogelijk configuratiewerk op de Nodes zelf (en niet op de Chef Server). Op elke Node is een Chef Client-software geïnstalleerd, die de configuratie van de centrale Chef-server ophaalt die van toepassing is op die Node. Deze schaalbare aanpak verdeelt de configuratie-inspanning over de hele organisatie.

Chef-tutorial - Chef-knooppunten

Nodes kunnen een cloudgebaseerde virtuele server zijn of een fysieke server in uw eigen datacenter, die wordt beheerd met de centrale Chef Server. Het belangrijkste onderdeel dat op de Node aanwezig moet zijn, is een agent die de communicatie met de centrale Chef Server tot stand brengt. Dit heet Chef Client.

Chef Client voert de volgende functies uit:

  • Het is verantwoordelijk voor de interactie met de centrale Chef Server.
  • Het beheert de initiële registratie van de Node bij de centrale Chef Server.
  • Het haalt kookboeken tevoorschijn en past ze toe op het knooppunt om het te configureren.
  • Periodieke peiling van de centrale Chef Server om eventuele nieuwe configuratie-items op te halen.

Klik hier om te zien hoe u Chef Server, Workstation en Node installeert

Chef Tutorial - Voordelen van Chef:

Deze Chef-tutorial is onvolledig als ik de belangrijkste voordelen van Chef niet vermeld:

  • Met Chef kunt u een volledige infrastructuur automatiseren. Alle taken die handmatig werden uitgevoerd, kunnen nu worden gedaan via de Chef-tool.
  • Met Chef kunt u binnen enkele minuten duizenden nodes configureren.
  • Chef-automatisering werkt met het merendeel van de openbare cloud-aanbiedingen, zoals .
  • Chef zal niet alleen dingen automatiseren, maar zal ook de systemen consistent controleren en bevestigen dat het systeem inderdaad is geconfigureerd zoals het nodig is (Chef Agent / Client doet deze taak). Als iemand een fout maakt door een bestand aan te passen, zal Chef dit corrigeren.
  • Een volledige infrastructuur kan worden vastgelegd in de vorm van een Chef-repository, die kan worden gebruikt als een blauwdruk om de infrastructuur helemaal opnieuw te creëren.

Ik hoop dat je tot nu toe genoten hebt van deze Chef-tutorial, genoeg met de theoretische berichten! laten we wat plezier hebben met hands-on.

Zelfstudie van de chef | Aan de slag met Chef | Edureka

Chef Tutorial - Hands-On

Hier zal ik je uitleggen hoe je een recept, kookboek en sjabloon maakt in Chef Workstation. Ik zal je ook uitleggen hoe je een kookboek implementeert van Workstation naar Chef-Client (Chef Node).

Ik gebruik twee virtuele afbeeldingen, één voor Chef Workstation en één voor Chef Node. Voor Chef Server zal ik de gehoste versie van Chef (on cloud) gebruiken. U kunt ook een fysieke machine gebruiken voor Chef Server.

Stap 1: Installeer Chef DK (Development Kit) in uw Chef Workstation.

Chef DK is een pakket dat alle ontwikkeltools bevat die u nodig heeft bij het coderen van Chef. Hier is de link om te downloaden Chef DK .

Kies hier het besturingssysteem dat u gebruikt. Ik gebruik CentOS 6.8, dus ik zal op klikken Red Hat Enterprise Linux .

Kopieer de link volgens de versie van CentOS die u gebruikt. Ik gebruik CentOS 6, zoals je kunt zien dat ik heb gemarkeerd in de bovenstaande schermafbeelding.

Ga naar uw Workstation-terminal en download de Chef DK met de opdracht wget en plak de link.

Voer dit uit:

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

Het pakket is nu gedownload. Het is tijd om dit pakket met rpm te installeren.

Voer dit uit:

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

Chef DK is nu geïnstalleerd op mijn werkstation.

Stap 2: Maak een recept op het werkstation

Laten we beginnen met het maken van een recept in het werkstation en het lokaal testen om er zeker van te zijn dat het werkt.Maak een map met de naam chef-repo. We kunnen onze recepten in deze map maken.

Voer dit uit:

mkdir chef-repo cd chef-repo

In deze chef-repo-directory zal ik een recept maken met de naam edureka.rb. .rb is de extensie die wordt gebruikt voor ruby. Ik zal de vim-editor gebruiken, je kunt elke andere editor gebruiken die je wilt, zoals gedit, emac, vi etc.

Voer dit uit:

vim edureka.rb

Voeg hier het volgende toe:

bestand '/ etc / motd' inhoud 'Welkom bij Chef' einde

Deze Recipe is dureka .rb maakt een bestand aan met de naam / etc / motd met de inhoud 'Welcome to Chef'.

Nu zal ik dit recept gebruiken om te controleren of het werkt.

Uitvoeren deze:

chef-kok edureka.rb toepassen

Er is dus een bestand gemaakt in de chef-repo met inhoud Welkom bij Chef.

Stap 3: M.odifying Recept-bestand om het httpd-pakket te installeren

Ik zal het recept aanpassen om het httpd-pakket op mijn werkstation te installeren en een index.html-bestand naar de standaard document root kopiëren om de installatie te bevestigen. De standaardactie voor een pakketbron is installatie, daarom hoef ik die actie niet apart op te geven.

Uitvoeren deze:

vim edureka.rb

Voeg hier het volgende toe:

pakket 'httpd' service 'httpd' actie doen [: enable,: start] einde bestand '/var/www/html/index.html' inhoud doen 'Welkom bij Apache in Chef' einde

Nu zal ik deze configuraties toepassen door het onderstaande commando uit te voeren:

Uitvoeren deze:

chef-kok edureka.rb toepassen

De uitvoering van het commando beschrijft duidelijk elke instantie in het Recept. Het installeert het Apache-pakket, activeert en start de httpd-service op het werkstation. En het maakt een index.html-bestand aan in de standaard document root met de inhoud 'Welkom bij Apache in Chef'.

Bevestig nu de installatie van Apache2 door uw webbrowser te openen. Typ uw openbare IP-adres of de naam van uw host. In mijn geval is het localhost.

Stap 4: Nu gaan we ons eerste kookboek maken.

Maak een map met de naam kookboeken en voer de onderstaande opdracht uit om het kookboek te genereren.

Uitvoeren deze:

mkdir kookboeken cd kookboeken chef kookboek genereren httpd_deploy

httpd_deploy is een naam die aan het kookboek is gegeven. U kunt elke gewenste naam geven.

Laten we naar deze nieuwe directory httpd_deploy gaan.

Uitvoeren deze:

cd httpd_deploy

Laten we nu de bestandsstructuur van het gemaakte kookboek bekijken.

Uitvoeren deze:

boom

Stap 5: Create een sjabloonbestand.

Eerder heb ik een bestand gemaakt met wat inhoud, maar dat past niet in mijn recepten- en kookboekstructuren. Laten we dus eens kijken hoe we een sjabloon voor de index.html-pagina kunnen maken.

Uitvoeren deze:

chef-kok genereert sjabloon httpd_deploy index.html

Als je nu mijn Cookbook-bestandsstructuur ziet, is er een map gemaakt met de naamsjablonen met het bestand index.html.erb. Ik zal dit index.html.erb-sjabloonbestand bewerken en mijn recept eraan toevoegen. Raadpleeg het onderstaande voorbeeld:

Ga naar de standaardmap

Uitvoeren deze:

cd / root / chef-repo / cookbook / httpd_deploy / templates / default

Bewerk hier de sjabloon index.html.erb met een willekeurige editor waarmee u vertrouwd bent. Ik zal vim editor gebruiken.

Uitvoeren deze:

vim index.html.erb

Voeg nu het volgende toe:

Welkom bij Chef Apache Deployment

Stap 6: CMaak een recept met deze sjabloon.

Ga naar de map Recepten.

Voer t uit zijn:

cd / root / chef-repo / cookbooks / httpd_deploy / recepten

Bewerk nu het bestand default.rb met een willekeurige editor. Ik zal vim-editor gebruiken.

Uitvoeren deze:

vim standaard.rb

Voeg hier het volgende toe:

pakket 'httpd' service 'httpd' actie doen [: enable,: start] end template '/var/www/html/index.html' do source 'index.html.erb' end

Nu ga ik terug naar mijn chef-repo-map en voer / test mijn recept uit op mijn werkstation.

Uitvoeren deze:

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

Volgens mijn recept is Apache op mijn werkstation geïnstalleerd, wordt de service gestart en ingeschakeld bij het opstarten. Er is ook een sjabloonbestand gemaakt op mijn standaard document root.

Nu ik mijn werkstation heb getest. Het is tijd om de Chef Server in te stellen.

Stap 7: Stel Chef Server in

Ik zal de gehoste versie van Chef Server in de cloud gebruiken, maar je kunt ook een fysieke machine gebruiken. Deze Chef-Server is aanwezig bij manage.chef.io

Maak hier een account aan als je er nog geen hebt. Nadat u een account heeft aangemaakt, logt u in met uw inloggegevens.

Dit is hoe Chef Server eruit ziet.

methode overbelasting en overschrijven in java

Als u zich voor de eerste keer aanmeldt, is het allereerste dat u gaat doen een organisatie maken. Organisatie is in feite een groep machines die u beheert met de Chef Server.

Eerst ga ik naar het tabblad administratie. Daar heb ik al een organisatie opgericht genaamd edu. Dus ik moet de starterkit downloaden op mijn werkstation. Deze starterkit helpt je om bestanden van het werkstation naar de Chef Server te pushen. Klik op het instellingenpictogram aan de rechterkant en klik op Starter Kit.

Als je daar klikt, krijg je een optie om de Starter Kit te downloaden. Klik erop om het zip-bestand van de Starter Kit te downloaden.

Verplaats dit bestand naar uw hoofdmap.Pak dit zip-bestand nu uit met de unzip-opdracht in uw terminal. U zult merken dat het een map bevat met de naam chef-repo.

Uitvoeren deze:

unzip chef-starter.zip

Verplaats nu deze starterkit naar de kookboekdirectory in de chef-repo-directory.

Uitvoeren deze:

mv starter / root / chef-repo / cookbook

Chef Cookbooks zijn verkrijgbaar in de Cookbook Super Market, wij kunnen naar de Chef SuperMarket. Download de benodigde kookboeken van supermarkt.chef.io . Ik download een van de kookboeken om Apache vanaf daar te installeren.

Uitvoeren e t h is:

cd chef-kok mes kookboek site downloaden learn_chef_httpd

Er is een Tar-bal gedownload voor het Apache Cookbook. Nu moeten we de inhoud extraheren uit dit gedownloade Tar-bestand. Daarvoor zal ik het tar-commando gebruiken.

tar -xvf learn_chef_httpd-0.2.0.tar.gz

Alle benodigde bestanden worden automatisch aangemaakt onder dit kookboek. Er hoeven geen wijzigingen te worden aangebracht. Laten we de receptbeschrijving in mijn receptenmap bekijken.

Voer t uit h is :

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

Nu zal ik dit kookboek gewoon uploaden naar mijn Chef Server, aangezien het er voor mij perfect uitziet.

Stap 8: Upload het kookboek naar de chef-server.

Om het Apache Cookbook dat ik heb gedownload te uploaden, moet je dit learn_chef_httpd-bestand eerst naar de Cookbooks-map in de chef-repo verplaatsen. Verander vervolgens je map in kookboeken.

Voer t uit h is :

mv / root / chef-repo / learn_chef_httpd / root / chef-repo / kookboeken

Ga nu naar deze map met kookboeken.

Voer dit uit:

cd kookboeken

Voer nu in deze map de onderstaande opdracht uit om de Apache Cookboo te uploadennaar:

Exec ute t h is:

mes kookboek uploaden learn_chef_httpd

Controleer het kookboek vanuit de Chef Server Management-console. In het beleidsgedeelte vindt u het kookboek dat u heeft geüpload. Raadpleeg de onderstaande schermafbeelding:

Nu is onze laatste stap om Chef Node toe te voegen. Ik heb een Workstation, een Chef Server opgezet en nu moet ik mijn klanten aan de Chef Server toevoegen voor automatisering.

Stap 9: Chef Node toevoegen aan de Chef Server.

Voor demonstratiedoeleinden zal ik één CentOS-machine gebruiken als Chef Node. Er kunnen honderden Nodes zijn verbonden met één Chef Server. De terminalkleur van mijn Node-machine verschilt van het werkstation, zodat u tussen beide kunt onderscheiden.

Ik heb alleen het IP-adres van mijn Node nodig, daarvoor voer ik de onderstaande opdracht uit in mijn Node-machineis.

Exec u t is t h is:

ifconfig

Ik zal mijn Chef Node aan de Server toevoegen door het Knife Bootstrap commando uit te voeren, waarin ik het IP-adres van The Chef Node en de naam zal specificeren. Voer het onderstaande commando uitin:

Exec ute t h is:

mes bootstrap 192.168.56.102 --ssh-gebruiker root --ssh-wachtwoord edureka - knooppunt-naam chefNode

Dit commando zal ook de installatie van de Chef-Client in de Chef Node initialiseren. U kunt het verifiëren vanaf de CLI op het werkstation met behulp van het mes-commando, zoals hieronder getoondin:

Exec ute t h is:

Lijst met mesknooppunten

U kunt ook verifiëren via de Chef Server. Ga naar het tabblad knooppunten in uw Server Management Console, hier zult u zien dat het knooppunt dat u heeft toegevoegd aanwezig is. Raadpleeg de onderstaande schermafbeelding.

Stap 10: Beheer Node Run List

Laten we eens kijken hoe we een kookboek aan de Node kunnen toevoegen en de Run-lijst kunnen beheren vanaf de Chef Server. Zoals u in de onderstaande schermafbeelding kunt zien, klikt u op het tabblad Acties en selecteert u de optie Uitvoeringslijst bewerken om de uitvoerlijst te beheren.

In de Beschikbare Recepten kunt u ons learn_chef_httpd Recept zien, u kunt dat van de beschikbare pakketten naar de huidige Uitvoeringslijst slepen en de Uitvoeringslijst opslaan.

Log nu in op je Node en voer chef-client uit om de Run Lis uit te voerent.

Exec ute t h is:

belangrijkste klant

Ik hoop dat je deze Chef Tutorial leuk vond en hebt geleerd hoe Chef kan worden gebruikt om honderden Nodes te configureren. Chef speelt in veel organisaties een cruciale rol om DevOps te bereiken. Met Chef brengen organisaties vaker applicaties uit en reliabglas.

Als je deze blog hebt gevonden op ' Tutorial van de chef ' relevant, bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De Edureka DevOps Certification Training-cursus helpt leerlingen expertise te verwerven in verschillende DevOps-processen en tools zoals Puppet, Chef, Jenkins, Nagios en GIT voor het automatiseren van meerdere stappen in SDLC.