Looking for puppet Keywords? Try Ask4Keywords

puppetErste Schritte mit der Marionette


Bemerkungen

In diesem Abschnitt erhalten Sie einen Überblick darüber, was Marionette ist und warum ein Entwickler sie verwenden möchte.

Es sollte auch alle großen Themen in der Marionette erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für die Marionette neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Versionen

Marionette Open Source

Ausführung Veröffentlichungsdatum
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

Vor dem Start

Bevor Sie sich für eine Marionette entscheiden, gibt es einige Dinge, die Sie wissen müssen.

  1. Marionettenarbeit sowohl in der Client-Server-Architektur (weit verbreitet) als auch als Einzelmaschine (speziell für Testzwecke)

  2. Marionettenmaster kann nur auf einer Linux-Maschine (Master-Maschine / Knoten) konfiguriert werden, Fenster können nur als Client (verwaltete Maschine / Knoten) verwendet werden

  3. Wenn Sie Master konfigurieren, müssen Sie sich der Verwendung von Linux-Maschinen und grundlegenden Befehlen bewusst sein

  4. Marionette bietet eine eigene Konfigurationssprache, die wie Json aussieht

Installation

System Anforderungen

Der Puppet Master-Dienst ist jedoch ziemlich ressourcenintensiv und sollte auf einem robusten dedizierten Server installiert werden.

  • Ihr Puppet Master-Server sollte mindestens zwei Prozessorkerne und mindestens 1 GB RAM haben.
  • Um mindestens 1.000 Knoten bequem bedienen zu können, sollte es über 2-4 Prozessorkerne und mindestens 4 GB RAM verfügen.

Überprüfen Sie Ihre Netzwerkkonfiguration:

In einer Agenten- / Master-Bereitstellung müssen Sie Ihr Netzwerk für den Datenverkehr von Puppet vorbereiten.

  • Firewalls: Der Puppet-Masterserver muss an Port 8140 eingehende Verbindungen zulassen, und Agentenknoten müssen an diesem Port eine Verbindung zum Master herstellen können.
  • Namensauflösung: Jeder Knoten muss einen eindeutigen Hostnamen haben. Forward und Reverse DNS müssen beide korrekt konfiguriert sein.

Hinweis: Der standardmäßige Puppet-Master-Hostname ist Marionette. Ihre Agentenknoten können früher bereit sein, wenn dieser Hostname in Ihren Puppet-Master umgewandelt wird.

Die Zeit muss auf dem Puppet-Master-Server, der als Zertifizierungsstelle fungiert, genau eingestellt werden. Sie sollten wahrscheinlich NTP verwenden.


Puppet Server installieren

Puppet stellt offizielle Pakete bereit, die Puppet Server 2.4 und alle seine Voraussetzungen auf den folgenden Plattformen installieren.

Red Hat Enterprise Linux

  • Enterprise Linux 6
  • Enterprise Linux 7

Debian

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

Ubuntu

  • Ubuntu 12.04 (genau)
  • Ubuntu 14.04 (vertrauenswürdig)
  • Ubuntu 15.10 (Wily)
  • Ubuntu 16.04 (Xenial)

Aktivieren Sie die Repositorys für das Marionettenpaket

Enterprise Linux 7

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

Für andere Versionen schauen Sie hier

Marionettenmeister installieren

yum install puppetserver
 

oder

apt-get install puppetserver
 

Puppet Server ist standardmäßig für die Verwendung von 2 GB RAM konfiguriert. Um es zu ändern, schau hier

Starten Sie den Puppet Server-Dienst:

systemctl start puppetserver
 

oder

service puppetserver start
 

Ist es für dich?

Wenn Sie Bereitstellungen vornehmen, Ihre Anwendungen auf mehreren Servern konfigurieren und sich bei Ihren Servern anmelden und einige Änderungen an Infrastruktur, Anwendungen, Voraussetzungen usw. vornehmen müssen, kann puppet Ihnen definitiv helfen.

Abgesehen von all dem, wenn Sie mit einer großen Infrastruktur umgehen und eine zentrale Verwaltung wünschen, können Sie auch einen Blick darauf werfen.

Offizielle Dokumentation

Puppet bietet offizielle Dokumentationen für Open Source- und Enterprise-Versionen. Sie können es hier finden

Was ist Marionette und warum sollte ich mich interessieren?

Puppet ist eine Konfigurationsverwaltungslösung. Benutzer beschreiben den gewünschten Status eines Servers oder einer Software und das Konfigurationsmanagement erreicht diesen Status. Dies bringt folgende Vorteile:

  • Konfigurationen können jedes Mal exakt gleich reproduziert werden, so oft wie nötig
  • Konfigurationen für alle Software und Server werden an einem zentralen Ort gespeichert. Dadurch können Backups und Versionskontrollen von Konfigurationen leicht erreicht werden
  • Änderungen an allen Servern verbreiten sich innerhalb weniger Minuten in der gesamten Infrastruktur, ohne sich direkt bei einem Computer anmelden zu müssen
  • Alles wird in derselben Sprache beschrieben, sodass die Konfiguration neuer Software vereinfacht wird
  • Module ähneln Bibliotheken und ermöglichen die Konsolidierung von Konfigurationen. Es sind bereits Module für alle gängigen Softwarepakete vorhanden, was die Installation extrem einfach macht
  • Server können Informationen untereinander austauschen, was die Konfiguration anderer Server beeinflusst. Ein neuer Server kann sich beispielsweise automatisch bei der Lastverteiler- und Überwachungslösung registrieren

