Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Verwenden von Ansible zum Installieren von Software auf Junos-Geräten

Verwenden Sie die Ansible-Module von Juniper Networks, um Software auf Junos-Geräten zu installieren.

Verwenden von Ansible zum Installieren von Software

Juniper Networks stellt ein Ansible-Modul bereit, mit dem Sie das Software-Image auf einem Junos-Gerät installieren oder aktualisieren können. Tabelle 1 gibt einen Überblick über das Modul.

Tabelle 1: Softwaremodul

Inhaltsgruppe

Modulname

juniper.device Sammlung

software

In den folgenden Abschnitten wird erläutert, wie Sie den Speicherort des Software-Images sowie den allgemeinen Softwareinstallationsprozess und die Optionen angeben, wenn das Ansible-Modul zur Installation von Softwarepaketen auf Junos-Geräten verwendet wird. Außerdem wird erläutert, wie speziellere Upgradeszenarien wie ein VM-Hostupgrade, ein einheitliches In-Service-Softwareupgrade (Unified ISSU) oder ein Nonstop-Softwareupgrade (NSSU) auf Geräten durchgeführt werden können, die diese Funktionen unterstützen.

Angeben des Speicherorts des Software-Images

Wenn Sie das juniper.device.software Modul verwenden, um Software auf Junos-Geräten zu installieren, können Sie das Softwarepaket auf den Ansible-Steuerungsknoten herunterladen, und das Modul kopiert das Paket standardmäßig auf das Zielgerät, bevor es die Installation durchführt. Bei gemischten Virtual Chassis-Umgebungen müssen sich die Softwarepakete auf dem Ansible-Steuerungsknoten befinden. Für eigenständige Geräte oder nicht gemischte Virtual Chassis-Umgebungen können Sie das Modul auch anweisen, ein Software-Image zu installieren, das sich bereits auf dem Junos-Zielgerät oder unter einer URL befindet, die vom Zielgerät aus erreichbar ist.

In Tabelle 2 sind die Modulargumente aufgeführt, die Sie je nach Speicherort des Softwarepakets festlegen müssen. Das Modul muss immer entweder das local_packageArgument , pkg_setoder remote_package enthalten. Der no_copy Standardwert ist der Wert von false, wodurch das Modul angewiesen wird, das Softwarepaket von der angegebenen Position auf dem Ansible-Steuerungsknoten auf das Zielgerät zu kopieren.

Tabelle 2: Modulargumente für den Speicherort des Softwarepakets

Speicherort des Softwarepakets

no_copy Parameter

local_package oder pkg_set Parameter

remote_package Parameter

Ansible-Steuerungsknoten

Weglassen oder auf false

Für eigenständige Geräte oder nicht gemischte Virtual Chassis-Umgebungen:

Wird auf den Dateipfad, einschließlich des Dateinamens, des Softwarepakets auf dem lokalen Steuerungsknoten gesetzt local_package . Dateipfade sind relativ zum Playbook-Verzeichnis.

(Optional) Dateipfad auf dem Zielgerät, auf das das Softwarepaket kopiert wird. Das Standardverzeichnis ist /var/tmp.

Wenn remote_package ein Dateiname enthalten ist, muss er mit dem in angegebenen Dateinamen local_packageübereinstimmen.

Für gemischte Virtual Chassis-Umgebungen:

Legt diese Option auf eine Liste der Dateipfade, einschließlich der Dateinamen, eines oder mehrerer Softwarepakete auf dem lokalen Steuerungsknoten fest pkg_set . Dateipfade sind relativ zum Playbook-Verzeichnis.

Remote-Standort

URL aus der Perspektive des Junos-Zielgeräts, von dem aus das Softwarepaket installiert wird.

Zielgerät

Legen Sie diese Einstellung fest auf true

Dateipfad auf dem Zielgerät, auf dem sich das Softwarepaket bereits befinden muss. Das Standardverzeichnis ist /var/tmp.

