Automatisieren der Anwendungsbereitstellung mit F5 BIG-IP und Puppet

Einführung

Wenn Unternehmen Strategien zur digitalen Transformation verfolgen, um neue Einnahmequellen zu erschließen oder einfach nur wettbewerbsfähig zu bleiben, ist das Bedürfnis nach Geschwindigkeit – oder die Fähigkeit, schnell wirklich großartige Kundenerlebnisse zu bieten – ein wichtiger Treiber. Unternehmen, die DevOps-Methoden einführen, stellen fest, dass die aktuellen Netzwerkarchitekturen einen begrenzenden Faktor darstellen. Die herkömmliche Netzwerkarchitektur ist statisch, anfällig für menschliches Versagen und erfordert für ihre Verwaltung erhebliche Betriebsinvestitionen. Es ist zwingend erforderlich, nicht nur die Netzwerkinfrastruktur zu automatisieren, die die Anwendungsbereitstellung unterstützt, sondern auch die Netzwerkdienste wie DNS und Lastausgleich als Teil einer erweiterten Continuous Integration/Development (CI/CD)-Pipeline.

Durch Netzwerkautomatisierung können Unternehmen eine höhere Agilität erreichen, die ein dynamischeres und zuverlässigeres Netzwerk, eine höhere Betriebseffizienz, kürzere Bereitstellungszeiten und eine konsistentere Anwendungsbereitstellung ermöglicht.

F5-Programmierbarkeit ermöglicht IT- und DevOps-Produktivität

Programmierbarkeit ist ein wesentlicher Faktor für die Betriebsautomatisierung. F5 hat dieses Konzept im Laufe der Jahre übernommen und unterstützt die Programmierbarkeit über alle F5® BIG-IP® Application Delivery Controller (ADCs) hinweg, wodurch Agilität und Erweiterbarkeit im Service Fabric des Anwendungsnetzwerks ermöglicht werden. Sowohl die physische als auch die virtuelle Edition der BIG-IP ADCs verfügen über flexible und programmierbare Verwaltungs-, Steuerungs- und Datenebenen:

Verwaltungsebene
  • F5 iControl®: Verwendet SOAP/XML/REST, um eine offene Kommunikation zwischen unterschiedlichen Systemen sicherzustellen und die BIG-IP-Funktionalität zu automatisieren. Das F5-iControl-Gem wird ebenfalls unterstützt, damit Sie über seine Webdienste eine Verbindung zu einem F5-Gerät herstellen können.
  • F5 iApps®: Auf Vorlagen basierende Funktionssätze helfen bei der Automatisierung der Konfiguration und Anwendungsbereitstellung auf F5-Geräten.
Steuerebene
  • F5 iCall™: Dieses Tcl-basierte Skript-Framework ermöglicht Ihnen, TMSH-Befehle (TMOS Shell-Befehlszeilenschnittstelle) zusammen mit den erwarteten Tcl-Befehlen auszuführen, um die Konfiguration eines laufenden F5-Geräts zu steuern.
Datenebene
  • F5 iRules®: iRules ist eine äußerst anpassbare und programmierbare Skriptsprache auf Tcl-Basis, mit der Sie Datenverkehr in Echtzeit prüfen, analysieren, ändern, weiterleiten, umleiten oder manipulieren können. Die nächste Weiterentwicklung, iRules Language eXtensions (LX), ermöglicht node.js-Funktionen auf der BIG-IP-Plattform (v12.1).

Ein umfassender Ansatz zur Netzwerkprogrammierbarkeit hilft dem Betrieb, bei Bedarf auf betriebliche und geschäftliche Ereignisse oder Chancen zu reagieren. Das F5-Produktportfolio mit Netzwerkprogrammierbarkeit ermöglicht Unternehmen die effiziente Automatisierung und Orchestrierung.

Die gemeinsame Lösung von F5 und Puppet

