Introdução
Este documento descreve a configuração e o provisionamento Zero Touch Provisioning (ZTP) em Cisco Catalyst 9000 Series Switches.
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Configuração do servidor DHCP no switch
- Conceitos básicos do código Python
- Conceitos básicos do serviço HTTP/TFTP
Requisitos de licença
- A licença do Network Advantage ou do Network Essentials deve estar ativa.
Plataformas suportadas
- Catalyst 9300 Series Switches executando a versão 16.5.1a
- Catalyst 9500 Series Switches executando a versão 16.5.1a
- Catalyst 9400 Series Switches executando a versão 16.6.2
Observação: esse recurso não é suportado no C9600.
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Switch Cisco Catalyst 9300 no Cisco IOS® XE 17.6.4
- O switch Cisco Catalyst 3850 atua como um servidor DHCP com configuração de opção 67
- O host final instalado com o serviço HTTP contém um arquivo Python.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
O ZTP (Zero Touch Provisioning) é usado para provisionar dispositivos de rede com precisão em minutos e sem qualquer intervenção manual.
Diagrama de Rede
Configuração e etapas básicas do provisionamento automatizado
Operação do ZTP (etapas detalhadas)
O ZTP automatiza a configuração dos Catalyst 9000 Series Switches sem configuração de inicialização quando é introduzido na rede existente. Isso acontece sem qualquer intervenção manual. As etapas detalhadas são explicadas aqui:
Etapa 1. Conectar o novo switch
Conecte um novo switch à infraestrutura existente e ligue o dispositivo. O switch é inicializado sem nenhuma configuração de inicialização.
Etapa 2. Iniciação de ZTP
O processo ZTP é iniciado automaticamente pelo switch.
Etapa 3. Solicitação DHCP
O switch envia uma mensagem de descoberta DHCP.
Etapa 4. Resposta DHCP
O servidor DHCP responde com uma oferta que inclui a opção 67, que tem o IP e o URL do servidor HTTP.
Etapa 5. URL HTTP
O switch recebe a oferta e obtém um endereço IP para sua própria comunicação. Ele também recebe o endereço IP do servidor HTTP e o URL completo para fazer download do arquivo ZTP.py.
Etapa 6. Download
O switch acessa o servidor HTTP e faz o download do ZTP.py
arquivo.
Passo 7. Concha de convidado
O switch ativa o guestshell automaticamente.
Etapa 8. Implantação de configurações
O switch executa o arquivo Python e as configurações são aplicadas automaticamente.
Etapa 9. Sucesso
O switch destrói a concha de convidado escript execution is a success
a mensagem é exibida.
Configuração
Configurando o serviço HTTP
Etapa 1. Instalar o Serviço HTTP no Host Final (Exemplo Linux)
sudo apt update
sudo apt install apache2
Etapa 2. Criar arquivo Python ztp_http.py
Se algum problema de permissão surgir, usechmod 777
para conceder permissão completa ao arquivo.
O arquivo Python contém o código destas tarefas:
1. Comandos show.
2. Configuração de loopback.
3. Verificação da configuração.
Código 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"
Localização do arquivo python.
Este arquivo deve ser armazenado em na máquina Linux/var/www/html
.
vm: /var/www/html$ ls -l ztp_http.py
-rwxrwxrwx 1 root root 346 Apr 04 14:14 ztp_http.py
Etapa 3. Verificar Serviço HTTP e Porta de Escuta
Use o comando service para verificar se o serviço HTTP foi iniciado e está em execução agora.
vm: /var/www/html$ sudo service apache2 status
Active: active (running)
Verifique com qual porta o serviço HTTP está escutando agora.
vm: /var/www/html$ sudo netstat -anp | grep apache
tcp6 0 :::80 :::* LISTEN 1998/apache2 <<<< Listens at 80
Etapa 4. Verificação do número da porta pelo navegador
Verifique se o arquivo pode ser baixado pelo navegador da Web.
1. Abra qualquer navegador na mesma máquina (por exemplo, Linux).
2. Informe este URL na barra de pesquisa: localhost:80/ztp_http.py
3. O arquivo é baixado automaticamente.
Configurando o serviço DHCP
Etapa 1. Configuração da interface de provisionamento (novo dispositivo)
Espera-se que o novo switch seja conectado a G1/0/1.
enable
configure terminal
interface g1/0/1
description New_9300_switch
switchport
switchport mode access
switchport access vlan 1
Etapa 2. Configuração da Interface Conectada do Servidor HTTP
O servidor HTTP (Linux) está conectado diretamente ao switch 3850 (por exemplo, interface G1/0/2).
enable
configure terminal
interface g1/0/2
description Linux_is_connected_here
switchport
switchport mode access
switchport access vlan 1
Etapa 3. Configuração de Escopo DHCP
Exemplo de configuração do pool DHCP com a opção 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
Verificação
No momento, não há procedimento de verificação disponível para esta configuração.
Logs do console de trabalho
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
Troubleshooting
Esta seção fornece informações que podem ser usadas para o troubleshooting da sua configuração.
Problemas comuns
1. Outra Presença do Servidor DHCP na Rede
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. Erro de Código 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. Número da Porta do Serviço HTTP
O serviço HTTP está escutando em portas diferentes, como 8080, mas a configuração DHCP para a opção 67 está apontando para 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. Endereço IP duplicado
Verifique o escopo do DHCP e exclua o endereço IP atribuído ao servidor 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. Verificar o Serviço HTTP, Parar e Reiniciar
vm: /var/www/html$ sudo service apache2 stop
vm: /var/www/html$ sudo service apache2 start
vm: /var/www/html$ sudo service apache2 status
Amostras de detalhes do pacote
Resumo do intercâmbio 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
Resposta HTTP em detalhes:
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