Automatisierung von Anwendungsbereitstellungen mit F5 BIG-IP und Puppet
Einleitung
Wenn Unternehmen Strategien zur digitalen Transformation verfolgen, um neue Einnahmequellen zu erschließen oder schlicht wettbewerbsfähig zu bleiben, ist der Bedarf an Geschwindigkeit ein wesentlicher Treiber – also die Fähigkeit, schnell wirklich herausragende Kundenerlebnisse zu bieten. Bei der Einführung von DevOps-Methoden stellen Unternehmen fest, dass die derzeitigen Netzwerkarchitekturen einen begrenzenden Faktor darstellen. Herkömmliche Netzwerkarchitekturen sind statisch, anfällig für menschliche Fehler und erfordern einen erheblichen betrieblichen Verwaltungsaufwand. Daher müssen nicht nur die Netzwerkinfrastruktur zur Unterstützung von Anwendungsbereitstellungen, sondern auch Netzwerkdienste wie DNS und Lastverteilung als Teil einer erweiterten Continuous-Integration/Continuous-Development-Pipeline (CI/CD) automatisiert werden.
Durch die Netzwerkautomatisierung können Unternehmen agiler werden. Dies ermöglicht ein dynamischeres und zuverlässigeres Netzwerk, steigert die betriebliche Effizienz, verkürzt die Bereitstellungszeit und sorgt für konsistentere Anwendungsbereitstellungen.
F5-Programmierbarkeit steigert die Produktivität von IT und DevOps
Programmierbarkeit ist eine wesentliche Voraussetzung für die Automatisierung des Betriebs. F5 verfolgt dieses Konzept bereits seit Jahren und unterstützt die Programmierbarkeit bei allen F5® BIG-IP® Application Delivery Controllern (ADCs). Dies ermöglicht Agilität und Erweiterbarkeit innerhalb der Netzwerk-Service-Infrastruktur für Anwendungen. Sowohl die physischen als auch die virtuellen Versionen der BIG-IP ADCs verfügen über flexible und programmierbare Management-, Steuerungs- und Datenebenen:
Verwaltungsebene
- F5 iControl®: Nutzt SOAP/XML/REST, um eine offene Kommunikation zwischen unterschiedlichen Systemen zu gewährleisten und die Funktionalität von BIG-IP zu automatisieren. Das F5-iControl-Gem wird ebenfalls unterstützt, sodass Sie über die Webdienste eines F5-Geräts eine Verbindung zu diesem herstellen können.
- F5 iApps®: Vorlagenbasierte Funktionspakete unterstützen die Automatisierung der Konfiguration und Anwendungsbereitstellung auf F5-Geräten.
Steuerungsebene
- F5 iCall™: Mit diesem Tcl-basierten Skript-Framework können Sie TMSH-Befehle (TMOS Shell-Befehlszeilenschnittstelle) zusammen mit den üblichen Tcl-Befehlen ausführen, um die Konfiguration eines laufenden F5-Geräts zu steuern.
Datenebene
- F5 iRules®: Als hochgradig anpassbare und programmierbare Tcl-basierte Skriptsprache ermöglicht iRules die Prüfung, Analyse, Änderung, Weiterleitung, Umleitung oder Bearbeitung von Datenverkehr in Echtzeit. Die nächste Entwicklungsstufe, iRules Language eXtensions (LX), stellt node.js-Funktionen auf der BIG-IP-Plattform (v12.1) bereit.
Ein umfassender Ansatz für die Netzwerkprogrammierbarkeit ermöglicht es dem Betrieb, bei betrieblichen und geschäftlichen Ereignissen oder Chancen bedarfsgerecht zu reagieren. Das F5-Produktportfolio für Netzwerkprogrammierbarkeit versetzt Unternehmen in die Lage, Prozesse effizient zu automatisieren und zu orchestrieren.
Die gemeinsame Lösung von F5 und Puppet
F5 und Puppet haben sich zusammengeschlossen, um mit einer umfassenden Lösung dem Agilitätsbedarf moderner Unternehmen bei der Unterstützung von Continuous Integration und Continuous Deployment (CI/CD) gerecht zu werden. Mit Puppet Enterprise bietet Puppet ein kommerziell unterstütztes Konfigurationsmanagement-Tool, das einen einheitlichen, softwaredefinierten Ansatz zur Automatisierung der Verwaltung von Rechen-, Netzwerk- und Speicherressourcen ermöglicht und Unternehmen dabei unterstützt, Anwendungen reibungsloser bereitzustellen.
Mit seinem deklarativen, modellbasierten Ansatz für die IT-Automatisierung ermöglicht Puppet Enterprise die Automatisierung einfacher, wiederkehrender Aufgaben ebenso wie die Bereitstellung umfangreicher Public, Private und Hybrid Clouds. Durch die Möglichkeit, Konfigurationsänderungen in diesen Cloud-Umgebungen zu modellieren, zu testen und anschließend bereitzustellen, lassen sich Infrastrukturressourcen effizient nutzen. Dank der Erweiterbarkeit von Puppet durch Module können Unternehmen auf dem bestehenden 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 als „Facts“ bezeichnete Informationen über das System an einen Puppet-Master-Server. Der Puppet Master verwendet die empfangenen Facts zusammen mit einem Manifest – einem aus Puppet-Code bestehenden Puppet-Programm – zur Kompilierung eines Katalogs, der die endgültige Konfiguration definiert, und sendet diesen anschließend an den Agenten zurück. Der Agent kann dann den im Katalog definierten Systemzustand durchsetzen.
Anders als bei einem Server, auf dem der Software-Agent direkt auf dem Knoten ausgeführt wird, können Sie in der Puppet-Infrastruktur einen Proxy einrichten, der den Agent für ein BIG-IP-Gerät ausführt. So können Sie das BIG-IP-Gerät mit Puppet verwalten und von den Vorteilen dieser Lösung profitieren. Der Puppet-Agent kann sich auf einem vom Puppet-Master getrennten Server befinden oder beide können auf demselben Server ausgeführt werden.
Dateien in der Puppet-Sprache werden als Manifeste bezeichnet und tragen die Dateierweiterung .pp . Der Kern der Puppet-Sprache besteht in der Deklaration von Ressourcen. Alle anderen Bestandteile der Sprache dienen dazu, die Deklaration von Ressourcen flexibler und komfortabler zu gestalten. Der Puppet-Master verwendet stets das Hauptmanifest, das durch die Umgebung des aktuellen Knotens festgelegt wird. Darin können Sie Ressourcen deklarativ beschreiben.
Der Datenfluss für die gemeinsame Lösung von F5 und Puppet ist in Abbildung 1 dargestellt.
- 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 übermittelt sie anschließend als Fakten an den Puppet-Master.
- Der Puppet-Master kompiliert einen Katalog und sendet ihn an den Agenten oder Proxy zurück.
- Der Puppet-Proxy wandelt den vom Puppet-Master empfangenen Katalog in ein Code-Snippet für das iControl-Gem um, um die endgültige Konfiguration auf dem BIG-IP-Gerät zu erstellen.
- iControl-Gem-Dateien werden verwendet, um Knotenkonfigurationsparameter in iControl-Nachrichten zu übersetzen und den beschriebenen Zustand über APIs durchzusetzen.

