Table des matières

Introduction

Conditions préalables

Exigences

Exigences de licence

Plates-formes prises en charge

Composants utilisés

Informations générales

Diagramme du réseau

Fonctionnement de ZTP (étapes détaillées)

Étape 1. Connexion du nouveau commutateur

Étape 2. Initiation ZTP

Étape 3. Requête DHCP

Étape 4. Réponse DHCP

Étape 5. URL HTTP

Étape 6. Télécharger

Étape 7. Guestshell

Étape 8. Déploiement des configurations

Étape 9. Succès

Configuration

Configuration du service HTTP

Étape 1. Installer le service HTTP dans l'hôte final (exemple Linux)

Étape 2. Créer un fichier Python ztp_http.py

Étape 3. Vérification du service HTTP et du port d'écoute

Étape 4. Vérification du numéro de port par le navigateur

Configuration du service DHCP

Étape 1. Configuration de l'interface de provisionnement (nouveau périphérique)

Étape 2. Configuration de l'interface connectée du serveur HTTP

Étape 3. Configuration de l'étendue DHCP

Vérification

Journaux de la console de travail

Dépannage

Problèmes courants

1. Présence d'un autre serveur DHCP dans le réseau

2. Erreur de code Python

3. Numéro de port du service HTTP

4. Adresse IP en double

5. Vérifiez le service HTTP, arrêtez et redémarrez

Exemples de détails de paquets

Introduction

Ce document décrit la configuration et la mise en service du provisionnement automatique (ZTP) sur les commutateurs de la gamme Cisco Catalyst 9000.

Conditions préalables

Exigences

Cisco vous recommande de prendre connaissance des rubriques suivantes :

- Configuration du serveur DHCP (Dynamic Host Configuration Protocol) sur le commutateur

- Notions de base du code Python

- Notions de base sur le service HTTP/TFTP

Exigences de licence

- La licence Network Advantage ou Network Essentials doit être active.

Plates-formes prises en charge

- Commutateurs de la gamme Catalyst 9300 exécutant la version 16.5.1a

- Commutateurs de la gamme Catalyst 9500 exécutant la version 16.5.1a

- Commutateurs Catalyst 9400 exécutant la version 16.6.2

Remarque : cette fonctionnalité n'est pas prise en charge dans C9600.

Composants utilisés

Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :

- Commutateur Cisco Catalyst 9300 sur Cisco IOS® XE 17.6.4

- Le commutateur Cisco Catalyst 3850 fait office de serveur DHCP avec une configuration en option 67

- L'hôte final installé avec le service HTTP contient un fichier Python.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.

Informations générales

La mise en service automatique (ZTP) permet de mettre en service les périphériques réseau avec précision en quelques minutes et sans intervention manuelle.

Diagramme du réseau

Configuration et étapes de base du provisionnement sans intervention

Fonctionnement de ZTP (étapes détaillées)

ZTP automatise la configuration des commutateurs de la gamme Catalyst 9000 sans configuration initiale lors de son introduction sur le réseau existant. Cela se produit sans aucune intervention manuelle. Les étapes détaillées sont expliquées ici :

Étape 1. Connexion du nouveau commutateur

Connectez un nouveau commutateur à l'infrastructure existante et mettez le périphérique sous tension. Le commutateur démarre sans configuration de démarrage.

Étape 2. Initiation ZTP

Le processus ZTP est lancé automatiquement par le commutateur.

Étape 3. Requête DHCP

Le commutateur envoie un message de détection DHCP.

Étape 4. Réponse DHCP

Le serveur DHCP répond avec une offre qui inclut l'option 67, avec l'adresse IP et l'URL du serveur HTTP.

Étape 5. URL HTTP

Le commutateur reçoit l'offre et obtient une adresse IP pour sa propre communication. Il reçoit également l'adresse IP du serveur HTTP et l'URL complète pour télécharger le fichier ZTP.py.

Étape 6. Télécharger

Le commutateur accède au serveur HTTP et télécharge le ZTP.py fichier.

Étape 7. Guestshell

Le commutateur active automatiquement le shell d'invité.

Étape 8. Déploiement des configurations

Le commutateur exécute le fichier Python et les configurations sont appliquées automatiquement.

Étape 9. Succès

Le commutateur détruit le guestshell et le messagescript execution is a successs'affiche.

Configuration

Configuration du service HTTP

Étape 1. Installer le service HTTP dans l'hôte final (exemple Linux)

sudo apt update

sudo apt install apache2

Étape 2. Créer un fichier Python ztp_http.py

Si un problème d'autorisation survient, utilisezchmod 777afin de donner une autorisation complète au fichier.

Le fichier Python contient le code fait de ces tâches :

1. Commandes show.

2. Configuration du bouclage.

3. Vérification de la configuration.

Code Python

#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"

Emplacement du fichier python.

Ce fichier doit être stocké sous  /var/www/html  dans une machine Linux.

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

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

Étape 3. Vérification du service HTTP et du port d'écoute

Utilisez la commande service pour vérifier si le service HTTP est démarré et en cours d'exécution.

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

Active: active (running)

Vérifiez avec quel port le service HTTP écoute en ce moment.

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

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

Étape 4. Vérification du numéro de port par le navigateur

Vérifiez si le fichier peut être téléchargé via un navigateur Web.

1. Ouvrez n'importe quel navigateur dans la même machine (par exemple, Linux).

2. Entrez cette URL dans la barre de recherche :  localhost:80/ztp_http.py

3. Téléchargements de fichiers automatiquement.

Configuration du service DHCP

Étape 1. Configuration de l'interface de provisionnement (nouveau périphérique)

Le nouveau commutateur doit être connecté à G1/0/1.

enable

configure terminal

interface g1/0/1

description New_9300_switch

switchport

switchport mode access

switchport access vlan 1

Étape 2. Configuration de l'interface connectée du serveur HTTP

Le serveur HTTP (Linux) est directement connecté au commutateur 3850 (par exemple, l'interface G1/0/2).

enable

configure terminal

interface g1/0/2

description Linux_is_connected_here

switchport

switchport mode access

switchport access vlan 1

Étape 3. Configuration de l'étendue DHCP

Exemple de configuration de pool DHCP avec l'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

Vérification

Aucune procédure de vérification n'est disponible pour cette configuration.

Journaux de la console de travail

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

Dépannage

Cette section fournit des informations que vous pouvez utiliser pour dépanner votre configuration.

Problèmes courants

1. Présence d'un autre serveur DHCP dans le réseau

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. Erreur de code Python

--- 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. Numéro de port du service HTTP

Le service HTTP écoute sur différents ports, par exemple 8080, mais la configuration DHCP de l'option 67 pointe vers 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. Adresse IP en double

Vérifiez l'étendue DHCP et excluez l'adresse IP attribuée au serveur HTTP.

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. Vérifiez le service HTTP, arrêtez et redémarrez

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

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

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

Exemples de détails de paquets

Résumé d'échange HTTP :

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

Réponse HTTP détaillée :

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