Beheerde omgevingen groeien in de loop van de tijd, vaak als gevolg van de toegenomen gegevensbetrokkenheid of misschien vanwege de noodzaak om de prestaties te verbeteren door middel van gedeelde werklast. Hierdoor is het nodig om leden toe te voegen. Met MongoDB kan men bijvoorbeeld besluiten om replicatie en sharding uit te voeren, waardoor men meer leden aan het cluster moet toevoegen. Het configureren en implementeren van deze omgevingen met de tijd wordt hectisch, tijdrovend, vatbaar voor menselijke fouten en zoveel bijbehorende tegenslagen die uiteindelijk operationele kosten met zich meebrengen. Neem een voorbeeld van een replicaset met 50 leden in MongoDB en u wilt een bepaalde verzameling in elk van de leden sharden, dit handmatig doen voor elk is tijdrovend, we hebben dus een gecentraliseerd systeem nodig van waaruit u eenvoudig alle leden kunt configureren . Met een gecentraliseerd systeem schrijft u een code die intern de aangesloten leden configureert. De code is daarom door mensen leesbaar, versiebeheer en testbaar om mogelijke fouten te verwijderen voordat ze worden geïmplementeerd.
Wat is Chef-software?
Chef is automatiseringssoftware geschreven in de Ruby-taal die wordt gebruikt om de taak van het configureren en onderhouden van cloudmachines of op prem-servers te stroomlijnen. Het doet dit door ervoor te zorgen dat alle aangesloten leden de vereiste middelen krijgen, de middelen goed zijn geconfigureerd en alle middelen corrigeert die niet in de gewenste staat zijn. Chef zorgt er dus in feite voor dat bestanden en softwarebronnen die naar verwachting in een bepaalde machine aanwezig zijn, correct zijn geconfigureerd en correct werken zoals bedoeld.
De componenten van Chef
Chef-server
Dit is het centrale besturingssysteem waarin de configuratiegegevens zijn ondergebracht. De gegevens zijn geschreven in een ‘recept’ en als het veel van deze recepten betreft, vormen ze een kookboek. Het centrale systeem bevat ook metadata die elk van de knooppunten beschrijven zoals beschreven in chef-client.
Alle wijzigingen die in recepten zijn aangebracht, worden hier ter validatie doorgegeven voordat ze worden geïmplementeerd. De server zorgt er ook voor dat het werkstation en de verbonden knooppunten worden gekoppeld met autorisatiesleutels voordat communicatie tussen hen wordt toegestaan en de wijzigingen worden toegepast.
Chef-klantknooppunt
Het Chef-clientknooppunt registreert en valideert knooppunten en bouwt de knooppuntobjecten. Het bevat in wezen de huidige status van een bepaald knooppunt en zijn metadata.
Knooppunt
Dit is de fysieke, virtuele of cloudmachine die moet worden geconfigureerd en op elke machine moet het clientknooppunt zijn geïnstalleerd.
Werkstation
Het werkstation biedt een interface voor communicatie tussen de server en de clientknooppunten. Het biedt een platform voor het schrijven, testen en implementeren van de kookboeken. Hier worden ook de rollen gedefinieerd
Keuken testen
Hier wordt de code gevalideerd.
Koksmes
Interactie met de knooppunten.
Kookboeken
Bevat recepten geschreven in Ruby-taal en worden gebruikt om de taken te definiëren die moeten worden uitgevoerd. De recepten specificeren middelen en volgorde van implementatie op de gedefinieerde taken.
- kenmerken worden gebruikt om de standaardinstellingen te overschrijven.
- bestanden die worden gebruikt om bestanden van een specifiek pad naar chef-client over te brengen.
- metadatabron definieert de node-informatie zoals beschreven in de client-node.
Hoe Chef werkt
Chef kan op twee manieren werken, namelijk client/server of in een stand-alone modus die bekend staat als 'chef-solo'.
De Chef-server ontvangt verschillende attributen met betrekking tot een bepaalde node van de Chef-client. Deze attributen worden vervolgens met Elasticsearch geïndexeerd door de server, die vervolgens een Application Program Interface (API) levert van waaruit de client-nodes deze gegevens kunnen opvragen. De geretourneerde resultaten worden vervolgens door de client-nodes gebruikt om de relevante machines te configureren en ze in de gewenste staat te transformeren.
De server verbindt alle bewerkingen waar wijzigingen moeten worden opgeslagen
Chef-beheerde servers worden van tijd tot tijd geëvalueerd op basis van een bepaalde gewenste status om ervoor te zorgen dat eventuele wijzigingen in configuraties worden automatisch gecorrigeerd en universeel toegepast. Met deze aanpak is er een consistente configuratie op schaal.
Aan de slag met Chef
Je kunt het chef-werkstation van deze site downloaden en installeren. Maak een map met de naam kookboeken en voer in deze map het commando uit:
$ chef generate cookbook first_cookbook
Dit genereert een map met de naam first_cookbook met enkele submappen en bestanden.
Navigeer naar cookbooks/first_cookbook/recipes/ en werk het standaard.rb-recept bij met de inhoud
file "test.txt" do
content 'This is my first recipe file'
end
We voeren dit bestand vervolgens uit met het commando
$ chef-client --local-mode --override-runlist first_cookbook.
OF, in de receptenmap kunt u het bestand uitvoeren met de opdracht
$ chef-apply default.rb
Als je naar je receptenmap navigeert, zul je zeker het test.txt-bestand zien met de inhoud. Dit is mijn eerste receptenbestand. Het is zo makkelijk. In het volgende gedeelte zullen we recepten maken om een aantal specifieke taken met betrekking tot MongoDB uit te voeren
MongoDB installeren en configureren met Chef
U kunt MongoDB installeren door een installatierecept MongoDBInstall.rb te maken en dit te vullen met de inhoud
package "mongodb" do
action :install
version '4.0.3'
end
In dit geval is onze pakketnaam mongodb en gaan we versie 4.0.3 installeren
We hebben een basisrecept, maar in veel gevallen hebben we een geavanceerd kookboek nodig om onze configuratie in MongoDB uit te voeren. Om de taak te vergemakkelijken, zijn er kookboeken ontwikkeld, zoals SC-MongoDB die de configuratie over het algemeen nauwkeurig maken.
SC-MongoDB Kookboek
Het kookboek biedt mongodb_instance die er een verbetert om MongoDB-params, replicaset en een shard-cluster te configureren.
Voer de opdracht uit om het kookboek te installeren
$ knife supermarket download sc-mongodb
U kunt vervolgens de gedefinieerde kenmerken op deze site gebruiken om enkele van de standaard MongoDB-kenmerken opnieuw te configureren.