Vraag Praktische tips / vragen van de chef


Ik gebruik en houd van Puppet. Ik ben verhuisd naar een nieuw bedrijf en zij adopteren Chef. Dus ik probeer Chef te leren maar heb het moeilijk om alles samen te voegen, want ik denk nog steeds in Puppet =)

Dit zijn mijn vragen:

  • Is het beter om rollen in te stellen in Ruby DSL, JSON of via de beheerconsole? Waarom zijn er meerdere manieren om hetzelfde te doen?
  • Kun jij kookboeken organiseren in subdirectories? bijv .: we hebben op maat gemaakte software waar ik graag een kookboek voor wil schrijven en dat in wil voegen: chef-repo / kookboeken / onsbedrijf / customsoftwarecookbook zou dit een goede gewoonte zijn?
  • Maak ik een kookboek voor elk type rol dat aangeeft wat het doet? Heb ik deze kookboeken ook andere kookboeken (dat wil zeggen dat het cookbook voor mijn webserverrol het apache-kookboek bevat). Ik weet niet zeker hoe de cookbook-afhankelijkheden en -vererving worden afgehandeld.
  • Bestaat er iets als de externe knooppuntclassificator van Puppet, zodat knooppunten automatisch hun rollen bepalen?
  • Het lijkt erop dat u dingen met mes of binnen de beheerconsole kunt configureren of JSON-bestanden kunt bewerken? Dit is erg verwarrend voor mij waarom er zoveel manieren zijn om dingen te doen, het is verlammend! Is er een reden om het een of het ander te gebruiken? Afkomstig van Puppet lijkt het alsof het gemakkelijk is om per ongeluk iets verkeerd te configureren met deze tools (d.w.z. iets weglaten)
  • Hoe kan ik automatisch nodes voorzien met Chef in mijn dev-cluster? Met Puppet activeer ik een VM die verbinding maakt met de kindermeester en een poppenserie start en zichzelf opricht (de rol wordt bepaald door de classificator van de externe node). Hoe doe ik dit met Chef? Chef installeren met pem / rb-bestanden die het koppelen aan een chef-server, handmatig het knooppunt zijn rollen vertellen met mes of dit bewerken in de beheerinterface en vervolgens een chef-client run opstarten om zichzelf in te stellen?

Ik heb de zelfstudiehandleidingen voltooid en zie dat ze EC2-zelfstudies hebben, maar ik heb EC2 nog nooit gebruikt, dus ik kan ze moeilijk volgen. Op dit punt heb ik chef-kok gerund en ben ik begonnen met spelen met het configureren van een enkele knoop. Waar ga ik naartoe vanaf hier? Moet ik naar de openbare kookboeken gaan kijken?

De documenten op Opscode zijn goed, maar lang niet zo goed als Puppet's. Zijn er andere goede Chef-hulpbronnen die ik misschien mis in mijn zoekopdrachten?


47
2017-09-23 20:27


oorsprong


Veel te veel vragen in één post. Overweeg om ze allemaal op te splitsen. Het is beter voor de gemeenschap als geheel en krijgt ook betere, meer gedetailleerde antwoorden. - Wesley


antwoorden:


Antwoorden op uw vragen.

In dit antwoord verwijst 'Chef' of 'chef' naar chef-kok van het product, meestal in de vorm van een klant. "CHEF" verwijst naar Chef Software, Inc. Opscode hernoemd naar Chef Software, Inc in 2013.

Niet duidelijk of het beter is om rollen in ruby ​​DSL, JSON of vanaf de beheerconsole in te stellen? Waarom zijn er meerdere manieren om hetzelfde te doen?

Er zijn meerdere manieren om hetzelfde te doen omdat mensen verschillende workflows hebben. U kiest de workflow die het beste is voor uw omgeving. Laat me uitleggen wat de verschillen zijn, zodat u een weloverwogen beslissing kunt nemen.

De Ruby DSL voor rollen bestaat om het gemakkelijker te maken om rollen te schrijven zonder de syntaxis van JSON te kennen. Het is een eenvoudige manier om aan de slag te gaan met Rollen. Nadat u wijzigingen hebt aangebracht, uploadt u ze met mes naar de Chef-server.

knife role from file myrole.rb

Dit converteert de rol naar JSON en slaat deze op de server op. Als je een omgeving hebt die de Chef Repository afdwingt, waar jouw rollen leven als de bron van de waarheid, werkt dit best goed.

JSON is wat de Chef Server opslaat, dus u bewerkt JSON ook rechtstreeks in de beheerconsole. Het vereist meer velden dan de Ruby DSL zodat Knife het correct herkent om te uploaden. Die details zijn enigszins verborgen in de webinterface.

Het nadeel van het gebruik van de webui / beheerconsole voor het bewerken van rollen is dat ze zich niet in uw lokale versiebesturingssysteem bevinden, tenzij u ze van de server downloadt. Je kunt dit met mes doen:

