puppetAan de slag met pop


Opmerkingen

Deze sectie geeft een overzicht van wat een pop is en waarom een ontwikkelaar hem misschien wil gebruiken.

Het moet ook alle grote onderwerpen in de pop vermelden en naar de gerelateerde onderwerpen verwijzen. Omdat de documentatie voor poppen nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

versies

Marionet Open Source

Versie Publicatiedatum
4.7.0 2015/09/22
4.6.0 2015/08/10
4.5.0 2015/05/17
4.4.0 2016/03/16
4.3.0 2015/11/17
4.2.0 2015/06/24
4.1.0 2015/05/19
4.0.0 2015/04/15
3.8.0 2015/04/28
3.7.0 2014/09/04
3.6.0 2014/05/15
3.5.0 2014/04/03
3.4.0 2013/12/19
3.3.0 2013/09/12
3.2.0 2013/05/14
3.1.0 2013/02/04
3.0.0 2012/09/28
2.7.0 2011-06-17
2.6.0 2010-07-20
0.25.0 2009-09-05
0.24.0 2007-12-13
0.23.0 2007-01-20
0.22.0 2007-01-06
0.20.0 2006-10-18
0.19.0 2006-09-07
0.18.0 2006-06-14
0.17.0 2006-05-16
0.16.0 2006-04-21
0.15.0 2006-03-13
0.14.0 2006-03-06
0.13.0 2006-02-09
0.12.0 2006-01-26
0.11.0 2006-01-17
0.10.0 2006-01-09
0.9.3 2006-01-03
0.9.2 2005-11-22

Voordat u opstart

Voordat je besluit aan de pop te werken, zijn er een paar dingen die je moet weten.

  1. poppenwerk in zowel client-server-architectuur (veel gebruikt) als één machine (speciaal voor testdoeleinden)

  2. puppet master kan alleen worden geconfigureerd op een linux machine (master machine / node), windows kunnen alleen worden gebruikt als client (managed machine / node)

  3. als u master configureert, moet u zich ervan bewust zijn dat u een linux-machine en basisopdrachten gebruikt

  4. puppet biedt een eigen configuratietaal die eruitziet als json

Installatie

systeem vereisten

De Puppet-masterservice is echter vrij resource-intensief en moet op een robuuste dedicated server worden geïnstalleerd.

  • Uw Puppet-masterserver moet minimaal twee processorkernen en minimaal 1 GB RAM-geheugen hebben.
  • Om minimaal 1.000 knooppunten comfortabel te kunnen bedienen, moet het 2-4 processorcores en minimaal 4 GB RAM hebben.

Controleer uw netwerkconfiguratie:

Bij een agent / master-implementatie moet u uw netwerk voorbereiden op het verkeer van Puppet.

  • Firewalls: De Puppet-masterserver moet inkomende verbindingen op poort 8140 toestaan en agentknooppunten moeten verbinding kunnen maken met de master op die poort.
  • Naamomzetting: elk knooppunt moet een unieke hostnaam hebben. Forward en reverse DNS moeten beide correct worden geconfigureerd.

Opmerking: de standaard hostnaam van de marionetten is marionet. Uw agentknooppunten kunnen sneller gereed zijn als deze hostnaam wordt omgezet in uw Puppet-master.

De tijd moet nauwkeurig worden ingesteld op de Puppet-masterserver die zal optreden als de certificeringsinstantie. U zou waarschijnlijk NTP moeten gebruiken.


Puppetserver installeren

Puppet biedt officiële pakketten die Puppet Server 2.4 en alle vereisten op de volgende platforms installeren.

Red Hat Enterprise Linux

  • Enterprise Linux 6
  • Enterprise Linux 7

Debian

  • Debian 7 (Wheezy)
  • Debian 8 (Jessie)

Ubuntu

  • Ubuntu 12.04 (nauwkeurig)
  • Ubuntu 14.04 (Trusty)
  • Ubuntu 15.10 (Wily)
  • Ubuntu 16.04 (Xenial)

Schakel de Puppet-pakketrepository's in

Enterprise Linux 7

sudo rpm -Uvh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
 

Kijk hier voor andere versies

Poppenspeler installeren

yum install puppetserver
 

of

apt-get install puppetserver
 

Puppetserver is standaard geconfigureerd om 2 GB RAM te gebruiken. Kijk hier om te veranderen

Start de Puppet Server-service:

systemctl start puppetserver
 

of

service puppetserver start
 

Is het voor jou?

Als u implementaties uitvoert, uw applicaties op meerdere servers configureert en vereist om in te loggen op uw servers en enkele wijzigingen aan te brengen in infrastructuur, applicaties, pre-requisits etc. dan kan puppet u zeker helpen.

Behalve dit alles als u een grote infrastructuur beheert en gecentraliseerd beheer wilt, kunt u ook een kijkje nemen.

Officiële documentatie

Marionet biedt officiële documentatie voor zowel open-source als enterprise-versies. je kunt het hier vinden

Wat is een pop en waarom zou ik me druk maken?

Puppet is een oplossing voor configuratiebeheer. Gebruikers beschrijven de gewenste status van een server of software en configuratiebeheer bereikt deze status. Dit heeft de volgende voordelen:

  • Configuraties kunnen elke keer exact hetzelfde worden gereproduceerd, zo vaak als nodig
  • Configuraties voor alle software en servers worden op een centrale locatie opgeslagen. Dit maakt back-up en versiebeheer van configuraties gemakkelijk haalbaar
  • Wijzigingen in alle servers verspreiden zich binnen enkele minuten door de gehele infrastructuur, zonder dat u zich rechtstreeks bij een computer hoeft aan te melden
  • Alles wordt in dezelfde taal beschreven, waardoor het eenvoudig is om nieuwe software te configureren
  • Modules zijn vergelijkbaar met bibliotheken en kunnen configuraties worden geconsolideerd. Modules voor alle belangrijke softwarepakketten bestaan al, waardoor ze uiterst eenvoudig te installeren zijn
  • Servers kunnen informatie met elkaar delen, waardoor de configuratie van andere servers wordt beïnvloed. Een nieuwe server kan zich bijvoorbeeld automatisch registreren met de load balancer en monitoringoplossing