Wenn sich das Softwarepaket auf dem Ansible-Steuerungsknoten befindet, fügen Sie das für Ihre Installation geeignete Argument hinzu:

  • local_package– Installieren Sie Software auf einem eigenständigen Junos-Gerät oder auf Mitgliedern in einem nicht gemischten Virtual Chassis. Der Argumentwert ist eine einzelne Zeichenfolge, die den absoluten oder relativen Pfad zum Software-Image angibt.

  • pkg_set– Installieren Sie Software auf den Komponenten in einem gemischten Virtual Chassis. Der Argumentwert ist eine Liste von Zeichenfolgen, die die absoluten oder relativen Dateipfade der Softwareimages für die verschiedenen Virtual Chassis-Member in beliebiger Reihenfolge angeben.

Zum Beispiel:

Wenn Sie das local_package Argument or pkg_set einschließen, kopiert das Modul standardmäßig alle Softwarepakete vom Ansible-Steuerungsknoten in das Verzeichnis /var/tmp auf dem Junos-Zielgerät (Einzelgerät oder primäres Virtual Chassis-Gerät). Wenn Sie das local_package Image in ein anderes Verzeichnis kopieren möchten, definieren Sie das remote_package Argument und geben Sie das Zielverzeichnis an. Wenn das remote_package Argument einen Dateinamen enthält, müssen die Dateinamen der local_package remote_package Argumente und identisch sein, da das Modul sonst einen Fehler generiert.

Wenn sich das Softwarepaket bereits auf dem Junos-Zielgerät (Einzelgerät oder primäres Virtual Chassis-Gerät) befindet, muss das Modul neben dem Argument auch das no_copy: true Argument enthalten, das remote_package den Dateipfad zu einem vorhandenen Softwarepaket auf dem Zielgerät angibt. Wenn remote_package kein Verzeichnis angegeben wird, ist der Standardwert /var/tmp.

Wenn sich das Softwarepaket an einem anderen Ort als dem Ansible-Steuerungsknoten oder dem Zielgerät befindet, muss das Modul das remote_package Argument enthalten und den Speicherort des Softwarepakets angeben. Der Wert von remote_package ist eine URL aus der Perspektive des Junos-Zielgeräts. Hinweise zu zulässigen URL-Formaten finden Sie unter Format zum Angeben von Dateinamen und URLs in Junos OS-CLI-Befehlen.

Übersicht über den Installationsprozess

Um Ansible zum Installieren eines Softwarepakets auf einem Junos-Gerät zu verwenden, führen Sie das software Modul aus und geben Sie alle erforderlichen Argumente an. Zum Beispiel:

Wenn Sie das software Modul ausführen, führt es die folgenden Vorgänge aus:

  1. Vergleicht die im version Argument oder im Dateinamen version des Softwarepakets angegebene Junos OS-Version (falls das Argument weggelassen wird) mit der installierten Version auf dem verwalteten Gerät. Wenn die installierte und die gewünschte Version identisch sind, überspringt das Modul die restlichen Installationsschritte und setzt falsechanged failed auf .
  2. Wenn sich das Softwarepaket auf dem Ansible-Steuerungsknoten befindet und der no_copy Parameter weggelassen oder auf falsegesetzt wird, führt das Modul die folgenden Vorgänge aus:
    • Berechnet die Prüfsumme des lokalen Softwarepakets bzw. der lokalen Softwarepakete mithilfe des im checksum_algorithm Argument angegebenen Algorithmus. Zulässige checksum_algorithm Werte sind md5, sha1und sha256. Der Standardwert ist md5. Alternativ können Sie eine checksum Prüfsumme im Argument angeben.

    • Führt eine Speicherbereinigung auf dem Zielgerät durch, um Speicherplatz für das Softwarepaket zu schaffen, es sei denn, das cleanfs Argument ist auf falsefestgelegt.

    • SCP oder FTP kopiert alle Pakete auf das Zielgerät, wenn sich Dateien mit denselben Namen und Prüfsummen nicht bereits am Zielspeicherort auf dem Gerät befinden.

      Wenn das Modul enthält local_package, wird das Paket in das remote_package Verzeichnis oder, falls remote_package nicht angegeben, in das Verzeichnis /var/tmp kopiert. Wenn das Modul enthält pkg_set, werden die Pakete immer in das Verzeichnis /var/tmp auf dem primären Virtual Chassis-Gerät kopiert.

      Anmerkung:

      Wenn das cleanfs Argument weggelassen oder auf truefestgelegt wird, kopiert das Modul das Softwarepaket auf das Gerät, auch wenn es ursprünglich am Zielspeicherort vorhanden war, da der Speicherbereinigungsvorgang die vorhandene Datei entfernt. Wenn cleanfs: false sie vorhanden ist und sich die Datei bereits am Zielspeicherort befindet, überspringt das Modul den Dateikopiervorgang.

    • Berechnet die Prüfsumme jeder entfernten Datei und vergleicht sie mit der Prüfsumme der lokalen Datei.