F5 und Puppet haben sich zusammengeschlossen, um dem Bedarf moderner Unternehmen an Agilität zur Unterstützung der kontinuierlichen Integration und kontinuierlichen Bereitstellung (CI/CD) durch eine umfassende Lösung gerecht zu werden. Puppet bietet mit Puppet Enterprise ein kommerziell unterstütztes Konfigurationsverwaltungstool an, das einen einheitlichen, softwaredefinierten Ansatz für die Automatisierung der Verwaltung von Rechen-, Netzwerk- und Speicherressourcen bietet und Unternehmen dabei hilft, Anwendungen nahtloser bereitzustellen.

Mit seinem deklarativen, modellbasierten Ansatz zur IT-Automatisierung ermöglicht Ihnen Puppet Enterprise die Ausführung von Funktionen von der Automatisierung einfacher, sich wiederholender Aufgaben bis hin zur Bereitstellung groß angelegter öffentlicher, privater und hybrider Clouds. Die Möglichkeit, Konfigurationsänderungen in diesen Cloud-Umgebungen zu modellieren, zu testen und dann bereitzustellen, gewährleistet eine effiziente Nutzung Ihrer Infrastrukturressourcen. Dank der Erweiterbarkeit von Puppet über Module können Unternehmen auf dem vorhandenen Framework aufbauen, um ihre BIG-IP-Geräte zu unterstützen.

In einer typischen Puppet-Infrastruktur sind auf jedem verwalteten System Software-Agenten installiert. Diese Agenten senden regelmäßig verschiedene Informationen – sogenannte „Fakten“ – über das System an einen Puppet-Masterserver. Der Puppet-Master verwendet wiederum die empfangenen Fakten zusammen mit einem Manifest – einem aus Puppet-Code bestehenden Puppet-Programm, um einen Katalog zu erstellen, der die endgültige Konfiguration definiert –, bevor er den Katalog an den Agenten zurücksendet. Der Agent kann dann den Systemzustand erzwingen, wie er im Katalog definiert ist. 

Anders als im Serverfall, wo der Software-Agent direkt im Knoten ausgeführt wird, können Sie mit der Puppet-Infrastruktur einen Proxy einrichten, der den Agenten für ein BIG-IP-Gerät ausführt. Jetzt können Sie das BIG-IP-Gerät unter Puppet-Verwaltung stellen und die Vorteile nutzen, die die Lösung bietet. Der Puppet-Agent kann auf einem anderen Server als der Puppet-Master liegen, oder beide können auf demselben Server ausgeführt werden.

Puppet-Sprachdateien werden Manifeste genannt und haben die Dateierweiterung .pp . Der Kern der Puppet-Sprache ist das Deklarieren von Ressourcen. Jeder andere Teil der Sprache dient dazu, die Deklaration von Ressourcen flexibler und komfortabler zu gestalten. Der Puppet-Master verwendet immer das von der Umgebung des aktuellen Knotens festgelegte Hauptmanifest, in dem Sie Ressourcen deklarativ beschreiben können. 

Der Datenfluss für die gemeinsame Lösung von F5 und Puppet ist in Abbildung 1 dargestellt.

  1. Der Proxy, auf dem der Puppet-Agent ausgeführt wird, ruft regelmäßig über Remote-Shell-Zugriff, APIs oder auf andere Weise Informationen über das BIG-IP-Gerät ab und gibt diese dann als Fakten an den Puppet-Master weiter.
  2. Der Puppet-Master stellt einen Katalog zusammen und gibt ihn an den Agenten oder Proxy zurück.
  3. Der Puppet-Proxy konvertiert den vom Puppet-Master empfangenen Katalog in einen iControl-Gem-Codeausschnitt, um die endgültige Konfiguration auf dem BIG-IP-Gerät zu erstellen.
  4. iControl-Gem-Dateien werden verwendet, um Knotenkonfigurationsparameter in iControl-Nachrichten zu übersetzen, um den beschriebenen Status über APIs zu erzwingen.
Die gemeinsame Lösung von F5 und Puppet.
Abbildung 1: Die gemeinsame Lösung von F5 und Puppet.

