Freeform-Design
Blaupausen
Wenn Sie ein neues Netzwerk mit Freeform-Referenzdesign erstellen, erstellen Sie zunächst einen Blueprint. Wie bei den anderen Referenzdesigns enthält der Blueprint alle Elemente, die einem von Apstra verwalteten Betriebsnetzwerk zugeordnet sind. Es gibt einige wichtige Unterschiede bei der Strukturierung und Verwendung von Blueprints in Freeform. Für die Datencenter-Referenzdesigns sind Design- und Build-Elemente wie logische Geräte, Schnittstellenzuordnungen, Racks und Vorlagen erforderlich. Diese Schritte sind in einem Freeform-Design überflüssig, da Konfigurationsdetails und Geräteverbindungen direkt in den Blueprint erstellt werden. Wenn Sie einen neuen Blueprint erstellen, wählen Sie einfach das Freeform-Referenzdesign aus, wie gezeigt.
Topologie
Nachdem Sie einen neuen Freeform-Blueprint erstellt haben, können Sie mit dem Entwurf Ihrer Netzwerktopologie beginnen. Wie bei den DC-Referenzarchitekturen werden alle Designarbeiten über die Registerkarte "Staged Blueprint" erledigt. Im abschnittierten Topologie-Editor in Freeform interagieren Sie mit den Elementen, um Ihr Netzwerkdesign und Ihre Netzwerkarchitektur zu erstellen. Der Topologie-Editor ist eine neue Funktion in Freeform, mit der Sie maßgeschneiderte Netzwerkdesigns auf interaktive Weise erstellen können. Sie können Netzwerkgeräte auswählen und interaktiv verbinden, indem Sie Verbindungen zwischen ihnen definieren. Diese Geräte können intern oder extern sein, wie unten dargestellt.
Klicken Sie in der Topologieansicht auf die Schaltfläche Bearbeiten, um auf den Topologie-Editor zuzugreifen.
Interne Geräte werden von Apstra verwaltet und müssen auf Geräteprofile abgebildet werden, die die Gerätefunktionen modellieren und mithilfe von Agenten mit dem Gerät interagieren. Externe Geräte gehören nicht direkt zur Apstra-Verwaltung, können aber dennoch in der Topologieansicht für die Interaktion mit internen Geräten, z. B. Verbindungen und Geschwindigkeiten, modelliert werden. Externe Geräte nutzen keine Geräteagenten oder -modelle. Sie können Verbindungen zwischen einzelnen oder mehreren Geräten erstellen oder sogar aggregierte Verbindungen erstellen. Sie können mit der Topologie interagieren, um das Designlayout neu anzuordnen, Links hinzuzufügen und Farben oder Tags für Geräte und Links zu bearbeiten. Sie können DIE CRUD-Vorgänge (Create, Read, Update, Delete) ausführen, indem Sie das Zahnradsymbol des Systems auswählen. Sie haben die Möglichkeit, CRUD-Operationen sowohl für einzelne Objekte als auch für Massenobjekte durchzuführen.
Farben
Sie können Farben verwenden, um eine schnelle visuelle Gruppierung und Unterscheidung zwischen Apstra-Geräten zu erstellen. Beispielsweise können Geräte, die eine Verbindung zu Firewalls herstellen, rot sein, während Geräte, die nur IP-Weiterleitung betreiben, orange sein können.
Schilder
In Apstra sind Tags eine leistungsstarke Funktion. Tags sind eine Möglichkeit, Metadaten den von Apstra verwalteten Ressourcen zuzuweisen. Diese Tags können Ihnen helfen, Apstra-Ressourcen zu identifizieren, zu organisieren, zu suchen und zu filtern: derzeit Geräte und Links. Tags sind auch nützlich, um Ressourcen nach Zweck, Besitzer, Umgebung oder anderen Kriterien zu kategorisieren. Da Tags Metadaten sind, werden sie nicht nur für die visuelle Beschriftung verwendet, sondern auch als Eigenschaft des Knotens in der Apstra Graphdatenbank angewendet. Diese Node-Eigenschaft oder Geräteeigenschaft steht Ihnen dann zur Verfügung, um in Jinja für dynamische Variablen bei der Konfigurationsgenerierung und die Apstra-Echtzeitanalysen über die Live Query-Technologie von Apstra und Apstra Intent-Based Analytics zu referenzieren.
Sie können beispielsweise das Tag "Firewall" verwenden, um eine spezifische Beschreibung zu rendern.
{% if has_tag(interface.link.neighbor_system.id, 'firewall') %} description "this is a firewall facing interface"; {% endif %}
Weitere Beispiele für den Zugriff auf und die Verwendung von Tags finden Sie im Abschnitt Jinja Support.
Systeme erstellen
Sie können ein System aus der Topologie - oder der Systemansicht erstellen:
-
Von der staged > Topologie > Topologie-Editor
Verwenden Sie die ersten beiden Symbole im unteren Menü, um entweder ein internes oder ein externes System zu erstellen. Das neue System wird in der Topologieansicht angezeigt. Bevor Sie ein internes System erstellen, importieren Sie dessen Geräteprofil in den Blueprint-Katalog und weisen es dann beim Erstellen des internen Systems zu.
-
Von staged > Systems
Diese Methode fügt die neuen Systeme automatisch zur Topologieansicht hinzu. Sie können ein neues System von einem vorhandenen verwalteten Gerät erstellen oder ein neues System mit einem bestimmten Geräteprofil erstellen und ein verwaltetes Gerät später zuweisen, sobald das Gerät bereit und Teil der von Apstra verwalteten Geräte ist.
Erstellen von Links
Verbindungen werden verwendet, um Objekte oder Geräte miteinander zu verbinden. Links können einzelne oder aggregierte Verbindungen sein. Diesen Links können über das Topologie-Editor-Symbol "Gear" Parameter zugewiesen werden. Den Links können IP-Adressen und Tags zugewiesen werden.
Geräteprofile
Geräteprofile definieren die Funktionen unterstützter Hardwaregeräte. Einige Funktionen haben unterschiedliche Verhaltensweisen zwischen NOS-Versionen und können daher pro NOS-Version angegeben werden.
In den ersten Versionen von Freeform werden nur Geräteprofile von Juniper Networks unterstützt.
Sie müssen Geräteprofile in Ihren Blueprint importieren, bevor Sie ihn erstellen können. Dann können Sie diese Geräte im Topologie-Editor im Blueprint verwenden.
Konfigurationsvorlagen
Da das Design der Netzwerkelemente in Freeform willkürlich ist, werden die Gerätekonfigurationen nicht automatisch vom Freeform-Referenzdesign dargestellt. die Konfiguration muss vollständig definiert werden. Ab Apstra 4.1.1 führen wir das Konzept einer Konfigurationsvorlage speziell für Freeform ein, um die Gerätekonfiguration zu steuern. Konfigurationsvorlagen können sehr einfach und statisch bis sehr komplex und programmgesteuert sein, abhängig von dem Anwendungsfall und dem Grad der Automatisierung, mit dem Sie vertraut sind. Konfigurationsvorlagen unterstützen die Verwendung der Vorlagensprache Jinja2, die optional mit dem Gerätekontext und den Eigenschaftensätzen interagieren kann.
Verschachteln (composable) Konfigurationsvorlagen
Da Config-Vorlagen Jinja-Vorlagen unterstützen, wird eine leistungsstarke Schachtelungsfunktion unterstützt, mit der Sie einen Abschnitt einer Konfigurationsvorlage aus der Liste in eine andere Konfigurationsvorlage einfügen können. Das Verschachteln von Konfigurationsvorlagen hat zwei Hauptvorteile. Die erste besteht darin, dass Sie mit dem Nesting verschiedene Services, Konfigurationsabschnitte usw. in gängige Komponenten trennen und dedizierte Konfigurationsvorlagen für diese erstellen können.
Nehmen Sie beispielsweise an, dass Sie eine einfache Systemkonfiguration für Banner, Anmeldungen, NTP usw. für die meisten Ihrer Juniper Geräte haben. Anstatt dieselbe Konfiguration in jede Ihrer Gerätevorlagen zu kopieren und zu einfügen, können Sie eine dedizierte Konfigurationsvorlage für die Basissystemkonfiguration erstellen. Dann verweisen Sie einfach auf diese Vorlage in einer anderen Vorlage.
Da Sie jedem System nur eine Konfigurationsvorlage zuweisen können, besteht der zweite Vorteil darin, dass alle Entitäten aller geschachtelten Konfigurationsvorlagen automatisch übernommen werden.
Zur Veranschaulichung ist die folgende Konfigurationsvorlage junos_configuration.jinja
eine einzige Konfigurationsvorlage mit mehreren verschachtelten Konfigurationsvorlagen, wie junos_system.jinja
.
Die geschachtelte junos_system.jinja
Vorlage wird verwendet, um den System-Hostnamen zu rendern.
Rendering-Reihenfolge
Die Konfiguration wird in der Reihenfolge der Konfigurationsvorlage gerendert.
Eigenschaftensätze
Eigenschaftensätze sind Sammlungen von Schlüssel-Wert-Paaren, die Sie in Blueprint-Kataloge importieren, um sie in Konfigurationsvorlagen und IBA-Sondierungen zu verwenden. Die Verwendung von Eigenschaftensätzen ist optional, bietet jedoch eine wertvolle Funktion, mit der Sie Konfigurationsvorlagen vollständig parametrieren können, um die unverändernden Teile der Konfigurationsvorlage von den tatsächlichen Variablen zu trennen. Anders gesagt, eigenschaftensätze ermöglichen es Ihnen, das Gerätemodell, mit dem die Konfiguration auf beliebige und flexible Weise gerendert wird, anzureichern.
Beispielsweise kann die Konfiguration von NTP auf allen Geräten im Unternehmen konsistent sein, jedoch mit unterschiedlichen Zeitquellen oder Schichten je nach Geografischer Region. Die NTP-Konfigurationsvorlage kann mit einer variablen erstellt werden, die für jeden dieser Bereiche unterschiedlich ist. In diesem Fall können Sie die Eigenschaft mit dem Namen "ntp" verwenden.
Es ist wichtig, die richtige Syntax zu verwenden. Bei den Schlüsselwerten wird die Groß- und Kleinschreibung berücksichtigt.
Die Konfigurationsvorlage wird anstelle {{ntp}}
der tatsächlichen IP-Adresse erstellt, die Sie für den NTP-Server verwenden möchten. Dieselbe Konfigurationsvorlage wird in alle Blaupausen importiert, aber für Entwürfe, die in der Region Ost ausgeführt werden, wird der Eigenschaftssatz "EAST" importiert, und für Entwürfe, die in der Region West ausgeführt werden, wird der Eigenschaftssatz "WEST" importiert. Eigenschaftensätze sind standardmäßig blaupausenweit oder global im Kontext.
Freeform unterstützt auch Eigenschaftensätze, die speziell einem Gerät zugewiesen werden können. Auf diese Weise können Sie bestimmte Eigenschaftensätze einrichten, diese zuweisen und nur in einem angegebenen Gerät verwenden. Eigenschaftensätze sind Teil des Graphen; ihre Werte können in IBA-Sondierungen verwendet werden.
Die obigen Beispiele zeigen, dass der Zugriff auf Eigenschaftensätze über den Gerätekontext (links) oder das Diagramm (rechts) möglich ist.
Datenstrukturen in Eigenschaftsgruppen
Freeform Property Sets unterstützen erweiterte Datenstrukturen, die Sie für verschiedene Anwendungsfälle verwenden können. Freeform-Eigenschaftssätze unterstützen jeden der typischen Python-Datentypen wie:
-
Arrays (Liste der Elemente)
-
Boolean: True oder False
-
Int: 1, 2, 3 usw.
-
Float: 1.2, 3.65 usw.
-
String: "Hallo Welt"
-
Wörterbuch: {"asn": 65432, "lo0": "1.2.3.4/32"}
Das obige Beispiel zeigt verschiedene Datentypen in einer Konfigurationsvorlage
Sie können global auf den Eigenschaftensatz verweisen oder ihn einem System im Blueprint zuweisen. Der screenshot unten zeigt einen Eigenschaftensatz, der mit einer verschachtelten Wörterbuch -Datenstruktur (Wörterbuch der Wörterbücher) erstellt wurde.
Sie können das Wörterbuch mit den Schlüsseln und den Schlüsseln als Werte wie erforderlich rekursieren, zum Beispiel:
-
esxRedTrunk ist der Name des Link-Tags, der als Schnittstellenbeschreibung verwendet wird
-
99, 100, 101 sind die VLAN-ID/Trunk-Mitglieder & irb.<value> zugewiesen werden
-
Subnetz / Beschreibung / Gateway werden auch verwendet, um eine sinnvolle Konfiguration abzuleiten
Bereitstellungsmodi (Bereitstellung / Bereit / Entleeren)

Sie können den Bereitstellungsmodus Ihrer Systeme in Freeform festlegen (wie in Datencenter-Blueprints).
In Freeform definieren Sie jedoch die Konfiguration, die gerendert wird, wenn sich ein System in jedem Modus befindet.
Sie können den Bereitstellungsmodus verwenden, um unterschiedliche Konfigurationen bedingt zu rendern, z. B. ob Routing-Protokollsitzungen gerendert werden sollen oder wie bestimmte Routenzuordnungen auf einem Gerät gerendert werden sollen. Ein Beispiel wäre, wenn das Gerät auf "Drain" eingestellt wäre, hätte es spezifische Jinja, um eine Konfiguration zu erstellen, die die dynamischen Routing-Protokolle entfernt.
Der Bereitstellungsmodus eines Systems wird dem Benutzer im Gerätekontext angezeigt, auf den in Konfigurationsvorlagen als Jinja-Variablen verwiesen werden kann.
Der Bereitstellungsmodus von Benachbarten Systemen ist ebenfalls verfügbar.
Das Ändern des Bereitstellungsmodus eines Systems hat keine Auswirkungen auf die gerenderte Konfiguration, wenn sie nicht von der Dem System zugewiesenen Konfigurationsvorlage referenziert wurde.
Ein Beispiel dafür, wie dies in einer Jinja Config Template erreicht werden könnte, ist wie folgt:
{% if deploy_mode in ['deploy', 'drain'] %} {% include 'protocols.jinja' %} {% include 'policy_options.jinja' %} {% endif %}
In diesem Beispiel werden sowohl die protocols.jinja
policy_options.jinja
als auch aktiv, wenn sich ein gegebener Knoten im Status "Deploy" oder "Drain" befindet. Sie können das Verhalten an individuelle Anforderungen anpassen.