knife role show myrole -Fj

De -Fj vertelt mes om "in JSON-formaat weer te geven." U kunt de uitvoer omleiden naar een .json-bestand als u dat wilt.

Bijwerken: Er zijn extra mes-commando's voor het werken met de bestanden in de lokale chef-repository. Momenteel ondersteunen deze opdrachten alleen JSON-formaatbestanden. EEN community RFC is open wat zal gaan over het toevoegen van ondersteuning voor de Ruby DSL voor deze plug-ins. Hier is een korte samenvatting van de workflow.

Controleer inhoudsverschillen tussen de server en het lokale bestand.

knife diff roles/myrole.json

Upload een JSON-geformatteerd rolbestand. De roles/ pad is verplicht. Dit wordt toegewezen aan hetzelfde API-eindpunt op de server.

knife upload roles/myrole.json

Download de inhoud van de server en overschrijf de inhoud van het bestand in de repository.

knife download roles/myrole.json

Deze opdrachten komen uit knife-essentials, dat is ingebouwd in het chef-clientpakket.

Kun jij kookboeken organiseren in subdirectories? bijv. - we hebben aangepaste software waar ik graag een kookboek voor wil schrijven en dat in wil voegen: chef-repo / kookboeken / onsbedrijf / customsoftwarecookbook zou dit een goede gewoonte zijn?

Nee. Knife heeft de verwachting waar kookboeken moeten leven, omdat het een API gebruikt om kookboeken naar de server te uploaden. Dit is ingesteld in het mes.rb met cookbook_path. In oudere versies van Chef kunt u een reeks paden opgeven voor kookboeken, maar dit wordt niet meer gebruikt omdat er meer onderhoud nodig was en de gebruikers het verwarrend vonden.

Bij conventie noemen we klantspecifieke of site-specifieke kookboeken met de naam voorgemengd in de kookboekendirigorie. Voor uw voorbeeld zou het zijn:

chef-repo/cookbooks/ourcompany_customsoftware

Er kunnen meerdere verschillende kookboeken zijn voor 'onsbedrijf', afhankelijk van wat u doet.

Verdere referentie:

Maak ik een kookboek voor elk type rol dat aangeeft wat het doet? Heb ik deze kookboeken ook andere kookboeken (d.w.z. het cookbook voor mijn webserverrol bevat het apache-kookboek). Ik weet niet zeker hoe de cookbook-afhankelijkheden en -vererving worden afgehandeld.

Er is geen directe relatie of afhankelijkheid tussen rollen en kookboeken.

Rollen hebben een runlijst, die de recepten en andere rollen specificeert die moeten worden toegepast op elk knooppunt met die rol. Knopen hebben een runlijst die rollen of recepten kan bevatten. Wanneer Chef op het knooppunt wordt uitgevoerd, wordt de lijst met taken uitgebreid voor alle rollen en recepten die het bevat en worden de vereiste kookboeken gedownload. In een knooppunt-run-lijst:

recipe[apache2]

Chef zal het kookboek van apache2 voor het knooppunt downloaden, zodat het dit recept kan toepassen.

Misschien heeft u een kookboek dat specifiek is voor een rol in uw infrastructuur. Vaker heb je kookboeken die zijn bedoeld voor het instellen van bepaalde soorten services zoals apache2, mysql, redis, haproxy, enz. Dan zou je die in de juiste rollen plaatsen. Als u aangepaste applicatiespecifieke dingen hebt die moeten gebeuren om een ​​rol te vervullen, kunt u dit in een aangepast kookboek schrijven (zoals ik hierboven heb aangehaald).

Verdere referentie:

Bestaat er zoiets als de externe knooppuntclassificator van Puppets, zodat knooppunten automatisch hun rollen bepalen?

"Ja." De Chef-server maakt automatisch een knooppuntgegevensopslag (in JSON) en de server indexeert ook automatisch alle knooppuntgegevens voor zoeken.

Verdere referentie:

Het lijkt erop dat u dingen met mes of binnen de beheerconsole kunt configureren of JSON-bestanden kunt bewerken? Dit is erg verwarrend voor mij waarom er zoveel manieren zijn om dingen te doen, het is verlammend! Is er een reden om het een of het ander te gebruiken?

De Chef-server heeft een RESTful API die JSON-antwoorden verzendt en ontvangt. Knife en de beheerconsole zijn gebruikersinterfaces voor interactie met de API vanuit een administratief oogpunt.

U kunt de tool die u leuk vindt beter gebruiken, hoewel de beheerconsole niet zoveel functies heeft als Knife. De meeste mensen die Chef gebruiken, geven de voorkeur aan de opdrachtregelinterface voor de kracht en flexibiliteit die het biedt, zelfs mensen die Chef gebruiken op Windows. Verder is mes een op plug-ins gebaseerd hulpmiddel dat u nieuwe plug-ins kunt maken om te communiceren met de Chef-server of met andere delen van uw infrastructuur.

