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 success
bericht 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 777
deze 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