Sobald sich das Softwarepaket auf dem Zielgerät befindet, unabhängig davon, ob es ursprünglich dorthin heruntergeladen oder vom Modul kopiert wurde, führt das Modul die folgenden Vorgänge aus:

  1. Überprüft die Konfiguration anhand des neuen Pakets, wenn das validate Argument auf festgelegt ist.true

    Anmerkung:

    Standardmäßig validiert das software Modul das Softwarepaket oder -paket nicht anhand der vorhandenen Konfiguration als Voraussetzung für das Hinzufügen des Softwarepakets. Um sicherzustellen, dass die aktive Konfiguration mit dem neuen Software-Image funktioniert, legen Sie das validate Argument auf true.

  2. Installiert das Paket auf jeder einzelnen Routing-Engine, es sei denn all_re , es ist auf falsefestgelegt.

  3. Startet jedes aktualisierte Routing-Modul neu, es sei denn, das reboot Argument ist auf falsefestgelegt.

Das software Modul ermöglicht es Ihnen, den Fortschritt der Installation zu protokollieren, indem Sie das logfile Argument module einschließen. Standardmäßig werden nur Meldungen des Schweregrads WARNUNG oder höher protokolliert. Um Meldungen des Schweregrads INFO oder höher zu protokollieren, der für die Protokollierung von Meldungen für den allgemeinen Installationsprozess erforderlich ist, führen Sie das Playbook mit der -v Befehlszeilenoption oder --verbose aus.

Angeben von Timeout-Werten

Das juniper.device.software Modul führt Vorgänge über eine NETCONF-Sitzung aus. Die Standardzeit für eine Zeitüberschreitung bei einem NETCONF-RPC beträgt 30 Sekunden. Während des Installationsvorgangs wird das RPC-Timeoutintervall durch bestimmte Vorgänge wie folgt erhöht:

  • Kopieren und Installieren des Pakets auf dem Gerät – 1800 Sekunden (30 Minuten)

  • Berechnung der Prüfsumme – 300 Sekunden (5 Minuten)

  • Durchführen einer Speicherbereinigung – 300 Sekunden (5 Minuten)

In einigen Fällen kann der Installationsprozess, die Prüfsummenberechnung oder die Speicherbereinigung diese Zeitintervalle überschreiten. Sie können den Timeoutwert für diese Vorgänge ändern, checksum_timeoutindem Sie die install_timeoutArgumente , und cleanfs_timeout auf die erforderliche Anzahl von Sekunden in der Argumentliste des Moduls festlegen. Zum Beispiel:

Angeben von Installationsoptionen, die nicht über ein entsprechendes Modulargument verfügen

