Wat is Puppet?
In DevOps wil je zoveel mogelijk taken automatiseren. Het handmatig configureren van omgevingen duurt weken met enorme infrastructuren. Tegen de tijd dat alles is ingesteld, blust je branden in plaats van nieuwe effectieve oplossingen te implementeren, zoals Rancher-servers.
Puppet helpt bij het automatiseren van handmatige taken om snel systemen in te richten en applicaties te implementeren. Dynamisch infrastructuurbeheer vormt de kern van Puppet.
In dit artikel wordt uitgelegd wat Puppet is, welke problemen het oplost en hoe je Puppet kunt gebruiken om handmatige taken als DevOps-team succesvol te automatiseren.
Wat is Puppet?
Puppet is een IaC-tool (Infrastructure as Code) voor het beheren van meerdere servers. Puppet, geschreven in Ruby (voornamelijk), werkt op meerdere Unix-achtige systemen en ondersteunt ook Windows.
De software is zeer volwassen, met de eerste release in 2005. Puppet wordt geleverd als gratis, open-source software en er is ook een propriëtaire versie beschikbaar voor complexe infrastructuren.
Waar wordt de pop voor gebruikt?
Puppet automatiseert het beheer en de implementatie van serverconfiguraties. De software maakt het mogelijk om strings te trekken en statussen op meerdere systemen tegelijk te beheren, en de aanpak vermindert de handmatige installatie en het beheer van afzonderlijke servers.
Puppet definieert de gewenste toestand voor het systeem in plaats van hoe daar te komen. De configuratie is van toepassing op verschillende platforms en apparaten en handhaaft de status over de hele infrastructuur. Over het algemeen zijn er minder systeembeheerders nodig om branden te blussen, waardoor het DevOps-team nieuwe en betere serveroplossingen kan implementeren.
Puppet-configuratiebeheer
Automatiseringsscripts helpen bij het afhandelen van repetitieve taken, zoals het installeren en configureren van servers. Wanneer u echter met een uitgebreide infrastructuur werkt, worden automatiseringsscripts niet geschaald.
Configuratiebeheer biedt een oplossing voor uitgebreide infrastructuurconfiguraties. De werkwijzen worden beschouwd als de ruggengraat van DevOps en zorgen voor frequente en betrouwbaardere softwarereleases in een gevestigde DevOps-pijplijn.
Serverconfiguratiebeheer vindt plaats dankzij de infrastructuur-als-code-aanpak. In het geval van Puppet is de serverbeheercode in Puppet-code, vergelijkbaar met Ruby. De taal is declaratief en beschrijft een op modellen gebaseerde configuratie.
Hoe werkt Puppet?
Puppet gebruikt een client-server benadering en bestaat uit de volgende systemen:
- De Puppet Master is een server met de Puppet Master-daemon die cruciale systeeminformatie voor alle nodes beheert met behulp van manifesten.
- De Puppet Agents zijn knooppunten waarop Puppet is geïnstalleerd en waarop de Puppet Agent-daemon actief is.
In de onderstaande secties worden de essentiële Puppet-elementen en terminologie uitgelegd, die helpen verduidelijken hoe Puppet werkt.
Puppet-topologie en architectuur
Puppet maakt gebruik van een client/server-architectuur die bestaat uit de Puppet Master en Puppet Agents. Puppet Agents gebruikt de pull-modus om de master te pollen en node-specifieke en site-specifieke configuratie-informatie op te halen.
De topologie doorloopt de volgende stappen:
- Een node met een Puppet Agent-daemon verzamelt alle informatie (feiten) over zichzelf, en de agent stuurt de feiten naar de Puppet Master.
- De Puppet Master gebruikt de gegevens om een catalogus te maken over hoe de node moet worden geconfigureerd en stuurt deze terug naar de Puppet Agent.
- De Puppet Agent configureert zichzelf op basis van de catalogus en rapporteert terug aan de Puppet Master.
Puppet gebruikt een hulpprogramma genaamd Facter systeeminformatie te ontdekken. De tool wordt standaard geleverd met de Puppet-installatie.
Puppet Master
De Puppet Master is een daemon die op een dedicated server draait. De Puppet Master is de informatiebron en configuratie-autoriteit als serverknooppunt. De master stuurt instructies naar alle agentknooppunten en houdt toezicht op de systeemconfiguratie.
De Puppet Master is verantwoordelijk voor de volgende taken:
- Een catalogus maken voor de agenten.
- Bestandsoverdracht van een bestandsserver naar agenten.
- SSL-certificaten accepteren van agenten.
- Configuratiemanifesten opslaan.
Puppet maakt gebruik van identiteitstoegangsbeheer via een speciale gebruiker en groep, die beveiliging biedt en alleen de vereiste informatie aan agenten blootlegt. Niet alle acties vereisen echter verhoogde rechten.
Marionetagenten
De Puppet Agent is een Puppet-daemon die op een systeem of knooppunt draait. Agenten hebben bepaalde rechten op het knooppunt om configuratiecatalogi toe te passen die uit de Puppet Master zijn gehaald.
Om communicatierechten te krijgen, vraagt een agent bij het eerste contact met de master een SSL-certificaat aan. Elke keer dat de agent de master om configuratie-updates vraagt, wordt het certificaat gecontroleerd voordat de informatie wordt verzonden. Een master authenticeert zich ook bij de agenten om correcte configuratie-informatie te garanderen.
Puppet-agents wijzigen de systeemconfiguratie en hebben rootrechten nodig om taken uit te voeren.
Puppet-codering en communicatiebeveiliging
Puppet gebruikt OpenSSL voor communicatie en beveiliging. Puppet is gebaseerd op SSL- en TLS-protocollen en gebruikt standaard SSL/TLS-codering en SSL-certificaten voor agent/master-authenticatie en -verificatie. Bovendien versleutelt Puppet de verkeersstroom tussen de agenten en servers met SSL/TLS met SHA-256 als de standaardhash.
Versleutelingsmethoden in Puppet zorgen voor het volgende:
- Hoofd/agent authenticatie en verificatie.
- Voorkomen van datalekken tussen master en agenten.
De master genereert zijn eigen CA-certificaat, privésleutel, CRL (Certificate Revocation List) en een servercertificaat. Het servercertificaat wordt naar agenten verzonden om SSL- en TLS-communicatie mogelijk te maken.
Voordelen van Puppet en waarom je het zou moeten gebruiken
Puppet is een van de oudste en meest populaire automatiseringstools voor configuratiebeheer. Hieronder staan vijf voordelen die goede redenen geven om Puppet te gaan gebruiken.
1. Open source
Puppet is open source, wat de technologie uitbreidbaar maakt. Aangepaste bibliotheken en modules verrijken individuele projecten die passen bij uw gebruik.
Open source heeft ook het voordeel van een actieve community. Tal van discussies, forums en experts staan klaar om te helpen en vragen te beantwoorden.
2. Bron abstractie
Configuratietaken zijn repetitief en vaak zijn dezelfde stappen vereist op servers met verschillende besturingssystemen via platformspecifieke stappen. Het onthouden van alle commando's is een onmogelijke taak.
Facter helpt Puppet de details te achterhalen en abstractie te bereiken. Systeemspecifieke gegevens en OS-details zijn allemaal bekend bij Puppet dankzij Facter.
3. Idempotentie
Redundante configuraties zijn een complex probleem bij het werken met meerdere servers, en Puppet streeft ernaar alleen die wijzigingen toe te passen die van invloed zijn op het systeem. Als de gewenste staat van de infrastructuur is bereikt, voert Puppet de opdrachten niet uit. Deze Puppet-functie staat bekend als idempotentie, wat helpt om redundantie te verminderen en de efficiëntie te verhogen.
4. Platformoverschrijdend
Puppet bestrijkt een breed scala aan platforms, waardoor het aantal servers in het configuratie-automatiseringsproces toeneemt. De tool werkt op Windows, OS X, op Debian gebaseerde systemen, Fedora, Gentoo, RHEL en Solaris.
5. Flexibel
De Puppet-taal bevat een manier om instructies te negeren en uitzonderingen te maken voor verschillende scenario's. Puppet helpt ook bij het periodiek plannen van specifieke onderhoudsacties.
Conclusie
Puppet is een krachtig hulpmiddel voor het beheren van configuraties en servertaken, en het is een uitstekende keuze voor stabiele servers die niet dynamisch of vaak veranderen.
Bekijk ons vergelijkingsartikel om te zien hoe Puppet zich verhoudt tot andere vergelijkbare technologieën:Ansible vs. Terraform vs. Puppet.
Cloud computing