Inhoud

Inleiding

Voorwaarden

Vereisten

Licentievereisten

Ondersteunde platforms

Gebruikte componenten

Achtergrondinformatie

Netwerkdiagram

ZTP-werking (gedetailleerde stappen)

Stap 1. Sluit de nieuwe Switch aan

Stap 2. ZTP-initiatie

Stap 3. DHCP-verzoek

Stap 4. DHCP-respons

Stap 5. HTTP-URL

Stap 6. Downloaden

Stap 7. Guestshell

Stap 8. Implementatie van configuraties

Stap 9. Succes

Configuratie

HTTP-service instellen

Stap 1. Installeer HTTP-service in end host (voorbeeld Linux)

Stap 2. Python-bestand maken op http.py

Stap 3. Controleer HTTP-service- en -luisterpoort

Stap 4. Browser Verificatie van poortnummer

DHCP-service instellen

Stap 1. Provisioning-interfaceconfiguratie (nieuw apparaat)

Stap 2. Configuratie van HTTP-server Connected Interface

Stap 3. DHCP-toepassingsconfiguratie

Verificatie

Logbestanden met werkconsole

Problemen oplossen

Veelvoorkomende problemen

1. De aanwezigheid van een andere DHCP-server in het netwerk

2. Python-codefout

3. HTTP-servicepoortnummer

4. Dubbel IP-adres

5. Controleer HTTP-service, stop en herstart

Steekproeven met pakketdetails

Inleiding

Dit document beschrijft de configuratie en levering van Zero Touch Provisioning (ZTP) op Cisco Catalyst 9000 Series Switches.

Voorwaarden

Vereisten

Cisco raadt kennis van de volgende onderwerpen aan:

- Dynamic Host Configuration Protocol (DHCP)-serverconfiguratie op de switch

- Basisbeginselen van Python-code

- Basis van HTTP/TFTP-service

Licentievereisten

- Network Advantage of Network Essentials License moet actief zijn.

Ondersteunde platforms

- Catalyst 9300 Series switches met 16.5.1a versie

- Catalyst 9500 Series switches met 16.5.1a versie

- Catalyst 9400 Series switches met 16.6.2 versie

Opmerking: deze optie wordt niet ondersteund in C9600.

Gebruikte componenten

De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:

- Cisco Catalyst 9300 switch op Cisco IOS® XE 17.6.4

- Cisco Catalyst 3850 switch fungeert als DHCP-server met optionele 67-configuratie

- De eindhost die is geïnstalleerd met HTTP-service bevat een Python-bestand.

De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.

Achtergrondinformatie

Zero Touch Provisioning (ZTP) wordt gebruikt om netwerkapparaten nauwkeurig binnen enkele minuten en zonder handmatige tussenkomst te provisioneren.

Netwerkdiagram

Basic Setup en stappen voor Provisioning op nul zetten

ZTP-werking (gedetailleerde stappen)

ZTP automatiseert de configuratie van Catalyst 9000 Series switches zonder opstartconfiguratie wanneer deze in het bestaande netwerk wordt geïntroduceerd. Dit gebeurt zonder handmatige tussenkomst. Gedetailleerde stappen worden hier uitgelegd:

Stap 1. Sluit de nieuwe Switch aan

Sluit een nieuwe switch aan op de bestaande infrastructuur en schakel de stroom in. De switch start op zonder opstartconfiguratie.

Stap 2. ZTP-initiatie

Het ZTP-proces wordt automatisch door de switch gestart.

Stap 3. DHCP-verzoek

De switch stuurt DHCP-detectiebericht.

Stap 4. DHCP-respons

DHCP-server reageert met een aanbod dat optie 67 omvat, die HTTP-server IP en URL heeft.

Stap 5. HTTP-URL

De switch ontvangt het aanbod en krijgt een IP-adres voor zijn eigen communicatie. Het ontvangt ook het IP-adres van de HTTP-server en de volledige URL om het ZTP.py-bestand te downloaden.

Stap 6. Downloaden

De switch bereikt de HTTP server en downloadt het ZTP.py bestand.

Stap 7. Guestshell

De switch activeert de schaal automatisch.

Stap 8. Implementatie van configuraties

Switch voert het Python-bestand uit en configuraties worden automatisch toegepast.

Stap 9. Succes

De switch vernietigt de guestshell en hetscript execution is a successbericht wordt getoond.

Configuratie

HTTP-service instellen

Stap 1. Installeer HTTP-service in end host (voorbeeld Linux)

sudo apt update

sudo apt install apache2

Stap 2. Python-bestand maken op http.py

Als er een probleem met de toestemming is, gebruikt uchmod 777deze om volledige toestemming te geven voor het bestand.

Python-bestand bevat de code die van deze taken is gemaakt:

1. Opdrachten weergeven.

2. Loopback-configuratie.

3. Controle van de configuratie.

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"

Plaats van het python-bestand.

Dit bestand moet onder  /var/www/html  in Linux-machine worden opgeslagen.

vm: /var/www/html$ ls -l ztp_http.py

-rwxrwxrwx 1 root root 346 Apr 04 14:14 ztp_http.py

Stap 3. Controleer HTTP-service- en -luisterpoort

Gebruik de serviceopdracht om te controleren of de HTTP-service nu is gestart en actief is.

vm: /var/www/html$ sudo service apache2 status

Active: active (running)

Controleer naar welke poort de HTTP-service nu luistert.

vm: /var/www/html$ sudo netstat -anp | grep apache

tcp6 0 :::80 :::* LISTEN 1998/apache2               <<<< Listens at 80

Stap 4. Browser Verificatie van poortnummer

Controleer of het bestand via de webbrowser kan worden gedownload.

1. Open elke browser binnen dezelfde machine (bijvoorbeeld Linux).

2. Voer deze URL in op de zoekbalk:  localhost:80/ztp_http.py

3. Downloads van bestanden automatisch.

DHCP-service instellen

Stap 1. Provisioning-interfaceconfiguratie (nieuw apparaat)

De nieuwe switch zal naar verwachting worden aangesloten op G1/0/1.

enable

configure terminal

interface g1/0/1

description New_9300_switch

switchport

switchport mode access

switchport access vlan 1

Stap 2. Configuratie van HTTP-server Connected Interface

HTTP-server (Linux) is rechtstreeks aangesloten op 3850 switch (bijvoorbeeld G1/0/2).

enable

configure terminal

interface g1/0/2

description Linux_is_connected_here

switchport

switchport mode access

switchport access vlan 1

Stap 3. DHCP-toepassingsconfiguratie

Voorbeeld van DHCP-poolconfiguratie met optie 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

Verificatie

Er is momenteel geen verificatieprocedure beschikbaar voor deze configuratie.

Logbestanden met werkconsole

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

Problemen oplossen

Deze sectie bevat informatie waarmee u problemen met de configuratie kunt oplossen.

Veelvoorkomende problemen

1. De aanwezigheid van een andere DHCP-server in het netwerk

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-codefout

--- 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-servicepoortnummer

HTTP-service luistert op verschillende poorten, zoals 8080, maar de DHCP-configuratie voor optie 67 wijst naar 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. Dubbel IP-adres

Controleer het DHCP-bereik en sluit het IP-adres uit dat aan de HTTP-server is toegewezen.

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. Controleer HTTP-service, stop en herstart

vm: /var/www/html$ sudo service apache2 stop

vm: /var/www/html$ sudo service apache2 start

vm: /var/www/html$ sudo service apache2 status

Steekproeven met pakketdetails

HTTP-uitwisselingssamenvatting:

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-respons in 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