Puppet verwendet Ruby, um den gewünschten Status eines Servers zu beschreiben, der als Knoten bezeichnet wird . Dies geschieht mit der Verwendung von Grundelementen, die als Ressourcentypen bezeichnet werden . Standardmäßig authentifiziert alle 30 Minuten, das Puppenmittel selbst gegen die Puppe Server. Es sendet dann eine Liste der Eigenschaften von sich selbst genannten Fakten . Der Server betrachtet die Fakten und die als Manifests bezeichneten Konfigurationsdateien und kompiliert den gewünschten Status für den Knoten. Anschließend sendet er diese Konfiguration zurück an den Knoten, wo der Agent sie anwendet.

Um eine Vorstellung davon zu vermitteln, wie mächtig dies sein kann, stellen wir Ihnen einige Beispiele für zunehmende Komplexität vor, die zeigen, was Puppet für Sie tun kann.

Beispiel: Benutzer

In diesem Beispiel erstellt der Benutzer Benutzernamen auf dem Knoten Myserver und fügt es der Gruppe Rades.

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

Diese Datei , die auf dem Puppe Server gespeichert würde , ist das Manifest. Der Ressourcentyp in diesem Beispiel ist Benutzer . Jeder Ressourcentyp verfügt über optionale und erforderliche Eigenschaften. Stellen Sie in diesem Beispiel sicher , dass erforderlich und Gruppen optional sind. Diese spezifische Konfiguration würde nur auf meinen Server angewendet. Sie können Konfigurationen auf alle Knoten anwenden, indem Sie sie außerhalb einer Knotendefinition platzieren.

Es ist möglich, einige Ressourcendefinitionen als Module zu speichern. Ein Modul ähnelt einer Bibliothek. Diese Module können online gemeinsam genutzt werden. In der Regel finden Sie für jedes größere Softwarepaket eines. Die offizielle Möglichkeit, Module gemeinsam zu nutzen, ist die Marionettenschmiede: https://forge.puppet.com/

Beispiel: Postgres

Dieses Beispiel installiert einen Postgres - Server auf Knoten myserver, und erstellt eine Datenbank db, im Besitz von Benutzername, mit einem Passwort identifiziert. Es verwendet dazu das postgresql-Modul.

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

In diesem Fall ist postgresql ein Modul. Das Modul selbst sorgt für die Identifizierung des Betriebssystems, das Herunterladen und Installieren des Programms sowie die Konfiguration entsprechend dem Manifest. Dies ist ein einfaches Beispiel, aber das Modul ermöglicht eine große Anpassung.

Beachten Sie, dass es nicht erforderlich ist, SQL zu kennen oder zu wissen, wie ein Postgres-Server tatsächlich installiert wird. Offizielle Module sind gut gepflegt und bieten eine vernünftige und sichere Basiskonfiguration.

Es ist auch möglich, Fakten in Manifesten zu verwenden. Fakten wirken wie Variablen.

Beispiel: Bedingungen mit Fakten

In diesem Beispiel wird das rsyslog-Modul zum Konfigurieren von rsyslog auf allen Nicht-Windows-Computern verwendet.

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

$ osfamily ist eine Tatsache. Diese Fakten werden jedes Mal gesammelt, wenn der Marionettenagent läuft. Beachten Sie, dass diese Definition auf alle Knoten angewendet wird, da diese Definition außerhalb einer Knotendefinition liegt. Rsyslog :: client wird jedoch nur auf Knoten ausgeführt, auf denen keine Fenster ausgeführt werden.

Da Marionette Rubin verwendet, können programmatische Elemente wie Steuerflüsse und Variablen in Manifesten verwendet werden.

Mit dem Hinzufügen von PuppetDB können Sie Informationen zwischen mehreren Knoten teilen. Dadurch kann ein Knoten die Konfiguration auf einem anderen Knoten beeinflussen. Klassische Beispiele sind Lastverteiler oder Überwachungslösungen.

Beispiel: Registrieren eines Hosts mit Überwachung mithilfe exportierter Ressourcen

In diesem Beispiel wird eine exportierte Ressource auf einem Knoten erstellt. Anschließend wird diese Ressource auf dem Überwachungsserver importiert, wobei der Host der Überwachung hinzugefügt wird. Es verwendet das Icinga2-Marionettenmodul.

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

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

@@ icinga2 :: object :: host erstellt ein Hostdefinitionsobjekt . Dies wird von jedem Knoten erstellt, der diesen Code ausführt. Das @@ kennzeichnet es als exportierte Ressource . Normalerweise teilen Knoten keine Informationen in der Marionette. Exportierte Ressourcen erlauben dies.

Beachten Sie, dass alle Eigenschaftswerte in der Hostdefinition Fakten sind. Dies bedeutet, dass sie für jeden Knoten, der sie ausführt, unterschiedlich sind.

Schließlich wird die exportierte Ressource vom icinga2- Knoten importiert . Das Icinga2-Modul ist dafür verantwortlich, dass die korrekten Konfigurationsdateien erstellt und erneut geladen werden.