Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 8686|Antwoord: 0

Configuratiebeheer: Poppeninstallatie en gebruik (1)

[Link kopiëren]
Geplaatst op 20-10-2014 09:47:45 | | |
1. Introductie tot Puppet

Systeembeheerders zitten vaak vast in een reeks repetitieve taken: pakketten upgraden, configuratiebestanden beheren, systeemservices, cron-taken, nieuwe configuraties toevoegen, bugs oplossen, enzovoort. Deze taken zijn vaak repetitief en inefficiënt, en de eerste reactie op het oplossen is ze automatiseren, zodat aangepaste scripts verschijnen. Door de complexiteit van de omgeving worden aangepaste scripts en applicaties herhaaldelijk ontwikkeld en is het moeilijk om meerdere platforms te passen, en flexibiliteit en functionaliteit zijn moeilijk te garanderen, waardoor geautomatiseerde configuratiebeheertools zoals Puppet zijn ontstaan.

In de open source wereld zijn er veel configuratietools om uit te kiezen, en enkele van de belangrijkste producten in deze sector zijn:

    Puppet (http://puppet.reductivelabs.com/): Een configuratiebeheertool geschreven in Ruby die de C/S-architectuur gebruikt om de client in declaratieve taal te configureren.
    Cfengine (http://www.cfengine.org): Een van de eerste open source configuratietools die werden uitgebracht, uitgebracht in 1993, het is ook een C/S-architectuur, meestal gebruikt in onderwijsinstellingen.
    LCFG(http://www.lcfg.org/): Een configuratiebeheertool voor C/S-architecturen die XML gebruikt om configuraties te definiëren.
    Bcfg2: Een configuratiebeheertool voor C/S-architectuur, geschreven in Python, die specificaties en clientantwoorden gebruikt om de doelhost te configureren.

Dit document is gewijd aan het beschrijven van hoe je Puppet kunt gebruiken om je host, applicaties, achtergrondprogramma's en diverse diensten te beheren.

Over Puppet:

1. Waar wordt Puppet voor gebruikt?

Puppet is een open-source Ruby-gebaseerde systeemconfiguratiebeheertool die vertrouwt op de C/S-implementatiearchitectuur. De hoofdontwikkelaar is Luke Kanies, die de GPLv2-auteursrechtlicentie volgt. Sinds 1997 is Kanies betrokken bij UNIX-systeembeheer, en de ontwikkeling van Puppet is voortgekomen uit deze ervaring. Niet tevreden met de beschikbare configuratietools, begon Kanies tussen 2001 en 2005 met het ontwikkelen van tools in het Reductieve lab. Al snel bracht Reductive Labs hun vlaggenschipproduct Puppet uit.

2. Kenmerken van Pupput

Veel systeemconfiguratiebeheertools werken zeer vergelijkbaar, zoals cfengine. Wat maakt Puppet uniek?

De syntaxis van Puppet stelt je in staat een apart script te maken om een gebruiker op al je doelhosts te bouwen. Alle doelhosts zullen de module op hun beurt interpreteren en uitvoeren met behulp van de syntaxis die toepasbaar is op het lokale systeem. Als deze configuratie bijvoorbeeld op een Red Hat-server wordt uitgevoerd, maak dan een gebruiker aan met het useradd-commando; Als deze configuratie wordt uitgevoerd op een FreeBSD-host, wordt het adduser-commando gebruikt.

Een ander opmerkelijk aspect van Puppet is de flexibiliteit. Door de aard van open source software kun je vrij de broncode van Puppet verkrijgen, en als je problemen ondervindt en de mogelijkheid hebt, kun je de code van Puppet aanpassen of verbeteren om bij je omgeving te passen. Daarnaast blijven gemeenschapsontwikkelaars en donateurs de mogelijkheden van Puppet verbeteren. Een grote gemeenschap van ontwikkelaars en gebruikers zet zich ook in voor het leveren van documentatie en technische ondersteuning voor Puppet.

Puppet is ook makkelijk te schalen. Ondersteuning voor aangepaste pakketten en speciale systeemomgevingsconfiguraties kunnen snel en eenvoudig aan de Puppet-installer worden toegevoegd.

3. Puppet's werkmodus

Puppet is een configuratiebeheertool voor C/S-architectuur die het puppet-server-pakket (bekend als Puppet master) installeert op een centrale server. Installeer de Puppet client-software (Puppet Client genoemd) op de doelhost die beheerd moet worden. Wanneer de client verbinding maakt met de Puppet master, wordt het configuratiebestand dat op de Puppet master is gedefinieerd gecompileerd en vervolgens op de client uitgevoerd. Standaard communiceert elke client elk half uur met de server om de update van configuratie-informatie te bevestigen. Als er nieuwe configuratie-informatie is of is gewijzigd, wordt de configuratie opnieuw gecompileerd en gepubliceerd aan elke client voor uitvoering. Je kunt ook actief een update van configuratie-informatie op de server activeren om elke client te dwingen deze te configureren. Als de configuratie-informatie van de client wordt gewijzigd, kan hij de oorspronkelijke configuratie van de server ophalen om dit te corrigeren.

Configuratiebeheer: Poppeninstallatie en gebruik (1)


4. De toekomst van Puppet

Tot slot is Puppet een jong hulpmiddel dat nog steeds in ontwikkeling is. De poppengemeenschap groeit snel, en er worden voortdurend veel nieuwe ideeën toegevoegd, wat leidt tot ontwikkeling, updates en modules die dagelijks worden gepresenteerd.

2. Configuratie en installatie (Puppet 2.6.4 CentOS 5.4 installatie):

Configureer de repository op de puppetserver en client:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@puppetmaster ~]# vi /etc/yum.repos.d/epel.repo
Voeg toe aan:
[epel-pop]
naam=Epel Puppet
baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/
enabled=0
gpgcheck=0

Voeg de repository puppet.repo toe:
[root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo
[poppenlabs]
name=Puppet Labs Pakketten
baseurl=http://yum.puppetlabs.com/base/
enabled=0
gpgcheck=0

Poppenmeesterinstallatie Installatie:
[root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server

Pas hosts aan en voeg de volgende twee records toe:
[root@puppetmaster ~]# vi /etc/hosts
192.168.0.10 puppetmaster.leju.com pop
192.168.0.100 puppetclient.leju.com

Puppet configureren:
[root@puppetmaster ~]# cd /etc/puppet/
[root@puppetmaster pop]# vi puppet.conf

[hoofd]
    # De Puppet logboekendirectory.
    # De standaardwaarde is '$vardir/log'.
    logdir = /var/log/puppet

    # Waar Puppet PID-bestanden worden bewaard.
    # De standaardwaarde is '$vardir/run'.
    rundir = /var/run/puppet

    # Waar SSL-certificaten worden bewaard.
    # De standaardwaarde is '$confdir/ssl'.
    ssldir = $vardir/ssl

[agent]
    # Het bestand waarin Puppetd een lijst van de klassen opslaat
    # geassocieerd met de teruggevonden configuratie.  Kan worden geladen
    # het aparte ''puppet'' uitvoerbaar bestand met de ''--loadclasses''
    # optie.
    # De standaardwaarde is '$confdir/classes.txt'.
    classfile = $vardir/classes.txt

    # Waar Puppetd de lokale configuratie cachet.  Een
    # extensie die aangeeft dat het cacheformaat automatisch wordt toegevoegd.
    # De standaardwaarde is '$confdir/localconfig'.
    localconfig = $vardir/localconfig
    server = puppetmaster.leju.com
    Rapport = waar
    luisteren = waar

[meester]
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
    Autosign = waar
    Rapporten = Winkel
   
[root@puppetmaster pop]# vi fileserver.conf
     [bestanden]
    pad /etc/puppet/files
    Sta toe *

[modules]
    Sta toe *

[plugins]
    Sta toe *

[root@puppetmaster pop]# mkdir /etc/puppet/files
   
[root@puppetmaster pop]# cd-manifesten/
Create site.pp, dat is het configuratiebestand voor de poppeninvoer:
[root@puppetmaster manifesteert]# vi site.pp
Importeren "modules.pp"
Import "roles.pp"
import "nodes.pp"

# Algemene instellingen voor standaardtypes
Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }

filebucket { main: server => "puppetmaster.leju.com" }
Bestand { backup => main }

Maak modules.pp aan om modules te importeren:
[root@puppetmaster manifesteert]# vi modules.pp
import "test"

Maak roles.pp aan om serverrollen te definiëren:
[root@puppetmaster manifesteert]# vi rollen.pp
Klasse basisklasse {
        Inclusief test
}

Maak nodes.pp aan om de serverknooppunten te configureren:
[root@puppetmaster manifesteert]# vi nodes.pp
knoop 'basenode' {
        Include-baseclass
}

knoop 'puppetclient.leju.com' erft baseknoop {
        tag("test")
}

Node 'puppetmaster.leju.com' erft basenode {
        tag("test")
}

[root@puppetmaster manifesteert]# cd ..
[root@puppetmaster pop]# mkdir-modules
Maak een testmodule aan:
[root@puppetmaster modules]# mkdir -p test/manifests/
[root@puppetmaster modules]# mkdir test/bestanden/
[root@puppetmaster modules]# cd test/bestanden/
[root@puppetmaster bestanden]# vi test.txt
Testlijn!
[root@puppetmaster bestanden]# cd .. /manifesten/
Maak een testklasse aan om een bestand aan de client te leveren:
[root@puppetmaster manifesteert]# vi init.pp
Klassetest {
        bestand { "/tmp/test.txt":
                ensure => aanwezig,
                groep => "wortel",
                eigenaar => "wortel",
                mode => "0644",
                bron => "puppet:///test/test.txt"
        }
}

Puppet Master lanceren:
[root@puppetmaster manifesteert]# /etc/init.d/puppetmaster start
Zorg dat poort 8140 online staat.

Installatie van de poppenclient:
[root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" installeer pop

Pas hosts aan en voeg de volgende twee records toe:
[root@puppetclient ~]# vi /etc/hosts
192.168.0.10 puppetmaster.leju.com pop
192.168.0.100 puppetclient.leju.com

De pop configureren:
[root@puppetclient ~]# cd /etc/puppet/
[root@puppetclient pop]# vi pop.conf
[hoofd]
    # De Puppet logboekendirectory.
    # De standaardwaarde is '$vardir/log'.
    logdir = /var/log/puppet

    # Waar Puppet PID-bestanden worden bewaard.
    # De standaardwaarde is '$vardir/run'.
    rundir = /var/run/puppet

    # Waar SSL-certificaten worden bewaard.
    # De standaardwaarde is '$confdir/ssl'.
    ssldir = $vardir/ssl

[agent]
    # Het bestand waarin Puppetd een lijst van de klassen opslaat
    # geassocieerd met de teruggevonden configuratie.  Kan worden geladen
    # het aparte ''puppet'' uitvoerbaar bestand met de ''--loadclasses''
    # optie.
    # De standaardwaarde is '$confdir/classes.txt'.
    classfile = $vardir/classes.txt

    # Waar Puppetd de lokale configuratie cachet.  Een
    # extensie die aangeeft dat het cacheformaat automatisch wordt toegevoegd.
    # De standaardwaarde is '$confdir/localconfig'.
    localconfig = $vardir/localconfig

    server = puppetmaster.leju.com
    Rapport = waar
    luisteren = waar
   
[root@puppetclient pop]# vi namespaceauth.conf
[poppenloper]
    Laat puppetmaster.leju.com
    sta toe *.leju.com
   
[root@puppetclient pop]# vi auth.conf
Voeg * toe aan de laatste regel
......
Pad /
authenticeer elke
Sta toe *

[root@puppetclient pop]# cd
Execut puppet:
[root@puppetclient ~]# pop --nee --test --trace --debug
Als Puppet Master niet zet: autosign=true, moet dit worden uitgevoerd in Puppet Master:
[root@puppetmaster ~]# poppencertificaat -l
puppetclient.leju.com
[root@puppetmaster ~]# poppencertificaat -s puppetclient.leju.com
Teken puppetclient.leju.com zo. Ga dan terug naar de client om hier uit te voeren:
[root@puppetclient ~]# pop --nee --test --trace --debug
Join --nee, de configuratie wordt niet echt toegepast op de client, vooral gebruikt voor testen, om te zien of er fouten in de printout zitten, en voer zonder fouten uit:
[root@puppetclient ~]# pop --test --trace --debug

Bekijk het document:
[root@puppetclient ~]# ll /tmp/
totaal 8
-rw-r--r-- 1 wortelwortel 11 feb 25 22:35 test.txt
Het document is uitgegeven.

Het is ook mogelijk om Puppet Master te pushen:
[root@puppetmaster ~]# poppenschop -d --gastheer puppetclient.leju.com
Triggeren puppetclient.leju.com
Status verkrijgen
Status is succes
puppetclient.leju.com eindigde met afhaalcode 0
Klaar
Terugkeren van 0 geeft aan dat de pop op de cliënt succesvol is geactiveerd.

Stel de pop in op opstart bij automatische start:
chkconfig --level 2345 pop on

Verander de poppenspeler om Passenger te gebruiken
Passenger is een uitbreiding van Apache 2.x voor het rijden met rails of tandradtoepassingen in Apache. puppetmaster gebruikt standaard WEBrick om bestandsdiensten te leveren; als je veel puppetclients hebt, zal de bestandsservice van puppetmaster slecht zijn om puppetmaster robuuster te maken, dus gebruik Apache om bestandsdiensten te leveren.

Installatie:
[root@puppetmaster ~]# yum installeer httpd httpd-devel ruby-devel rubygems
Passenger 2.2.2 RHEL5 werkt prima.
Voeg foreman.repo repository toe:
[root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo
[voorman]
naam=Foreman stabiele repository
baseurl=http://yum.theforeman.org/stable
gpgcheck=0
enabled=1
[root@puppetmaster ~]# yum installeer rubygem-passenger-2.2.2-1
[root@puppetmaster ~]# rubygem-rack-1.0.1-1
[root@puppetmaster ~]# passenger-install-apache2-module

Installeren van de Apache SSL-module:
[root@puppetmaster ~]# Yum installeer mod_ssl

Om de Puppet rack-applicatie te configureren:
mkdir -p /etc/puppet/rack/puppetmasterd/
mkdir /etc/puppet/rack/puppetmasterd/public /etc/puppet/rack/puppetmasterd/tmp
cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/puppetmasterd.conf
cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/puppetmasterd/
chown pop /etc/puppet/rack/puppetmasterd/config.ru

[root@puppetmaster ~]# vi /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2
PassagierRuby /usr/bin/ruby
PassagierMaxPoolGrootte 30
PassagiersPoolIdleTime 1500
PassagiersMaxVerzoeken 1000
PassagierStatThrottleRate 120
RackAutoDetect Uit
RailsAutoDetect Uit

[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf
# Je wilt deze instellingen waarschijnlijk afstemmen
PassagierHighPerformance op
PassagierMaxPoolGrootte 12
PassagiersPoolIdleTime 1500
# PassagierTMaxRequests 1000
PassagierStatThrottleRate 120
RackAutoDetect Uit
RailsAutoDetect Uit

Luister 8140

<VirtualHost *:8140>
        SSLEngine op
        SSLProtocol -ALL +SSLv3 +TLSv1
        SSLCipherSuite ALLE:! ADH:RC4+RSA:+HOOG:+MEDIUM:-LAAG:-SSLv2:-EXP

        SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.leju.com.pem
        SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppetmaster.leju.com.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
        SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem
        # Als Apache klaagt over ongeldige handtekeningen op de CRL, kun je proberen uit te schakelen
        # CRL controleert door de volgende regel te laten reageren, maar dit wordt niet aanbevolen.
        SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem
        SSLVerifyClient optioneel
        SSLVerifyDepth 1
        SSLOptions +StdEnvVars

        # De volgende clientheaders maken het mogelijk dat dezelfde configuratie met Pound werkt.
        RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

        DocumentRoot /etc/puppet/rack/puppetmasterd/public/
        RackBaseURI /
        <Directory /etc/puppet/rack/puppetmasterd/>
                Opties Geen
                ToestaanOverride Geen
                Bevel toestaan, weigeren
                Sta toe van allen
        </Directory>
</VirtualHost>

Pas het puppetmaster-configuratiebestand aan om de volgende twee regels toe te voegen:
[root@puppetmaster ~]# vi /etc/puppet/puppet.conf
[meester]
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
   
Wijzig /etc/sysconfig/puppetmaster:
[root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster
# Voeg de volgende regel aan het einde toe:
PUPPETMASTER_EXTRA_OPTS="--rapporteert winkel"
Als je zowel aan de voorman als aan het poppen-dashboard moet rapporteren, voeg dan de volgende regel toe:
PUPPETMASTER_EXTRA_OPTS="--rapporten winkel, voorman, puppet_dashboard"

Stop de Puppetmaster-dienst en start de Apache-dienst:
[root@puppetmaster ~]# /etc/init.d/puppetmaster stop
[root@puppetmaster ~]# /etc/init.d/httpd start

Opstarten start de Puppetmaster-service niet, de opstart start de httpd-service:
[root@puppetmaster ~]# chkconfig --level 2345 poppenmeester uit
[root@puppetmaster ~]# chkconfig --level 2345 httpd on

Zorg ervoor dat poort 8140 is ingeschakeld:
[root@puppetmaster ~]# netstat -tunlp |grep 8140
TCP 0 0 :::8140 :::* LUISTER 9834/httpd

Test aan de clientzijde of het foutenlogboek is afgeprint:
[root@puppetclient ~]# pop --test --trace --debug




Vorig:php-fpm.conf Belangrijke parameters worden in detail uitgelegd
Volgend:Op 25 oktober 2014 (zaterdag), om 16.00 uur, werd het luchtverdedigings- en rampenpreventiealarm getest
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com