Inhalt

Einleitung

Voraussetzungen

Anforderungen

Lizenzanforderungen

Unterstützte Plattformen

Verwendete Komponenten

Hintergrundinformationen

Netzwerkdiagramm

ZTP-Betrieb (detaillierte Schritte)

Schritt 1: Anschluss des neuen Switches

Schritt 2: ZTP-Initiierung

Schritt 3: DHCP-Anforderung

Schritt 4: DHCP-Antwort

Schritt 5: HTTP-URL

Schritt 6: Herunterladen

Schritt 7. Guestshell

Schritt 8: Bereitstellung von Konfigurationen

Schritt 9. Erfolg

Konfiguration

Einrichten des HTTP-Dienstes

Schritt 1: Installieren des HTTP-Service auf dem End-Host (Beispiel: Linux)

Schritt 2: Python-Datei erstellen ztp_http.py

Schritt 3: HTTP-Dienst und Listening-Port überprüfen

Schritt 4: Browser-Überprüfung der Portnummer

Einrichten des DHCP-Service

Schritt 1: Konfiguration der Bereitstellungsschnittstelle (neues Gerät)

Schritt 2: Konfiguration der mit dem HTTP-Server verbundenen Schnittstelle

Schritt 3: DHCP-Bereichskonfiguration

Verifizierung

Protokolle der Arbeitskonsole

Fehlerbehebung

Häufige Probleme

1. Präsenz eines anderen DHCP-Servers im Netzwerk

2. Python-Codefehler

3. HTTP-Service-Portnummer

4. Doppelte IP-Adresse

5. Überprüfung von HTTP-Dienst, Beenden und Neustart

Beispiele für Paketdetails

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 successzeigt 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 777Wenn 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