Zwei zentrale Funktionen dieser gemeinsamen Implementierung sind die iControl API und 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 von Puppet Network Device und der F5 iControl API können Sie das Puppet F5-Modul bereitstellen und BIG-IP-Geräte mit Puppet verwalten. Die Puppet F5-Module stellen Ressourcen zur Verwaltung von BIG-IP-Objekten bereit, darunter die Bereitstellung und Verwaltung virtueller Server sowie die Konfiguration und Verwaltung von Pools und Poolmitgliedern. Puppet verwendet F5-Module, um die für BIG-IP-Geräte definierten Ressourcen zu ermitteln, und lädt automatisch alle benutzerdefinierten Klassen oder definierten Typen, die in F5-Modulen gespeichert sind.
Wichtigste Vorteile
Diese gemeinsame Lösung von F5 und Puppet unterstützt Sie dabei:
- Verwalten Sie die Computing- und Netzwerkinfrastruktur mit demselben Tool und steigern Sie so die Effizienz.
- Vermeiden Sie zeitaufwendige Übergaben zwischen System- und Netzwerkteams.
- Stellen Sie die Konfigurationskonsistenz Ihrer BIG-IP-Geräte sicher (wenn die Konfiguration vom gewünschten Zustand abweicht, setzt Puppet sie automatisch auf den konfigurierten Zustand zurück).
- Erreichen Sie Skalierbarkeit und Serviceelastizität, indem Sie die Konfiguration einmal erstellen und anschließend auf eine große Anzahl von Systemen anwenden.
- Ermöglichen Sie eine schnelle Reproduktion. Wenn eine Anwendung von der Vorproduktions- in die Produktionsumgebung überführt werden soll, führen Sie einfach den Puppet-Lauf aus. Puppet konfiguriert dann alles genauso wie in Ihren Testumgebungen.
- Beschleunigen Sie die Anwendungsbereitstellung.
Puppet-F5-Module können BIG-IP-Objekte erstellen und konfigurieren – darunter Serverknoten, Pools und virtuelle Server –, die für eine typische Anwendungsbereitstellung erforderlich sind. Bei der Bereitstellung mehrerer BIG-IP-Geräte können Unternehmen mithilfe von Puppet-Modulen alle anfänglichen Aufgaben zur Inbetriebnahme von BIG-IP automatisieren, beispielsweise die Gerätelizenzierung, DNS- und NTP-Einstellungen, interne und externe VLANs, Self-IPs und Routing-Domänen.
Anwendungsfall: Bereitstellung einer HTTP-Anwendung 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 weitere Schritte ausführen. Auf einem einzelnen BIG-IP-Gerät mag dies auch ohne Automatisierung noch zu bewältigen sein. Die Konfiguration mehrerer F5-Geräte, die möglicherweise über mehrere Rechenzentren verteilt sind, für die Bereitstellung großer Unternehmensanwendungen ist jedoch komplex, zeitaufwendig und fehleranfällig. Mithilfe des deklarativen, modellbasierten Puppet-Manifests können Unternehmen die Anwendungsbereitstellung auf mehreren BIG-IP-Geräten in verschiedenen Rechenzentren verwalten und automatisieren.
Um mit der Bereitstellung zu beginnen, installieren Sie den Puppet Master und erstellen Sie ein Proxy-System, auf dem der Puppet Agent ausgeführt werden 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.

Eine device.conf-Datei erstellen
Bevor Sie das F5-Modul verwenden können, müssen Sie eine device.conf-Datei im Puppet-Konfigurationsverzeichnis (entweder /etc/puppet oder /etc/puppetlabs/puppet) auf dem Puppet-Proxy erstellen:
[bigip1]
type f5
url https://admin:admin@10.192.74.111
Im obigen Beispiel bezieht sich admin:admin@10.192.74.111 auf die Anmeldedaten von Puppet für das F5-Gerät: <BENUTZERNAME>:<PASSWORT>@<IP-ADRESSE DES BIGIP>.
Klassifizieren Sie Ihre Knoten auf dem Puppet Master
Geben Sie anschließend die Konfiguration in der entsprechenden Klassenanweisung oder Knotendeklaration in Ihrer Datei site.pp, im Knotenmanifest <devicecertname>.pp oder in einer Manifestdatei vom Typ profiles::<profile_name> ein. Nachfolgend sehen Sie eine Puppet-Beispielmanifestdatei (site.pp) zur Konfiguration einer HTTP-Anwendung auf der BIG-IP-Plattform:
node bigip1 {
f5_node { '/Common/web_server_1':
ensure => 'present',
address => '10.1.20.11',
description => 'Web Server Node 1',
availability_requirement => 'all',
health_monitors => ['/Common/icmp'],
}->
f5_node { '/Common/web_server_2':
ensure => 'present',
address => '10.1.20.12',
description => 'Web Server Node 2',
availability_requirement => 'all',
health_monitors => ['/Common/icmp'],
}->
f5_node { '/Common/web_server_3':
ensure => 'present',
address => '10.1.20.13',
description => 'Web Server Node 3',
availability_requirement => 'all',
health_monitors => ['/Common/icmp'],
}->
f5_pool { '/Common/web_pool':
ensure => 'present',
members => [
{ name => '/Common/web_server_1', port => '80', },
{ name => '/Common/web_server_2', port => '80', },
{ name => '/Common/web_server_3', port => '80', },
],
availability_requirement => 'all',
health_monitors => ['/Common/http_head_f5'],
}->
f5_virtualserver { '/Common/http_vs':
ensure => 'present',
provider => 'standard',
default_pool => '/Common/web_pool',
destination_address => '10.1.10.240',
destination_mask => '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:
- Zunächst müssen Sie Ihre Webserver einrichten. Das F5-Modul „f5_node“ fügt drei Webserver hinzu: web_server_1, web_server_2 und web_server_3, jeweils mit so wenigen Parametern wie möglich und einem Zustandsmonitor, der jeden Server direkt anpingt, um sicherzustellen, dass er weiterhin reagiert.
- Richten Sie als Nächstes den Serverpool ein. Das Modul „f5_pool“ erstellt einen Pool mit dem Namen web_pool und fügt außerdem die oben erstellten Knoten als Poolmitglieder hinzu.
- Das Modul „f5_virtualserver“ erstellt einen virtuellen Server http-vs mit dem Profil http und dem oben erstellten web_pool.
Puppet Device ausführen
Vor der Ausführung von puppet device (Befehl für Puppet Network Device) sind auf dem BIG-IP-Gerät keine virtuellen Server, Pools oder Knoten konfiguriert. Durch die Ausführung des Befehls puppet device -v --user=root generiert der Geräte-Proxy-Knoten ein Zertifikat und wendet Ihre Klassifizierungen auf das F5-Gerät an.
Wie unten dargestellt, wurden alle Aufgaben erfolgreich und ohne Fehler abgeschlossen.
$ sudo puppet device -v --user=root –trace
Info: Anwendung der Konfiguration auf bigip1 unter https://10.192.74.111:443 wird gestartet
Info: Plugin-Fakten werden abgerufen
Info: Plugin wird abgerufen
Info: Katalog für bigip1 wird zwischengespeichert
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: Node[bigip1]: Planung aller Ereignisse für Node[bigip1] wird aufgehoben
Hinweis: Katalog in 0,50 Sekunden angewendet
Puppet hat nun einen neuen, vollständig konfigurierten virtuellen Server erstellt (Abbildung 3). Dieser Server verteilt die Last von HTTP-Anwendungen auf einen neu erstellten Pool (Abbildung 4). Der Pool umfasst drei neu erstellte Webserver (Abbildung 5).



Alle Puppet-F5-Module sind idempotent. Das bedeutet, dass Aufgaben nur ausgeführt werden, wenn der Zustand des Knotens nicht mit dem konfigurierten oder gewünschten Zustand übereinstimmt. Mit anderen Worten: Wenn dasselbe Manifest erneut ausgeführt wird, konfiguriert Puppet diese Objekte nicht neu.
Info: Konfiguration wird auf bigip1 unter https://10.192.74.111:443 angewendet
Info: Plugin-Fakten werden abgerufen
Info: Plugin wird abgerufen
Info: Katalog für bigip1 wird zwischengespeichert
Info: Konfigurationsversion '1498522983' wird angewendet
Hinweis: Katalog wurde in 1,51 Sekunden angewendet
Fazit
Automatisierung ist eine zentrale Komponente von DevOps und CI/CD und beginnt häufig mit dem Konfigurationsmanagement. Die gemeinsame Lösung von F5 und Puppet ermöglicht es Betriebsteams, die Konfiguration eines vollständigen Anwendungsinfrastruktur-Stacks bereitzustellen, zu automatisieren und zu verwalten. Dadurch können Anwendungsentwickler Infrastrukturressourcen flexibel nach oben und unten skalieren, Anwendungstests automatisieren und die Entwicklungszeiten für Anwendungen verkürzen. So können Unternehmen ein beispielloses Maß an Agilität und Erweiterbarkeit erreichen.
Weitere Informationen darüber, wie die gemeinsame Lösung von F5 und Puppet Ihr Unternehmen unterstützen kann, finden Sie unter forge.puppet.com/f5/f5
VERÖFFENTLICHT AM 05. OKTOBER 2017