Wenn Sie das juniper.device.software Modul verwenden, um Software auf einem Gerät zu installieren, ruft das Modul den entsprechenden RPC für die enthaltenen Installationsargumente auf. Das Modul ruft z. B. den <request-package-add> RPC für Standardinstallationen von Junos OS, den <request-vmhost-package-add> RPC für VM-Host-Upgrades, den <request-package-in-service-upgrade> RPC für Szenarien mit einheitlicher ISSU usw. auf.

Das Modul unterstützt explizite Argumente für viele der Installationsoptionen, z. B. die validate Option. Das Modul unterstützt auch das Argument, mit dem kwargs Sie zusätzliche Optionen einschließen können, die vom RPC unterstützt werden, aber kein entsprechendes Modulargument haben. Das kwargs Argument verwendet ein Wörterbuch von Schlüssel-Wert-Paaren mit zusätzlichen unterstützten Optionen.

Die aktuelle Liste der Optionen, die vom Modul unterstützt werden, finden Sie in der API-Referenzdokumentation für das Modul. Eine Liste aller verfügbaren Optionen für einen bestimmten RPC finden Sie in der Dokumentation zum entsprechenden Befehl, oder suchen Sie im Junos XML API Explorer nach dem Anforderungs-Tag des RPC.

Anmerkung:

Sie sollten nur Installationsoptionen einschließen, die auf dem Junos-Zielgerät für den jeweiligen RPC unterstützt werden.

Im folgenden Playbook installiert das software Modul ein neues Softwareimage auf den Zielhosts. Das Modul enthält das kwargs Argument mit unlink: true. Dieses Argument, das das Softwarepaket nach einem erfolgreichen Upgrade aus dem Verzeichnis entfernt, entspricht dem Einschließen der <unlink/> Option in den <request-package-add> RPC.

So führen Sie ein VM-Host-Upgrade durch

Auf Geräten, die über Routing-Engines mit VM-Host-Unterstützung verfügen, läuft Junos OS als virtuelle Maschine (VM) über einen Linux-basierten Host (VM-Host). Für ein VM-Host-Upgrade ist ein VM-Host-Installationspaket (junos-vmhost-install-x.tgz) erforderlich, und es werden das Hostbetriebssystem und das kompatible Junos OS aktualisiert. In der CLI führen Sie das Upgrade mit dem request vmhost software add Befehl operational mode durch, der dem <request-vmhost-package-add> RPC entspricht.

Das juniper.device.software Modul unterstützt das Argument für die vmhost: true Durchführung eines VM-Hostupgrades. Wenn das Argument vorhanden ist, führt das Modul die Installation mithilfe des <request-vmhost-package-add> RPC durch.

Mit dem folgenden Playbook werden Junos OS und das Hostbetriebssystem auf den angegebenen Geräten aktualisiert und neu gestartet:

Wie führe ich eine einheitliche ISSU oder NSSU durch

Das juniper.device.software Modul unterstützt die Durchführung eines einheitlichen In-Service-Software-Upgrades (Unified ISSU) oder eines Nonstop-Software-Upgrades (NSSU) auf Geräten, die die Funktion unterstützen und die erforderlichen Anforderungen erfüllen. Weitere Informationen zu den vereinheitlichten ISSU- und NSSU-Funktionen finden Sie in der Softwaredokumentation für Ihr Produkt.

Die einheitliche ISSU-Funktion ermöglicht Ihnen ein Upgrade zwischen zwei verschiedenen Junos OS-Versionen ohne Unterbrechung der Control Plane und mit minimaler Unterbrechung des Datenverkehrs. Um ein einheitliches In-Service-Softwareupgrade durchzuführen, muss das software Modul das issu: true Argument enthalten. Zum Beispiel:

Mit der NSSU-Funktion können Sie die Junos OS-Software, die auf einem Switch oder Virtual Chassis ausgeführt wird, mit redundanten Routing-Engines mit minimaler Unterbrechung des Netzwerkverkehrs aktualisieren. Um ein Nonstop-Softwareupgrade durchzuführen, muss das software Modul das nssu: true Argument enthalten. Zum Beispiel:

So installieren Sie Software auf einem Virtual Chassis-Mitglied der EX-Serie

Wenn Sie ein nicht gemischtes Virtual Chassis der EX-Serie aktualisieren, befolgen Sie im Allgemeinen den unter Übersicht über den Installationsprozess beschriebenen Installationsprozess, um das gesamte Virtual Chassis zu aktualisieren. Es kann jedoch vorkommen, dass Sie Software auf bestimmten Mitglieds-Switches im Virtual Chassis installieren müssen. Ab Version 1.0.3 der juniper.device Sammlung können Sie ein Softwarepaket auf einzelnen Mitglieds-Switches in einem nicht gemischten Virtual Chassis der EX-Serie installieren.

Um Software auf bestimmten Membern zu installieren, schließen Sie das member_id Argument ein, und definieren Sie eine Liste von Zeichenfolgen, die die Member-IDs angeben. Das System installiert das Softwarepaket vom primären Virtual Chassis-Gerät auf den angegebenen Membern.

Mit dem folgenden Ansible-Playbook wird die Software auf Member 0 und Member 1 im EX-Serie Virtual Chassis aktualisiert:

Beispiel: Verwenden von Ansible zum Installieren von Software

In diesem Beispiel wird das juniper.device.software Modul verwendet, um ein Software-Image auf einem Junos-Gerät zu installieren.

Anforderungen

In diesem Beispiel werden die folgenden Hardware- und Softwarekomponenten verwendet:

  • Configuration Management Server mit Ansible 2.17 oder höher und auf dem die juniper.device Sammlung installiert ist

  • Junos-Gerät mit aktiviertem NETCONF und einem Benutzerkonto mit entsprechenden Berechtigungen

  • Öffentliches/privates SSH-Schlüsselpaar, das für den entsprechenden Benutzer auf dem Ansible-Kontrollknoten und dem Junos-Gerät konfiguriert ist

  • Vorhandene Ansible-Bestandsdatei mit definierten erforderlichen Hosts

Überblick

In diesem Beispiel wird ein Ansible-Playbook dargestellt, das das Modul zum Aktualisieren von juniper.device.software Junos OS auf den Hosts in der angegebenen Bestandslistengruppe verwendet. In diesem Beispiel befindet sich das Software-Image auf dem Ansible-Steuerungsknoten, und das Modul kopiert das Image vor der Installation auf das Zielgerät. Da das Modul nicht explizit ein host Argument definiert, arbeitet es auf dem Standardhost, der .{{ inventory_hostname }}

Dieses Playbook enthält die Check NETCONF connectivity Aufgabe, die das ansible.builtin.wait_for Modul nutzt, um zu versuchen, eine NETCONF-Sitzung mit dem Junos-Gerät über den Standard-NETCONF-Port 830 einzurichten. Wenn der Steuerungsknoten während der Ausführung des Playbooks keine NETCONF-Sitzung mit einem Gerät einrichten kann, überspringt er die verbleibenden Aufgaben in der Wiedergabe für dieses Gerät.

Der Install Junos OS package Task führt das software Modul aus, sofern die NETCONF-Prüfung erfolgreich war. Das version Argument definiert die gewünschte Junos OS-Version, wie sie vom show version Befehl auf dem Junos-Gerät gemeldet wird. Während der Playbookausführung prüft das Modul zunächst, ob die angeforderte Version nicht bereits auf dem Gerät installiert ist. Wenn sich die angeforderte Version von der aktuell installierten Version unterscheidet, installiert das Modul die angeforderte Version.