Chef is een verzameling bibliotheken en primitieven en een API. Het biedt u de flexibiliteit om het configuratiebeheersysteem te bouwen dat het beste werkt voor uw infrastructuur.

Verder lezen:

Hoe kan ik automatisch nodes voorzien met chef-kok in mijn dev-cluster? Met pop maak ik een VM aan die verbinding maakt met de puppermaster en een poppenserie start en zichzelf opricht (de rol wordt bepaald door de classificator van de externe node). Hoe doe ik dit met een kok? - Installeer de chef met pem / rb-bestanden die hem verbinden met een chef-server, vertel het knooppunt handmatig zijn rollen met het mes of bewerk dit in de beheerinterface en start vervolgens een chef-client run om zichzelf in te stellen?

Je wilt Knife Bootstrap gebruiken. Dit is een ingebouwde plug-in die wordt geleverd met een mes. Je roept het zo aan:

knife bootstrap 10.1.1.112 -x root -i ~/.ssh/root_id_rsa -r 'role[webserver]'

Dit zal:

  • SSH naar het doelsysteem (10.1.1.112) als de root gebruiker met behulp van een SSH-sleutel (je zou kunnen ssh als een andere gebruiker en vervolgens gebruiken --sudo).
  • Installeer Ruby
  • Chef installeren
  • Creëer het Chef-configuratiebestand voor uw Chef-server, leesmes-configuratie (.chef / knife.rb).
  • Kopieer de "validatie" RSA private key, die het knooppunt zal gebruiken om zich automatisch te registreren bij de Chef-server.
  • Rennen chef-client met behulp van de door komma's gescheiden run vermeld opgegeven. In dit voorbeeld alleen de webserver rol wordt toegepast.

Hierbij wordt ervan uitgegaan dat het doelsysteem is ingericht, een IP-adres heeft en u SSH als root kunt gebruiken. Afhankelijk van uw lokale beleid en registratieproces, moet u mogelijk aanpassen hoe dit werkt. De mes-opstartpagina op de wiki beschrijft meer over hoe dit werkt.

De opdracht bootstrap voor het gebruik van bootstrap-"sjablonen" zijn platformspecifieke shell-scripts die Chef in de bekendste werkende configuratie zullen installeren. Verschillende distributies hebben helaas verschillende Ruby-versies, dus er zijn verschillende scripts. U kunt ook uw eigen bootstrap-sjablonen maken. U kunt een andere specificeren met de -d of --distro keuze:

knife bootstrap [ ... ] -d centos5-gems

Opscode werkt aan een full-stack Chef-clientinstallatieprogramma en bootstrap-sjabloon dat veel van deze problemen zal verwijderen. Het is in beta-testen en het is de manier waarop Opscode zal aanbevelen om Chef te installeren.

Knife heeft ook plug-ins voor een aantal openbare cloud computing-aanbieders zoals Amazon EC2 en Rackspace Cloud. Er zijn plug-ins beschikbaar voor privécloudomgevingen zoals Eucalyptus en OpenStack. Er zijn ook plug-ins voor VMware, Vsphere en anderen. U kunt meer informatie over de wiki bekijken.

Verder lezen:

Zijn er andere goede hulpmiddelen van de chef die ik misschien mis in mijn zoekopdrachten?

De Chef-documentatie de primaire bron van documentatie. CHEF Opscode werkt aan het bijwerken van de Wiki-documentatie over de hele linie om consistent te zijn met de huidige versie van Chef, en om de beginnersinformatie op gepaste wijze te scheiden van geavanceerde informatie. Dit moet vrij snel worden voltooid.

CHEF draait Chef-basisbeginselen, wat een 2-daagse klasgerichte technische training is met lezingen en oefeningen. Openbare trainingen worden periodiek aangeboden en de materialen voor de training zijn kosteloos verkrijgbaar door je te registreren bij het Open Training-programma. Registratie is vereist, zodat CHEF kan achterhalen waar mensen in geïnteresseerd zijn en om contact op te nemen met mensen die zich aanmelden voor nieuwe releases van het materiaal of nieuwe openbare lessen.

CHEF's Open Training-programma:

Ik plaats af en toe tips, trucs en handleidingen over Chef op mijn blog: http://jtimberman.housepub.org/. Ik heb ook een serie genaamd "snelle tips"

CHEF-klanten kunnen hulp en ondersteuning krijgen op de ondersteuningswebsite:

De gebruikerscommunity van Chef is een uitstekende bron van extra hulp:

Aanvullende bronnen zijn beschikbaar op CHEF's website. Ik hoop dat dit helpt.


81
2017-09-25 05:31



Dit is een waardevolle hulpbron, koppel het er vaker aan. - Pooyan Khosravi