Puppet Forge und Bolt im Einsatz

Tutorial: TIG Stack schnell deployen mit Puppet Bolt
Keine Kommentare

Nick Lewis, Senior Software Engineer bei Puppet, zeigt, wie man einen TIG Stack deployt – das ist ein Stack mit Telegraf, InfluxDB und Grafana – indem man Bolt einsetzt. Bolt ist ein Automatisierungstool, das, dank der Plug-ins der Puppet-Schmiede, Skripte in fast jeder Sprache ausführen kann. Dann schrauben wir mal los!

Ein zuverlässiges Überwachungs-Setup ist der Schlüssel zur Aufrechterhaltung zuverlässiger Systeme. Eine gängige Überwachungs-Software sind die TIG Stacks, bestehend aus Telegraf, InfluxDB und Grafana. Telegraf sammelt, verarbeitet und aggregiert Systemmetriken wie CPU-Auslastung, Festplatten-IO und Netzwerkdurchsatz. InfluxDB speichert diese Daten auf eine Weise, die schnelles Lesen/Schreiben mit integrierter Skalierung ermöglicht. Mit Grafana lassen sich die Daten in einfachen, flexiblen und granularen Dashboards visualisieren. Das Lernen, Installieren und Konfigurieren dieser Komponenten erfordert Zeit, die Koordination mehrerer Schritte und das Verständnis, wie sie alle zusammenpassen. Zum Glück gibt es Hilfe in Form von Puppet Bolt.

Bolt ist ein Open-Source-Projekt von Puppet. Das agentenlose Orchestrierungstool hilft, schnell neue Software-Stacks zu erstellen und Änderungen in der gesamten Infrastruktur zu automatisieren. Bolt eignet sich dabei hervorragend für die Orchestrierung von mehrstufigen Multi-Node-Prozessen, wie z.B. die Einrichtung eines Überwachungsdienstes und den entsprechenden Clients. Es gibt ein robustes Ökosystem rund um Bolt, das auf Puppets Forge gehostet wird und über Hunderte von vorgefertigten Modulen zur Automatisierung von Software wie Telegraf, InfluxDB und Grafana verfügt. Im folgenden Beispiel verwenden wir Bolt, um Telegraf-Agenten auf eine Reihe von Knoten zu verteilen, diese Agenten so zu konfigurieren, dass sie Daten an InfluxDB senden, und die Daten mit Grafana zu visualisieren. Und das alles mit bereits vorhandenen Inhalten aus der Forge.

Dies bietet eine gute Grundlage, um mit dem Sammeln weiterer Metriken für Überwachungszwecke zu beginnen und zeigt, wie man mit Bolt die Konfiguration modellieren und Deployments orchestrieren kann.

1. Schritt: Bolt installieren

Bolt ist für Windows, MacOS und die meisten gängigen Linux-Distributionen erhältlich. Lest die Installationsanweisungen für eure Plattform.

2. Schritt: Die Demo klonen

Die Inhalte für dieses Projekt sind auf GitHub verfügbar. Man kann dieses Repo klonen, um dem Rest des Tutorials zu folgen.

3. Schritt: Herunterladen der Abhängigkeiten aus der Forge

Unser Projekt enthält eine Puppet-Datei, die die vom Projekt verwendeten Module auflistet. Es enthält zudem Module aus der Puppet Forge zur Installation von Telegraf, InfluxDB und Grafana sowie als Dependency das stdlib-Modul. Zunächst sagen wir Bolt, dass es diese Abhängigkeiten installieren soll.

...
bolt puppetfile install
...

Eines der Module, die in dieser Übung verwendet werden, erfordert die Installation eines Ruby Gems neben Bolt.

...
/opt/puppetlabs/bolt/bin/gem install toml-rb
...

4. Schritt: Jedes Einzelteil konfigurieren – mit Puppet Code

Die von uns installierten Module aus der Forge sind generisch und können zur Verwaltung der Software in vielerlei Hinsicht verwendet werden. Unser Projekt definiert eine Reihe von Puppet-Klassen, die diese Module verwenden, um den Agent von Telegraf, InfluxDB und die Grafana-Dienste so einzurichten, wie wir sie haben wollen.