Das local_package Argument definiert den Pfad des Junos OS-Softwarepakets auf dem Ansible-Steuerknoten. Während der Installation führt das Modul eine Speicherbereinigung auf dem Zielgerät durch, kopiert das Software-Image in das Verzeichnis /var/tmp auf dem Gerät, überprüft die Prüfsumme der Datei, überprüft die neue Software anhand der aktiven Konfiguration und installiert dann die Software auf jeder Routing-Engine auf dem Zielhost. Standardmäßig startet das software Modul jede Routing-Engine nach Abschluss der Installation neu. Diese Aufgabe dient jedoch explizit reboot: true der Klarheit.

Die Aufgabe speichert das Modulergebnis in der response Variablen und benachrichtigt einen Handler. Wenn der Benutzer das Playbook nicht im Überprüfungsmodus ausführt, versucht der wait_reboot Handler, eine Sitzung mit dem Gerät einzurichten, um zu überprüfen, ob das Gerät wieder online ist. Die wait_time Variable definiert die Zeitspanne, in der der Steuerungsknoten versucht, sich erneut mit dem Gerät zu verbinden.

Dieses Beispiel enthält den logfile Parameter zum Protokollieren des Installationsfortschritts. Dies ist wichtig für das Debugging, falls die Installation fehlschlägt, sowie für die Protokollierung von Datum und Uhrzeit von Installationen auf den Geräten. Der Benutzer, der das Playbook ausführt, muss über Berechtigungen zum Schreiben in die angegebene Protokolldatei verfügen. Standardmäßig werden nur Meldungen des Schweregrads WARNUNG oder höher protokolliert. In diesem Beispiel wird das Playbook mit der Option ausgeführt, Meldungen -v des Schweregrads INFO oder höher zu protokollieren, um die Installation zu überwachen.

Konfiguration

Erstellen des Ansible-Playbooks

So erstellen Sie ein Playbook, das das juniper.device.software Modul verwendet, um ein Software-Image auf einem Junos-Gerät zu installieren:

  1. Fügen Sie die Textbausteine für das Playbook und dieses Stück hinzu, das die Module lokal ausführt.

  2. Definieren oder importieren Sie alle erforderlichen Variablen, in diesem Beispiel unter anderem die gewünschte Junos OS-Version und den Pfad zum neuen Image.

  3. (Optional) Erstellen Sie eine Aufgabe, um die NETCONF-Konnektivität zu überprüfen.

  4. Erstellen Sie den Task, um das Junos OS-Paket auf dem Gerät zu installieren, und benachrichtigen Sie den Handler.

  5. (Optional) Erstellen Sie eine Aufgabe, um die Modulantwort zu drucken.

  6. Erstellen Sie den Handler, der überprüft, ob das Gerät nach dem Neustart wieder online geschaltet wird.

    Der Handlername sollte mit dem Namen identisch sein, auf den in der Installationsaufgabe verwiesen wird.

Befund

Überprüfen Sie auf dem Ansible-Steuerungsknoten das fertige Playbook. Wenn das Playbook den beabsichtigten Code nicht anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um das Playbook zu korrigieren.

Ausführen des Playbooks

So führen Sie das Playbook aus:

  • Geben Sie den ansible-playbook Befehl auf dem Steuerungsknoten ein, und geben Sie den Playbookpfad und alle gewünschten Optionen an.

Verifizierung

Überprüfen Sie die Installation

Zweck

Vergewissern Sie sich, dass die Softwareinstallation erfolgreich war.

Aktion

Die Playbookausgabe sollte alle fehlgeschlagenen Aufgaben anzeigen. Sie können jedoch auch den Inhalt der im Playbook definierten Protokolldatei auf Details zur Installation überprüfen. Hier sehen Sie eine Beispielausgabe für eine Protokolldatei. Einige Ausgaben wurden der Kürze halber weggelassen.

Bedeutung

Der Inhalt der Protokolldatei gibt an, dass das Image erfolgreich kopiert und auf beiden Routing-Modulen auf dem Zielgerät installiert wurde.