Zwei Schlüsselfunktionen dieser gemeinsamen Implementierung sind die iControl API und das Puppet Network Device Management. Die F5 iControl-APIs ermöglichen die Kommunikation zwischen dem Puppet-Proxy und F5 BIG-IP-Geräten, während Puppet Network Device Management Unternehmen bei der Konfiguration von Netzwerkgeräten unterstützt. Mithilfe des Puppet Network Device und der F5 iControl API können Sie das Puppet F5-Modul bereitstellen und die Puppet-Verwaltung auf BIG-IP-Geräte bringen. Die Puppet F5-Module bieten Ressourcen für die Verwaltung von BIG-IP-Objekten, einschließlich der Bereitstellung und Verwaltung virtueller Server sowie der Konfiguration und Verwaltung von Pools und Poolmitgliedern. Puppet verwendet F5-Module, um die für BIG-IP-Geräte definierten Ressourcen zu finden, und lädt automatisch alle benutzerdefinierten Klassen oder definierten Typen, die in F5-Modulen gespeichert sind.

Hauptvorteile

Diese gemeinsame Lösung von F5 und Puppet hilft Ihnen:

  • Verwalten Sie die Computer- und Netzwerkinfrastruktur mit demselben Tool für mehr Effizienz.
  • Eliminieren Sie zeitaufwändige Übergaben zwischen System- und Netzwerkteams.
  • Erzwingen Sie die Konfigurationskonsistenz Ihrer BIG-IP-Geräte (wenn die Konfiguration vom gewünschten Zustand abweicht, setzt Puppet sie automatisch auf den konfigurierten Zustand zurück).
  • Erreichen Sie Skalierbarkeit und Dienstelastizität mit der Möglichkeit, die Konfiguration einmal zu schreiben und sie dann in großem Maßstab auf viele Systeme anzuwenden.
  • Ermöglicht eine schnelle Wiedergabe. Wenn es an der Zeit ist, eine Anwendung von der Vorproduktion in die Produktion weiterzuentwickeln, führen Sie einfach den Puppet-Lauf aus und Puppet konfiguriert alles auf dieselbe Weise wie in Ihren Testumgebungen.
  • Erhöhen Sie die Geschwindigkeit der Anwendungsbereitstellung.

Puppet F5-Module können BIG-IP-Objekte (einschließlich Serverknoten, Pools und virtueller Server) erstellen und konfigurieren, die für die typische Anwendungsbereitstellung erforderlich sind. Wenn es um die Bereitstellung mehrerer BIG-IP-Geräte geht, können Unternehmen Puppet-Module verwenden, um alle anfänglichen BIG-IP-Onboarding-Aufgaben wie Gerätelizenzierung, DNS- und NTP-Einstellungen, interne und externe VLANs, Self-IPs und Routendomänen zu automatisieren.

Anwendungsfall: HTTP-Anwendungsbereitstellung auf der BIG-IP-Plattform

Um eine typische HTTP-Anwendung auf einem BIG-IP-Gerät zu konfigurieren, müssen Sie Knoten, Monitore und Profile einrichten, virtuelle IP-Adressen bereitstellen und mehr. Dies scheint auf einem einzelnen BIG-IP-Gerät ohne Automatisierung machbar zu sein, aber die Konfiguration mehrerer F5-Geräte, möglicherweise über mehrere Rechenzentren verteilt, zur Bereitstellung großer Unternehmensanwendungen ist komplex, zeitintensiv und fehleranfällig. Mit dem deklarativen, modellbasierten Puppet-Manifest können Unternehmen die Anwendungsbereitstellung auf mehreren BIG-IP-Geräten in allen Rechenzentren verwalten und automatisieren.

Um mit der Bereitstellung zu beginnen, installieren Sie den Puppet-Master und erstellen Sie ein Proxy-System, das den Puppet-Agent ausführen kann. Darüber hinaus müssen Sie alle Abhängigkeiten, einschließlich iControl-Gem und Faraday-Gem, in der Puppet Ruby-Umgebung auf dem Proxy-Host (Puppet-Agent) installieren. Die Bereitstellung ist in Abbildung 2 dargestellt.

Die gemeinsame Lösungsbereitstellung von F5 und Puppet.
Abbildung 2: Die gemeinsame Lösungsbereitstellung von F5 und Puppet.
Erstellen Sie eine device.conf-Datei

Bevor Sie das F5-Modul verwenden können, müssen Sie im Puppet-Konfigurationsverzeichnis (entweder /etc/puppet oder /etc/puppetlabs/puppet ) auf dem Puppet-Proxy eine Datei device.conf erstellen:

[bigip1]
Typ f5
URL https://admin:admin@10.192.74.111

Im obigen Beispiel Administrator:admin@10.192.74.111 bezieht sich auf Puppets Anmeldung für das F5-Gerät: <BENUTZERNAME>:<PASSWORT>@<IP-ADRESSE VON BIGIP>.

Klassifizieren Sie Ihre Knoten auf dem Puppet Master

Als Nächstes geben Sie die Konfiguration in der entsprechenden Klassenanweisung oder Knotendeklaration in Ihrem Knotenmanifest site.pp, <devicecertname>.pp oder einer Manifestdatei profiles::<profile_name> ein. Nachfolgend finden Sie ein Beispiel für eine Puppet-Manifestdatei (site.pp) zum Konfigurieren einer HTTP-Anwendung auf der BIG-IP-Plattform:

node bigip1 {
f5_node { '/Common/web_server_1':
sicherstellen => 'vorhanden',
Adresse => '10.1.20.11',
Beschreibung => 'Webserverknoten 1',
Verfügbarkeitsanforderung => 'alle',
Gesundheitsmonitore => ['/Common/icmp'],
}->

f5_node { '/Common/web_server_2':
sicherstellen => 'vorhanden',
Adresse => '10.1.20.12',
Beschreibung => 'Webserverknoten 2',
Verfügbarkeitsanforderung => 'alle',
Gesundheitsmonitore => ['/Common/icmp'],
}->

f5_node { '/Common/web_server_3':
sicherstellen => 'vorhanden',
Adresse => '10.1.20.13',
Beschreibung => 'Webserverknoten 3',
Verfügbarkeitsanforderung => 'alle',
health_monitors => ['/Common/icmp'],
}->

f5_pool { '/Common/web_pool':
sicherstellen => 'vorhanden',
Mitglieder => [
{ Name => '/Common/web_server_1', Port => '80', },
{ Name => '/Common/web_server_2', Port => '80', },
{ Name => '/Common/web_server_3', Port => '80', },
],
Verfügbarkeitsanforderung => 'alle',
health_monitors => ['/Common/http_head_f5'],
}->

f5_virtualserver { '/Common/http_vs':
sicherstellen => 'vorhanden',
Anbieter => 'Standard',
default_pool => '/Common/web_pool',
Zieladresse => '10.1.10.240',
Zielmaske => '255.255.255.255',
http_profile => '/Common/http',
service_port => '80',
protocol => 'tcp',
source => '0.0.0.0/0',
source_address_translation => 'automap'
}

}

Dieses Beispiel umfasst drei Aufgaben:

  1. Sie müssen zuerst Ihre Webserver einrichten. Das F5-Modul namens „f5_node“ fügt drei Webserver hinzu: web_server_1 , web_server_2 und web_server_3 , jeweils mit der geringstmöglichen Anzahl an Parametern und einem Integritätsmonitor, der jeden Server direkt anpingt, um sicherzustellen, dass er noch reagiert.
  2. Als nächstes richten Sie den Serverpool ein. Das Modul „f5_pool“ erstellt einen Pool mit dem Namen „web_pool“ und fügt auch die oben erstellten Knotenmitglieder als Poolmitglieder hinzu.
  3. Das Modul „f5_virtualserver“ erstellt einen virtuellen http-vs- Server mit http- Profil und dem oben erstellten Webpool .
Puppet-Gerät ausführen

Vor dem Ausführen des Puppet-Geräts (Befehl für Puppet-Netzwerkgerät) sind auf dem BIG-IP-Gerät keine virtuellen Server, Pools oder Knoten konfiguriert. Wenn Sie den Befehl „Puppet Device -v --user=root“ ausführen, generiert der Proxyknoten des Geräts ein Zertifikat und wendet Ihre Klassifizierungen auf das F5-Gerät an.

Wie unten gezeigt, wurden alle Aufgaben erfolgreich und ohne Fehler abgeschlossen.

$ sudo puppet device -v --user=root –trace
Info: Beginne mit der Anwendung der Konfiguration auf bigip1 unter https://10.192.74.111:443
Info: Pluginfacts abrufen
Info: Plugin wird abgerufen
Info: Caching-Katalog für bigip1
Info: Konfigurationsversion „1498175426“ wird angewendet
Hinweis: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_1]/ensure: erstellt
Hinweis: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_2]/ensure: erstellt
Hinweis: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_3]/ensure: erstellt
Hinweis: /Stage[main]/Main/Node[bigip1]/F5_pool[/Common/web_pool]/ensure: erstellt
Hinweis: /Stage[main]/Main/Node[bigip1]/F5_virtualserver[/Common/http_vs]/ensure: erstellt
Info: Knoten[bigip1]: Aufheben der Planung aller Ereignisse auf Node[bigip1]
Hinweis: Katalog in 0,50 Sekunden angewendet

Puppet hat nun einen neuen, vollständig konfigurierten virtuellen Server erstellt (Abbildung 3). Dieser Server führt einen Lastenausgleich für HTTP-Anwendungen über einen neu erstellten Pool durch (Abbildung 4). Der Pool umfasst drei neu erstellte Webserver (Abbildung 5).

Virtueller Server („http_vs“), erstellt von Puppet.
Abbildung 3: Virtueller Server („http_vs“), erstellt von Puppet.
Der von Puppet erstellte BIG-IP-Pool.
Abbildung 4: Der von Puppet erstellte BIG-IP-Pool.
Von Puppet erstellte Webserver.
Abbildung 5: Der von Puppet erstellte BIG-IP-Pool.

Alle Puppet F5-Module sind idempotent, was bedeutet, dass Aufgaben nur ausgeführt werden, wenn der Knotenstatus nicht mit dem konfigurierten oder gewünschten Status übereinstimmt. Mit anderen Worten: Wenn dasselbe Manifest erneut ausgeführt wird, konfiguriert Puppet diese Objekte nicht neu.

Info: Beginne mit der Anwendung der Konfiguration auf bigip1 unter https://10.192.74.111:443
Info: Pluginfacts abrufen
Info: Plugin wird abgerufen
Info: Caching-Katalog für bigip1
Info: Konfigurationsversion „1498522983“ wird angewendet
Hinweis: Angewandter Katalog in 1,51 Sekunden

Abschluss

Automatisierung ist eine Schlüsselkomponente von DevOps und CI/CD und beginnt häufig mit dem Konfigurationsmanagement. Die gemeinsame Lösung von F5 und Puppet ermöglicht Betriebsteams, die Konfiguration eines gesamten Anwendungsinfrastruktur-Stacks bereitzustellen, zu automatisieren und zu verwalten. Dadurch erhalten Anwendungsentwickler die Möglichkeit, Infrastrukturressourcen elastisch nach oben und unten zu skalieren, Anwendungstests zu automatisieren und den Zeitrahmen für die Anwendungsentwicklung zu verkürzen. Dadurch können Unternehmen ein beispielloses Maß an Agilität und Erweiterbarkeit erreichen.

Um mehr darüber zu erfahren, wie die gemeinsame Lösung von F5 und Puppet Ihrem Unternehmen helfen kann, besuchen Sie bitte forge.puppet.com/f5/f5

Veröffentlicht am 05. Oktober 2017
  • Auf Facebook teilen
  • Teilen mit X
  • Auf Linkedin teilen
  • Teilen per E-Mail
  • Teilen über AddThis

Verbinden mit F5

F5 Labs

Die neuesten Erkenntnisse im Bereich Anwendungsbedrohungsinformationen.

DevCentral

Die F5-Community für Diskussionsforen und Expertenartikel.

F5-Newsroom

Neuigkeiten, F5-Blogs und mehr.