Einleitung
Dieses Dokument beschreibt die Konfiguration und Bereitstellung von Zero Touch Provisioning (ZTP) auf Cisco Catalyst Switches der Serie 9000.
Voraussetzungen
Anforderungen
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
- Dynamic Host Configuration Protocol (DHCP)-Serverkonfiguration auf dem Switch
- Grundlagen des Python-Codes
- Grundlagen des HTTP/TFTP-Dienstes
Lizenzanforderungen
- Network Advantage- oder Network Essentials-Lizenz muss aktiviert sein.
Unterstützte Plattformen
- Catalyst Switches der Serie 9300 mit der Version 16.5.1a
- Catalyst Switches der Serie 9500 mit der Version 16.5.1a
- Catalyst Switches der Serie 9400 mit der Version 16.6.2
Hinweis: C960 unterstützt diese Funktion nicht.
Verwendete Komponenten
Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:
- Cisco Catalyst Switch der Serie 9300 mit Cisco IOS® XE 17.6.4
- Der Cisco Catalyst Switch 3850 fungiert als DHCP-Server mit Konfiguration der Option 67.
- Der mit dem HTTP-Dienst installierte End-Host enthält eine Python-Datei.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
Hintergrundinformationen
Zero Touch Provisioning (ZTP) wird verwendet, um Netzwerkgeräte innerhalb von Minuten und ohne manuellen Eingriff präzise bereitzustellen.
Netzwerkdiagramm
Zero-Touch-Bereitstellung - Grundlegende Einrichtung und Schritte
ZTP-Betrieb (detaillierte Schritte)
ZTP automatisiert die Konfiguration von Catalyst Switches der Serie 9000 ohne Startkonfiguration bei der Einführung in das bestehende Netzwerk. Dies geschieht ohne jeden manuellen Eingriff. Die einzelnen Schritte werden hier erläutert:
Schritt 1: Anschluss des neuen Switches
Schließen Sie einen neuen Switch an die vorhandene Infrastruktur an, und schalten Sie das Gerät ein. Der Switch wird ohne Startkonfiguration gestartet.
Schritt 2: ZTP-Initiierung
Der ZTP-Prozess wird automatisch vom Switch initiiert.
Schritt 3: DHCP-Anforderung
Der Switch sendet eine DHCP-Erkennungsmeldung.
Schritt 4: DHCP-Antwort
Der DHCP-Server antwortet mit einem Angebot, das die Option 67 umfasst, die über die IP- und URL-Adresse des HTTP-Servers verfügt.
Schritt 5: HTTP-URL
Der Switch erhält das Angebot und eine IP-Adresse für seine eigene Kommunikation. Es erhält auch die IP-Adresse des HTTP-Servers und die vollständige URL zum Herunterladen der Datei ZTP.py.
Schritt 6: Herunterladen
Der Switch erreicht den HTTP-Server und lädt die ZTP.py
Datei herunter.
Schritt 7. Guestshell
Der Switch aktiviert die Guest Shell automatisch.
Schritt 8: Bereitstellung von Konfigurationen
Switch führt die Python-Datei aus und die Konfigurationen werden automatisch angewendet.
Schritt 9. Erfolg
Der Switch löscht die Guest Shell undscript execution is a success
zeigt eine Meldung an.
Konfiguration
Einrichten des HTTP-Dienstes
Schritt 1: Installieren des HTTP-Service auf dem End-Host (Beispiel: Linux)
sudo apt update
sudo apt install apache2
Schritt 2: Python-Datei erstellen ztp_http.py
chmod 777
Wenn ein Berechtigungsproblem auftritt, verwenden Sie , um der Datei die vollständige Berechtigung zu erteilen.
Die Python-Datei enthält den Code, der aus folgenden Aufgaben besteht:
1. Befehle anzeigen.
2. Loopback-Konfiguration
3. Überprüfung der Konfiguration.
Python-Code
#Importing cli module
import cli
print "\n\n Running show version \n\n"
cli.executep('show version')
print "\n\n Configure a Loopback Interface \n\n"
cli.configurep(["interface loop 25", "ip address 192.168.0.25 255.255.255.255", "end"])
print "\n\n Running show ip interface brief \n\n"
cli.executep('show ip int brief | i up')
print "\n\n ZTP is success \n\n"
Speicherort der Python-Datei.
Diese Datei muss auf /var/www/html
einem Linux-Rechner gespeichert werden.
vm: /var/www/html$ ls -l ztp_http.py
-rwxrwxrwx 1 root root 346 Apr 04 14:14 ztp_http.py
Schritt 3: HTTP-Dienst und Listening-Port überprüfen
Verwenden Sie den Befehl service, um zu überprüfen, ob der HTTP-Dienst gestartet wurde und jetzt ausgeführt wird.
vm: /var/www/html$ sudo service apache2 status
Active: active (running)
Überprüfen Sie, mit welchem Port der HTTP-Dienst gerade auf Verbindungen wartet.
vm: /var/www/html$ sudo netstat -anp | grep apache
tcp6 0 :::80 :::* LISTEN 1998/apache2 <<<< Listens at 80
Schritt 4: Browser-Überprüfung der Portnummer
Überprüfen Sie, ob die Datei über einen Webbrowser heruntergeladen werden kann.
1. Öffnen Sie einen beliebigen Browser auf demselben Computer (z. B. Linux).
2. Geben Sie diese URL in die Suchleiste ein: localhost:80/ztp_http.py
3. Datei wird automatisch heruntergeladen.
Einrichten des DHCP-Service
Schritt 1: Konfiguration der Bereitstellungsschnittstelle (neues Gerät)
Der neue Switch wird voraussichtlich mit G1/0/1 verbunden.
enable
configure terminal
interface g1/0/1
description New_9300_switch
switchport
switchport mode access
switchport access vlan 1
Schritt 2: Konfiguration der mit dem HTTP-Server verbundenen Schnittstelle
Der HTTP-Server (Linux) ist direkt mit dem Switch 3850 verbunden (z. B. Schnittstelle G1/0/2).
enable
configure terminal
interface g1/0/2
description Linux_is_connected_here
switchport
switchport mode access
switchport access vlan 1
Schritt 3: DHCP-Bereichskonfiguration
Beispiel einer DHCP-Pool-Konfiguration mit Option 67.
enable
configure terminal
ip dhcp pool ZTP_Pool
network 10.0.0.0 255.255.255.0
default-router 10.0.0.1
option 67 ascii http://10.0.0.2:80/ztp_http.py
end
Verifizierung
Für diese Konfiguration ist derzeit kein Überprüfungsverfahren verfügbar.
Protokolle der Arbeitskonsole
No startup-config, starting autoinstall/pnp/ztp...
Autoinstall will terminate if any input is detected on console
--- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]: <<<< Do not provide any input during this time.
Autoinstall trying DHCPv6 on Vlan1
Autoinstall trying DHCPv4 on Vlan1
Acquired IPv4 address 10.0.0.10 on Interface Vlan1
Received following DHCPv4 options:
bootfile : http://10.0.0.2:80/ztp_http.py
stop Autoip process
OK to enter CLI now...
pnp-discovery can be monitored without entering enable mode
Entering enable mode will stop pnp-discovery
Attempting bootfile http://10.0.0.2:80/ztp_http.py
Loading http://10.0.0.2:80/ztp_http.py
Loading http://10.0.0.2:80/ztp_http.py day0guestshell activated successfully
Current state is: ACTIVATED
day0guestshell started successfully
Current state is: RUNNING
Guestshell enabled successfully
Running show version <<<< show command executed
Cisco IOS XE Software, Version 17.06.04
Cisco IOS Software [Bengaluru], Catalyst L3 Switch Software (CAT9K_IOSXE), Version 17.6.4, RELEASE SOFTWARE (fc1)
<snipped>
Model Number : C9300L-48T-4X
System Serial Number : FOC2531LGM8
CLEI Code Number :
Switch Ports Model SW Version SW Image Mode
------ ----- ----- ---------- ---------- ----
* 1 53 C9300L-48T-4X 17.06.04 CAT9K_IOSXE BUNDLE
Configure a Loopback interface <<<< configuration
Line 1 SUCCESS: interface loop 25
Line 2 SUCCESS: ip address 192.168.0.25 255.255.255.255
Line 3 SUCCESS: end
Running show ip int brief <<<< Config Verification
Vlan1 10.0.0.10 YES DHCP up up
Vlan4094 192.168.2.1 YES manual up down
GigabitEthernet0/0 unassigned YES unset up up
GigabitEthernet1/0/2 unassigned YES unset up up
GigabitEthernet1/0/3 unassigned YES unset up up
Ap1/0/1 unassigned YES unset up up
Loopback25 192.168.0.25 YES other up up
ZTP is success
Guestshell destroyed successfully
Script execution success! <<<< Success
Fehlerbehebung
In diesem Abschnitt finden Sie Informationen zur Behebung von Fehlern in Ihrer Konfiguration.
Häufige Probleme
1. Präsenz eines anderen DHCP-Servers im Netzwerk
No startup-config, starting autoinstall/pnp/ztp...
Autoinstall will terminate if any input is detected on console
--- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]:
Autoinstall trying DHCPv6 on Vlan1
Autoinstall trying DHCPv4 on Vlan1
Acquired IPv4 address 192.168.45.117 on Interface Vlan1 <<<< Gets Different IP from another DHCP server.
Received following DHCPv4 options:
hostname : Switch
stop Autoip process
OK to enter CLI now...
pnp-discovery can be monitored without entering enable mode
Entering enable mode will stop pnp-discovery
Guestshell destroyed successfully
stop Autoip process
% Please answer 'yes' or 'no'.
Would you like to enter the initial configuration dialog? [yes/no]: no
2. Python-Codefehler
--- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]:
Autoinstall trying DHCPv6 on Vlan1
Autoinstall trying DHCPv4 on Vlan1
Acquired IPv4 address 10.106.37.69 on Interface Vlan1
Received following DHCPv4 options:
bootfile : http://10.106.37.59:80/ztp_http.py
stop Autoip process
OK to enter CLI now...
pnp-discovery can be monitored without entering enable mode
Entering enable mode will stop pnp-discovery
Attempting bootfile http://10.106.37.59:80/ztp_http.py
Loading http://10.106.37.59:80/ztp_http.py
Loading http://10.106.37.59:80/ztp_http.py day0guestshell activated successfully
Current state is: ACTIVATED
day0guestshell started successfully
Current state is: RUNNING
Guestshell enabled successfully
File "/bootflash/guest-share/downloaded_script.py", line 1
print "\n\n Running show version \n\n"
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("\n\n Running show version \n\n")? <<<< Code Error
Guestshell destroyed successfully
Script execution success!
3. HTTP-Service-Portnummer
Der HTTP-Service überwacht verschiedene Ports, z. B. 8080, aber die DHCP-Konfiguration für Option 67 verweist auf 80.
enable
configure terminal
ip dhcp excluded-address 10.0.0.2
ip dhcp pool ZTP_Pool
network 10.0.0.0 255.255.255.0
default-router 10.0.0.1
option 67 ascii http://10.0.0.2:80/ztp_http.py <<<< Change to 8080
4. Doppelte IP-Adresse
Überprüfen Sie den DHCP-Bereich, und schließen Sie die IP-Adresse aus, die dem HTTP-Server zugewiesen ist.
enable
configure terminal
ip dhcp excluded-address 10.0.0.2 <<<< Exclude HTTP server address.
ip dhcp pool ZTP_Pool
network 10.0.0.0 255.255.255.0
default-router 10.0.0.1
option 67 ascii http://10.0.0.2:80/ztp_http.py
5. Überprüfung von HTTP-Dienst, Beenden und Neustart
vm: /var/www/html$ sudo service apache2 stop
vm: /var/www/html$ sudo service apache2 start
vm: /var/www/html$ sudo service apache2 status
Beispiele für Paketdetails
HTTP-Austauschübersicht:
10.0.0.10 10.0.0.2 HTTP 183 GET /http_ztp.py HTTP/1.1 <<<< HTTPGETrequest
10.0.0.2 10.0.0.10 HTTP 245 HTTP/1.1 200 OK (text/x-python) <<<< Response
HTTP-Antwort im Detail:
Hypertext Transfer Protocol
HTTP/1.1 200 OK\r\n
Content-Type: text/x-python\r\n
Content-Length: 20\r\n
Date: Tue, 04 Apr 2023 12:24:02 GMT\r\n
Connection: keep-alive\r\n
Keep-Alive: timeout=5\r\n
\r\n
[HTTP response 1/2]
[Time since request: 0.204568243 seconds]
[Request in frame: 21]
[Next request in frame: 25]
[Next response in frame: 26]
[Request URI: http://10.0.0.2:80/http_ztp.py] >>>> URL