Marionet gebruikt Ruby om de gewenste status van een server, een knooppunt, te beschrijven . Zij doet dit met het gebruik van primitieven genoemd brontypen. Standaard wordt elke 30 minuten, de pop middel rechtvaardigt zichzelf tegen de pop server. Vervolgens verzendt het een lijst met eigenschappen van zichzelf die feiten worden genoemd . De server bekijkt de feiten en de configuratiebestanden die manifest worden genoemd en compileert de gewenste status voor het knooppunt. Vervolgens wordt de configuratie teruggestuurd naar het knooppunt, waar de agent deze toepast.

Om een idee te geven van hoe krachtig dit kan zijn, zijn hier een paar voorbeelden van toenemende complexiteit die laat zien wat pop voor u kan doen.

Voorbeeld: gebruiker

In dit voorbeeld wordt de gebruiker gebruikersnaam op het knooppunt myserver en toegevoegd aan de groep wheel.

node 'myserver' {
    user { 'username':
      ensure => 'present',
      groups => ['wheel'],
    }
}
 

Dit bestand dat zou worden opgeslagen op de pop server is het manifest. Het brontype in dit voorbeeld is gebruiker . Elk brontype heeft optionele en vereiste eigenschappen. In dit voorbeeld is verzekeren vereist en is groepen optioneel. Deze specifieke configuratie zou alleen op mijnserver worden toegepast. U kunt configuraties op alle knooppunten toepassen door deze buiten een knooppuntdefinitie te plaatsen.

Het is mogelijk om een paar brondefinities te nemen en deze op te slaan als modules . Een module lijkt op een bibliotheek. Deze modules kunnen online worden gedeeld en u vindt er meestal één voor elk groot softwarepakket. De officiële manier om modules te delen is via de puppet forge: https://forge.puppet.com/

Voorbeeld: Postgres

Dit voorbeeld installeert een postgres-server op node myserver en maakt een database DB aan , eigendom van gebruikersnaam , geïdentificeerd door wachtwoord . Dit gebeurt met de postgresql-module.

node 'myserver' {
    class { 'postgresql::server': }
    
    postgresql::server::db { 'db':
        user     => 'username',
        password => 'password',
    }
}
 

In dit geval is postgresql een module. De module zelf zorgt voor het identificeren van het besturingssysteem, het downloaden en installeren van het programma en het vervolgens configureren volgens het manifest. Dit is een eenvoudig voorbeeld, maar de module laat veel aanpassingen toe.

Merk op dat het niet nodig is om SQL te kennen of om een Postgres-server daadwerkelijk te installeren om dit te doen. Officiële modules worden goed onderhouden en bieden een gezonde en veilige basisconfiguratie.

Het is ook mogelijk om feiten in manifesten te gebruiken. Feiten werken als variabelen.

Voorbeeld: omstandigheden waarbij feiten worden gebruikt

In dit voorbeeld wordt de rsyslog-module gebruikt om rsyslog op alle niet-Windows-machines te configureren.

if $osfamily != 'windows' {
  class { 'rsyslog::client': }
}
 

$ osfamily is een feit. Deze feiten worden elke keer verzameld als de poppenspeler rent. Omdat deze definitie buiten een knooppuntdefinitie valt, wordt deze op alle knooppunten toegepast. Rsyslog :: client wordt echter alleen uitgevoerd op knooppunten waarop geen vensters worden uitgevoerd.

Omdat de pop robijn gebruikt, kunnen programmatische elementen zoals besturingsstromen en variabelen worden gebruikt in manifesten.

Met de toevoeging van PuppetDB kunt u informatie delen tussen meerdere knooppunten. Hierdoor kan een knooppunt de configuratie op een ander knooppunt beïnvloeden. Klassieke voorbeelden zijn load balancers of monitoring-oplossingen.

Voorbeeld: een host registreren met monitoring met behulp van geëxporteerde bronnen

Dit voorbeeld maakt een geëxporteerde bron op een knooppunt en importeert die bron vervolgens op de bewakingsserver, waardoor de host wordt toegevoegd aan de bewaking. Het maakt gebruik van de Icinga2-poppenmodule.

@@icinga2::object::host { $::fqdn:
  display_name     => $::fqdn,
  ipv4_address     => $::ipaddress_eth0,
}

node 'icinga2' {
    Icinga2::Object::Host <<| |>> { }
}
 

@@ icinga2 :: object :: host maakt een hostdefinitieobject . Dit wordt gemaakt door elk knooppunt dat deze code uitvoert. De @@ markeert het als een geëxporteerde bron . Gewoonlijk delen knooppunten geen informatie in de pop. Geëxporteerde bronnen maken dat mogelijk.

Merk op dat alle eigenschapswaarden in de hostdefinitie feiten zijn. Dit betekent dat ze verschillend zullen zijn voor elk knooppunt dat het uitvoert.

Ten slotte wordt de geëxporteerde bron geïmporteerd door het icinga2- knooppunt. De Icinga2-module zorgt ervoor dat de juiste configuratiebestanden worden gemaakt en opnieuw worden geladen.