Die Klasse tig::telegraf in site/tig/manifests/telegraf installiert beispielsweise Telegraf und konfiguriert es so, dass es seine Daten an unseren InfluxDB-Server sendet. Sie richtet zudem einige spezifische Dateneingaben ein.

...
site/tig/manifests/telegraf.pp
...

5. Schritt: Orchestrieren der Bereitstellung mit Bolt

Jede dieser Klassen kann die Konfiguration eines einzelnen Servers verwalten. Aber um das gesamte Deployment zu organisieren, benötigen wir einen Bolt Plan.

Der Bolt Plan in site/tig/plans/init.pp akzeptiert einen Dashboard-Server sowie eine Liste von Agent-Knoten und installiert dann über unsere Puppet-Klassen InfluxDB und Grafana auf dem Dashboard-Server sowie den Telegraf-Agenten auf den Agent-Knoten. Er führt diese Schritte der Reihe nach aus: Zuerst werden der InfluxDB- und Grafana-Server eingerichtet, um einen Ort zu haben, an den wir Daten senden können. Dann werden die Telegraf-Agenten aufgesetzt.

...
plan tig(
  TargetSpec $dashboard,
  TargetSpec $agents
) {
...

Dieser Code definiert den Plan namens tig und gibt an, dass er zwei Argumente akzeptiert: Dashboard und Agenten, von denen jedes eine Liste von Zielen ist.

...
[$dashboard, $agents].apply_prep
...

Der Plan ruft zunächst die Funktion apply_prep auf den angegebenen Zielen auf. Dadurch werden die notwendigen Puppet-Pakete installiert, um den Puppet Code auf die Ziele anwenden zu können. Es verwendet zudem Facter, um einige Systeminformationen zu sammeln, die von den Puppet-Modulen benötigt werden.

...
  apply($dashboard) {
    include tig::dashboard
  }
 
  $dashboard_host = $dashboard.get_targets[0].name
 
  apply($agents) {
    class{ tig::telegraf:
      influx_host => $dashboard_host
    }
  }
...

Diese Zeilen erledigen den Großteil der Arbeit und wenden Ausschnitte des Puppet Codes zuerst auf dem Dashboard-Rechner und dann auf die Agenten an. Zwischen diesen Schritten erhalten wir den hostname des Dashboards, der an die Agenten übergeben wird.

...
  return('grafana_dashboard' => "http://${dashboard_host}:8080")
...

Schließlich gibt der Plan ein Ergebnis zurück, das den URL des Grafana Dashboards enthält.

6. Schritt: Den Bolt-Plan ausführen

Wir können diesen Plan mit Bolt gegen einige Ziel-Nodes ausführen, um ihn in Aktion zu sehen.

...
bolt plan run tig dashboard=dashboard.example.com agents=agent1.example.com,agent2.example.com
...

Bolt gibt einige Informationen über die Schritte aus, die es tätigt, und endet mit dem Ergebnis des Plans, der den URL des Grafana Dashboards hat.

7. Schritt: Erblicket Grafana

Man kann dem Link aus der Bolt-Ausgabe folgen, um zu sehen, wie das Grafana-Dashboard läuft.

Wir können sehen, dass Telegraf bereits damit begonnen hat, eine Fülle nützlicher Information über unsere Systeme zu sammeln, einschließlich des CPU- und Speicherverbrauchs, der Festplattennutzung sowie -leistung, laufende Prozesse und Netzwerkstatistiken.

Durch das Mischen und Abgleichen von vorgefertigten Inhalten aus der Puppet Forge konnten wir diesen funktionierenden TIG Stack mit ~100 Zeilen Code aufbauen und sofort Ergebnisse sehen. Die von uns geschriebenen Puppet-Klassen können mit dem Puppet-Agenten verwendet werden, um diese Systeme im Laufe der Zeit zu verwalten. Der Bolt Plan kann außerdem wiederverwendet werden, um den Stack neu zu erstellen, oder mit anderen Plänen integriert werden, um komplexere Implementierungen zu verwalten.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -