Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 8686|Antwort: 0

Konfigurationsmanagement: Puppeninstallation und -nutzung (1)

[Link kopieren]
Veröffentlicht am 20.10.2014 09:47:45 | | |
1. Einführung in Puppet

Systemadministratoren stecken oft in einer Reihe von sich wiederholenden Aufgaben fest: Pakete aktualisieren, Konfigurationsdateien verwalten, Systemdienste, cron-Aufgaben, neue Konfigurationen hinzufügen, Fehler beheben usw. Diese Aufgaben sind oft repetitiv und ineffizient, und die erste Reaktion auf deren Lösung ist die Automatisierung, sodass benutzerdefinierte Skripte erscheinen. Aufgrund der Komplexität der Umgebung werden immer wieder benutzerdefinierte Skripte und Anwendungen entwickelt und es ist schwierig, mehrere Plattformen unterzubringen, und Flexibilität und Funktionalität sind schwer zu garantieren, weshalb automatisierte Konfigurationsmanagement-Tools wie Puppet entstanden sind.

In der Open-Source-Welt gibt es viele Konfigurationswerkzeuge zur Auswahl, und einige der wichtigsten Produkte in diesem Bereich sind:

    Puppet (http://puppet.reductivelabs.com/): Ein in Ruby geschriebenes Konfigurationsmanagement-Tool, das die C/S-Architektur nutzt, um den Client in deklarativer Sprache zu konfigurieren.
    Cfengine (http://www.cfengine.org): Eines der ersten Open-Source-Konfigurationstools, das 1993 veröffentlicht wurde, ist ebenfalls eine C/S-Architektur, die üblicherweise in Bildungseinrichtungen verwendet wird.
    LCFG(http://www.lcfg.org/): Ein Konfigurationsmanagement-Tool für C/S-Architekturen, das XML zur Definition von Konfigurationen verwendet.
    Bcfg2: Ein Konfigurationsmanagement-Tool für die C/S-Architektur, geschrieben in Python, das Spezifikationen und Client-Antworten verwendet, um den Zielhost zu konfigurieren.

Dieses Dokument beschreibt, wie man Puppet nutzt, um den Host, Anwendungen, Hintergrundprogramme und verschiedene Dienste zu verwalten.

Über Puppet:

1. Wofür wird Puppet verwendet?

Puppet ist ein Open-Source-basiertes Ruby-basiertes Systemkonfigurationsmanagement-Tool, das auf der C/S-Deployment-Architektur basiert. Der Hauptentwickler ist Luke Kanies, der der GPLv2-Urheberrechtslizenz folgt. Seit 1997 ist Kanies in der UNIX-Systemadministration tätig, und die Entwicklung von Puppet entstand aus dieser Erfahrung. Unzufrieden mit den verfügbaren Konfigurationswerkzeugen begann Kanies zwischen 2001 und 2005 im Reduktivlabor mit der Entwicklung von Werkzeugen. Bald darauf brachte Reductive Labs ihr Flaggschiffprodukt Puppet heraus.

2. Merkmale von Pupput

Viele Systemkonfigurationsmanagement-Tools funktionieren sehr ähnlich, wie zum Beispiel cfengine. Was macht Puppet einzigartig?

Die Syntax von Puppet erlaubt es dir, ein separates Skript zu erstellen, um einen Benutzer auf allen deinen Zielhosts zu erstellen. Alle Ziel-Hosts interpretieren und führen das Modul nacheinander mit der für das lokalen System anwendbaren Syntax aus. Wenn diese Konfiguration beispielsweise auf einem Red Hat-Server ausgeführt wird, erstellen Sie einen Benutzer mit dem Befehl useradd; Wenn diese Konfiguration auf einem FreeBSD-Host ausgeführt wird, wird der Befehl adduser verwendet.

Ein weiterer bemerkenswerter Aspekt von Puppet ist seine Flexibilität. Aufgrund der Natur von Open-Source-Software können Sie den Quellcode von Puppet frei erhalten, und wenn Sie auf Probleme stoßen und die Möglichkeit haben, können Sie den Code von Puppet an Ihre Umgebung anpassen oder verbessern. Darüber hinaus verbessern Community-Entwickler und Spender weiterhin die Fähigkeiten von Puppet. Eine große Community von Entwicklern und Nutzern engagiert sich ebenfalls für die Bereitstellung von Dokumentation und technischem Support für Puppet.

Puppet ist auch leicht zu skalieren. Unterstützung für benutzerdefinierte Pakete und spezielle Systemumgebungskonfigurationen können schnell und einfach zum Puppet-Installer hinzugefügt werden.

3. Puppets Arbeitsmodus

Puppet ist ein C/S-Architektur-Konfigurationsmanagement-Tool, das das Puppet-Server-Paket (bekannt als Puppet Master) auf einem zentralen Server installiert. Installiere die Puppet-Client-Software (genannt Puppet Client) auf dem Zielhost, der verwaltet werden muss. Wenn der Client sich mit dem Puppet Master verbindet, wird die auf dem Puppet Master definierte Konfigurationsdatei kompiliert und anschließend auf dem Client ausgeführt. Standardmäßig kommuniziert jeder Client alle halbe Stunde mit dem Server, um die Aktualisierung der Konfigurationsinformationen zu bestätigen. Wenn neue Konfigurationsinformationen vorliegen oder sich die Konfigurationsinformationen geändert haben, wird die Konfiguration neu kompiliert und an jeden Client zur Ausführung veröffentlicht. Du kannst auch aktiv eine Aktualisierung der Konfigurationsinformationen auf dem Server auslösen, um jeden Client dazu zu zwingen, sie zu konfigurieren. Wenn die Konfigurationsinformationen des Clients geändert werden, kann er die ursprüngliche Konfiguration vom Server abrufen, um diese zu korrigieren.

Konfigurationsmanagement: Puppeninstallation und -nutzung (1)


4. Die Zukunft von Puppet

Schließlich ist Puppet ein junges Werkzeug, das sich noch in Entwicklung befindet. Die Puppet-Community wächst schnell, und viele neue Ideen werden ständig eingeführt, was Entwicklungen, Aktualisierungen und Module anregt, die täglich präsentiert werden.

2. Konfiguration und Installation (Puppet 2.6.4 CentOS 5.4 Installation):

Konfigurieren Sie das Repository auf dem Puppet-Server und Client:
U/min – 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
Hinzufügen zu:
[Epel-Puppe]
name=Epel Puppe
baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/
aktiviert=0
gpgcheck=0

Füge das Repository puppet.repo hinzu:
[root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo
[Puppetlabs]
name=Puppet Labs Pakete
baseurl=http://yum.puppetlabs.com/base/
aktiviert=0
gpgcheck=0

Puppet Master-Installation:
[root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server

Ändere Hosts und füge die folgenden zwei Datensätze hinzu:
[root@puppetmaster ~]# vi /etc/hosts
192.168.0.10 puppetmaster.leju.com Puppe
192.168.0.100 puppetclient.leju.com

Puppet konfigurieren:
[root@puppetmaster ~]# CD /etc/puppet/
[root@puppetmaster Puppe]# vi puppet.conf

[Haupt]
    # Das Puppet-Logverzeichnis.
    # Der Standardwert ist '$vardir/log'.
    logdir = /var/log/puppet

    # Wo Puppet-PID-Dateien aufbewahrt werden.
    # Der Standardwert ist '$vardir/run'.
    rundir = /var/run/puppet

    # Wo SSL-Zertifikate aufbewahrt werden.
    # Der Standardwert ist '$confdir/ssl'.
    ssldir = $vardir/ssl

[Agent]
    # Die Akte, in der Puppetd eine Liste der Klassen speichert
    # verbunden mit der wiedergefundenen Konfiguration.  Kann geladen werden
    # die separate ''puppet''-ausführbare Datei mit der ''--loadclasses''
    # Option.
    # Der Standardwert ist '$confdir/classes.txt'.
    classfile = $vardir/classes.txt

    # Wo Puppetd die lokale Konfiguration zwischengespeichert hat.  Ein
    #-Erweiterung, die das Cache-Format angibt, wird automatisch hinzugefügt.
    # Der Standardwert ist '$confdir/localconfig'.
    localconfig = $vardir/localconfig
    Server = puppetmaster.leju.com
    Bericht = wahr
    HÖREN = WAHR

[Meister]
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
    AutoSign = wahr
    Berichte = Laden
   
[root@puppetmaster Puppet]# vi fileserver.conf
     [Dateien]
    path /etc/puppet/files
    erlauben *

[Module]
    erlauben *

[Plugins]
    erlauben *

[root@puppetmaster Puppe]# mkdir /etc/puppet/files
   
[root@puppetmaster Puppe]# CD-Manifestationen/
Create site.pp, die die Puppet-Eintrags-Konfigurationsdatei ist:
[root@puppetmaster manifestiert]# vi site.pp
importieren Sie "modules.pp"
importiere "roles.pp"
importiere "nodes.pp"

# Allgemeine Einstellungen für Standardtypen
Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }

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

Erstellen Sie modules.pp, um Module zu importieren:
[root@puppetmaster manifestiert]# vi modules.pp
import "test"

Erstellen: roles.pp, um Server-Rollen zu definieren:
[root@puppetmaster manifestiert sich]# vi rollen.pp
Klassenbasisklasse {
        Test einbauen
}

Erstellen Sie nodes.pp, um die Serverknoten zu konfigurieren:
[root@puppetmaster manifestiert]# vi nodes.pp
Knoten 'basenode' {
        Include Baseclass
}

Knoten 'puppetclient.leju.com' erbt Basenode {
        tag("test")
}

Knoten 'puppetmaster.leju.com' erbt Basenode {
        tag("test")
}

[root@puppetmaster manifestiert sich]# CD ..
[root@puppetmaster Puppe]# mkdir-Module
Erstellen Sie ein Testmodul:
[root@puppetmaster Module]# mkdir -p Test/Manifests/
[root@puppetmaster Module]# mkdir Test/Dateien/
[root@puppetmaster Module]# CD-Test/Dateien/
[root@puppetmaster Dateien]# vi test.txt
Testlinie!
[root@puppetmaster Dateien]# CD .. /Manifeste/
Erstellen Sie eine Testklasse, um eine Datei an den Client zu liefern:
[root@puppetmaster manifestiert sich]# vi init.pp
Klassentest {
        file { "/tmp/test.txt":
                ensure => präsentieren,
                Gruppe => "Wurzel",
                Besitzer => "Wurzel",
                mode => "0644",
                Quelle => "puppet:///test/test.txt"
        }
}

Puppet Master starten:
[root@puppetmaster manifestiert]# /etc/init.d/puppetmaster start
Stelle sicher, dass Port 8140 aktiv ist.

Puppet-Client-Installation:
[root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" install puppet puppet

Ändere Hosts und füge die folgenden zwei Datensätze hinzu:
[root@puppetclient ~]# vi /etc/hosts
192.168.0.10 puppetmaster.leju.com Puppe
192.168.0.100 puppetclient.leju.com

Konfiguration der Puppe:
[root@puppetclient ~]# CD /etc/Puppe/
[root@puppetclient Puppe]# vi puppet.conf
[Haupt]
    # Das Puppet-Logverzeichnis.
    # Der Standardwert ist '$vardir/log'.
    logdir = /var/log/puppet

    # Wo Puppet-PID-Dateien aufbewahrt werden.
    # Der Standardwert ist '$vardir/run'.
    rundir = /var/run/puppet

    # Wo SSL-Zertifikate aufbewahrt werden.
    # Der Standardwert ist '$confdir/ssl'.
    ssldir = $vardir/ssl

[Agent]
    # Die Akte, in der Puppetd eine Liste der Klassen speichert
    # verbunden mit der wiedergefundenen Konfiguration.  Kann geladen werden
    # die separate ''puppet''-ausführbare Datei mit der ''--loadclasses''
    # Option.
    # Der Standardwert ist '$confdir/classes.txt'.
    classfile = $vardir/classes.txt

    # Wo Puppetd die lokale Konfiguration zwischengespeichert hat.  Ein
    #-Erweiterung, die das Cache-Format angibt, wird automatisch hinzugefügt.
    # Der Standardwert ist '$confdir/localconfig'.
    localconfig = $vardir/localconfig

    Server = puppetmaster.leju.com
    Bericht = wahr
    HÖREN = WAHR
   
[root@puppetclient Puppet]# vi namespaceauth.conf
[Puppenläufer]
    Erlaubt puppetmaster.leju.com
    erlauben *.leju.com
   
[root@puppetclient Puppe]# vi auth.conf
Fügen Sie erlaubt * in die letzte Zeile hinzu
......
Weg /
Autorisieren
erlauben *

[root@puppetclient Puppe]# CD
Puppe ausführen:
[root@puppetclient ~]# Puppet --nein --Test --Trace --Debug
Wenn Puppet Master nicht setzt: autosign=true, muss es in Puppet Master ausgeführt werden:
[root@puppetmaster ~]# Puppen-Zertifikat -l
puppetclient.leju.com
[root@puppetmaster ~]# Puppen-Zertifikat -s puppetclient.leju.com
Unterschreiben Sie puppetclient.leju.com so. Dann gehe zurück zum Client, um hier auszuführen:
[root@puppetclient ~]# Puppet --nein --Test --Trace --Debug
Join --noop, die Konfiguration wird nicht wirklich auf den Client angewendet, sondern hauptsächlich zum Testen verwendet, um zu sehen, ob Fehler im Ausdruck vorliegen, und ohne Fehler ausgeführt werden:
[root@puppetclient ~]# Puppet --Test --Trace --Debug

Sehen Sie sich das Dokument an:
[root@puppetclient ~]# ll /tmp/
Insgesamt 8
-rw-r--r-- 1 Wurzelwurzel 11 Feb 25 22:35 test.txt
Das Dokument wurde herausgegeben.

Es ist auch möglich, Puppet Master zu pushen:
[root@puppetmaster ~]# Puppet Kick -d --Moderator puppetclient.leju.com
Auslösende puppetclient.leju.com
Status erhalten
Status ist Erfolg
puppetclient.leju.com mit Ausfahrtscode 0 fertig
Fertig
Wenn 0 zurückgegeben wird, wird angezeigt, dass Puppet auf dem Client erfolgreich ausgelöst wurde.

Stell die Puppe auf Auto-Start-Start ein:
chkconfig --level 2345 puppet on

Puppetmaster modifizieren, um Passenger zu verwenden
Passenger ist eine Erweiterung von Apache 2.x für den Betrieb von Schienen- oder Zahnradanwendungen in Apache. puppetmaster verwendet standardmäßig WEBrick, um Dateidienste bereitzustellen; wenn du viele Puppet-Clients hast, wird die Dateileistung von Puppetmaster schlecht sein, um Puppetmaster robuster zu machen, also nutze Apache für Dateidienste.

Installation:
[root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems
Passenger 2.2.2 RHEL5 funktioniert einwandfrei.
Repository für foreman.repo hinzufügen:
[root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo
[Vorarbeiter]
name=Foreman Stable Repository
baseurl=http://yum.theforeman.org/stable
gpgcheck=0
enabled=1
[root@puppetmaster ~]# yum install rubygem-passenger-2.2.2-1
[root@puppetmaster ~]# rubygem-rack-1.0.1-1
[root@puppetmaster ~]# passenger-install-apache2-module

Installation des Apache SSL-Moduls:
[root@puppetmaster ~]# yum install mod_ssl

Um die Puppet-Rack-Anwendung zu konfigurieren:
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 puppet /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
PassengerRuby /usr/bin/ruby
PassagierMaxPoolGröße 30
PassagierpoolLeerlaufzeit 1500
PassagierMaxAnfragen 1000
PassagierStatThrottleRate 120
RackAutoDetect Off
RailsAutoDetect Off

[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf
# Du willst diese Einstellungen wahrscheinlich abstimmen
PassagierHighPerformance auf
PassagierMaxPoolGröße 12
PassagierpoolLeerlaufzeit 1500
# PassagierMaxAnfragen 1000
PassagierStatThrottleRate 120
RackAutoDetect Off
RailsAutoDetect Off

Hören Sie 8140

<VirtualHost *:8140>
        SSLEngine auf
        SSLProtocol -ALL +SSLv3 +TLSv1
        SSLCipherSuite ALLE:! ADH:RC4+RSA:+HOCH:+MITTEL:-NIEDRIG:-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
        # Wenn Apache sich über ungültige Signaturen auf der CRL beschwert, kannst du versuchen, sie zu deaktivieren
        # CRL überprüft, indem man die nächste Zeile kommentiert, aber das wird nicht empfohlen.
        SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem
        SSLVerifyClient optional
        SSLVerifyDepth 1
        SSLOptions +StdEnvVars

        # Die folgenden Client-Header ermöglichen die gleiche Konfiguration mit Pound.
        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 /
        <Verzeichnis /etc/puppet/rack/puppetmasterd/>
                Optionen Keine
                Erlauben Keine Übersteuerung
                Befehl erlauben, verweigern
                Erlauben von allen
        </Directory>
</VirtualHost>

Ändern Sie die Puppetmaster-Konfigurationsdatei, um die folgenden zwei Zeilen hinzuzufügen:
[root@puppetmaster ~]# vi /etc/puppet/puppet.conf
[Meister]
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
   
Modifiziere /etc/sysconfig/puppetmaster:
[root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster
# Füge am Ende folgende Zeile hinzu:
PUPPETMASTER_EXTRA_OPTS="--meldet Store"
Wenn Sie sowohl dem Vorarbeiter als auch dem Puppet-Dashboard Bericht erstatten müssen, fügen Sie folgende Zeile hinzu:
PUPPETMASTER_EXTRA_OPTS="--meldet Laden, Vorarbeiter, puppet_dashboard"

Beenden Sie den Puppetmaster-Service und starten Sie den Apache-Service:
[root@puppetmaster ~]# /etc/init.d/puppetmaster stopp
[root@puppetmaster ~]# /etc/init.d/httpd start

Boot startet den Puppetmaster-Dienst nicht, der Boot startet den httpd-Dienst:
[root@puppetmaster ~]# chkconfig --Level 2345 Puppetmaster aus
[root@puppetmaster ~]# chkconfig --level 2345 httpd on

Stelle sicher, dass Port 8140 aktiviert ist:
[root@puppetmaster ~]# netstat -tunlp |grep 8140
TCP 0 0 :::8140 :::* HÖREN 9834/httpd

Testen Sie auf der Client-Seite, ob das Fehlerprotokoll ausgedruckt wurde:
[root@puppetclient ~]# Puppet --Test --Trace --Debug




Vorhergehend:php-fpm.conf Wichtige Parameter werden ausführlich erklärt
Nächster:Am 25. Oktober 2014 (Samstag) um 16 Uhr wurde der Luftverteidigungs- und Katastrophenpräventionsalarm getestet
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com