El conjunto de documentos para este producto aspira al uso de un lenguaje no discriminatorio. A los fines de esta documentación, "no discriminatorio" se refiere al lenguaje que no implica discriminación por motivos de edad, discapacidad, género, identidad de raza, identidad étnica, orientación sexual, nivel socioeconómico e interseccionalidad. Puede haber excepciones en la documentación debido al lenguaje que se encuentra ya en las interfaces de usuario del software del producto, el lenguaje utilizado en función de la documentación de la RFP o el lenguaje utilizado por un producto de terceros al que se hace referencia. Obtenga más información sobre cómo Cisco utiliza el lenguaje inclusivo.
Cisco ha traducido este documento combinando la traducción automática y los recursos humanos a fin de ofrecer a nuestros usuarios en todo el mundo contenido en su propio idioma. Tenga en cuenta que incluso la mejor traducción automática podría no ser tan precisa como la proporcionada por un traductor profesional. Cisco Systems, Inc. no asume ninguna responsabilidad por la precisión de estas traducciones y recomienda remitirse siempre al documento original escrito en inglés (insertar vínculo URL).
Este documento describe los consejos para la resolución de problemas de las implementaciones iniciales de aprovisionamiento sin intervención (ZTP).
ZTP se introdujo para reducir la interacción humana en el suministro de dispositivos XR. ZTP utiliza una implementación del entorno de ejecución previa al arranque (iPXE).
ZTP puede realizar lo siguiente:
iPXE es una mejora sobre PXE que requiere TFTP/FTP/HTTP para la descarga de imágenes/configuración y utiliza el protocolo de configuración dinámica de host (DHCP) para obtener/proporcionar información para la imagen y la configuración.
En un ejemplo posterior, hay una revisión de una captura de paquetes para confirmar la operación DHCP.
El servidor HTTP debe ser accesible desde la interfaz Ethernet de administración.
Cuando se configura el servidor Linux, realice la verificación de disponibilidad y funcionalidad del servidor DHCP/HTTP.
En esta configuración, un único servidor Linux se utiliza como servidor DHCP/HTTP. Si hay servidores independientes para estas funciones, verifique estos pasos en todos los servidores, si es necesario.
[root@xxxxxxxxxx]# service dhcpd status
Redirecting to /bin/systemctl status dhcpd.service
dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2017-05-29 10:30:59 PDT; 15h ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 26913 (dhcpd)
Status: "Dispatching packets..."
CGroup: /system.slice/dhcpd.service
└─26913 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
<SNIP>
Sugerencia: Algunas líneas fueron eliminadas, utilice -l para mostrarlas en su totalidad.
[root@xxxxxxxx]# service httpd status
Redirecting to /bin/systemctl status httpd.service
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2017-05-26 05:50:30 PDT; 3 days ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 28088 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Process: 11036 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Main PID: 28095 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─11037 /usr/sbin/httpd -DFOREGROUND
├─11038 /usr/sbin/httpd -DFOREGROUND
├─11039 /usr/sbin/httpd -DFOREGROUND
├─11040 /usr/sbin/httpd -DFOREGROUND
├─11041 /usr/sbin/httpd -DFOREGROUND
├─26998 /usr/sbin/httpd -DFOREGROUND
├─27426 /usr/sbin/httpd -DFOREGROUND
├─27427 /usr/sbin/httpd -DFOREGROUND
├─27428 /usr/sbin/httpd -DFOREGROUND
├─27889 /usr/sbin/httpd -DFOREGROUND
└─28095 /usr/sbin/httpd -DFOREGROUND
May 26 05:50:30 xxxxx systemd[1]: Starting The Apache HTTP Server...
May 26 05:50:30 xxxxx systemd[1]: Started The Apache HTTP Server.
May 27 03:16:01 xxxxx systemd[1]: Reloaded The Apache HTTP Server.
May 28 03:37:01 xxxxx systemd[1]: Reloaded The Apache HTTP Server.
Interface MgmtEth 0/RP0/CPU0/0
Ipv4 address dhcp
Shut/no shut
Si DHCP o HTTP no funcionan, puede haber problemas de firewall o de alcance.
Para comprobar las propiedades del firewall en el servidor, ejecute estos comandos o agregue los protocolos específicos:
Utilice el comando de tablas IP para verificar las reglas de firewall:
Iptables –L –n Chain IN_public_allow (1 references) target prot opt source destination ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67 ctstate NEW ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ctstate NEW ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW
Utilice este comando de firewall para enumerar las entradas permitidas:
[root@xxxxxxxxx ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp2s0f0 sources: services: dhcp dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:
Utilice los comandos para permitir permanentemente los puertos:
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=dhcp
Habilitar captura de paquetes en servidor DHCP:
tcpdump –i <interface id> port (bootpc & bootps & port http) –s 0(buffer size) –w <dest. File name> ex: tcpdump -i enp2s0f0 port 67 or port 68 or port 80 -s 0 -w iPXEboot.pcap
Utilice el comando ZTP start exec CLI para invocar ZTP. De forma predeterminada, la interfaz utilizada para ZTP es MGMTEth. Para iniciar este proceso en otras interfaces utilice esta opción:
ZTP initiate interface <type> <number> <cr>
O
Ztp initiate <cr>
1. En Calvados, inicie el comando reload CLI:
Este comando hace que un router se recargue, lo que inicia el arranque iPXE.
Nota: La información de clase de usuario se interpreta como una opción mal formada debido a un error en Wireshark.
2. El router inicia DHCP Discover, observe que la clase de usuario se completa con la opción iPXE:
3. La oferta DHCP del servidor incluye el nombre del archivo de arranque en la opción 67:
4. El router inicia la descarga de la imagen:
5. Una vez descargada la imagen correctamente, comienza la instalación de las imágenes en el dispositivo.
6. Una vez que el router se inicia correctamente con la imagen descargada, inicia otra solicitud DHCP:
En este Descubrimiento, observe que la información de clase de usuario incluye *.exr-config. Dado que el DHCP está configurado para devolver el archivo de configuración o script (ie. Más en etc/dhcp/dhcpd.conf).
7. El servidor DHCP devuelve la información de archivo requerida en la opción 67:
8. El router descarga la configuración:
El script se puede incluir como respuesta del servidor DHCP y hacer que copien la imagen/configuración. Esto también se puede utilizar como un script posterior a la instalación, como en el ejemplo siguiente.
Se puede realizar una automatización posterior a la instalación en el software eXR.
En este ejemplo, esta secuencia de comandos instala todos los paquetes necesarios y aplica la configuración. Esta es una versión ligeramente modificada de ztp_helper.sh. Este script se invoca desde xr-linux-shell:
RP/0/RP0/CPU0:NCS-5502-A#more disk0:/ztp/ztp_helper_file.sh Wed May 31 00:55:54.529 UTC #!/bin/bash ################################################################################ # Install config and additional packages ################################################################################ source /disk0:/ztp/ztp_helper.sh export HTTP_SERVER=http://10.10.10.10 export RPM_PATH=images export CONFIG_PATH=images #Config export INITIAL_CONFIG=NCS-5502-A.cfg export FINAL_CONFIG=NCS-5502-A.cfg #Packages K9SEC_RPM=ncs5500-k9sec-2.2.0.0-r612.x86_64.rpm MCAST_RPM=ncs5500-mcast-2.0.0.0-r612.x86_64.rpm ISIS_RPM=ncs5500-isis-1.1.0.0-r612.x86_64.rpm OSPF_RPM=ncs5500-ospf-1.1.0.0-r612.x86_64.rpm MGBL_RPM=ncs5500-mgbl-3.0.0.0-r612.x86_64.rpm MPLS_RPM=ncs5500-mpls-2.1.0.0-r612.x86_64.rpm MPLSTE_RPM=ncs5500-mpls-te-rsvp-2.2.0.0-r612.x86_64.rpm function download_config(){ ip netns exec tpnns /usr/bin/wget ${HTTP_SERVER}/${CONFIG_PATH}/${FINAL_CONFIG} -O /harddisk:/new-config 2>&1 if [[ "$?" != 0 ]]; then printf "### Error downloading system configuration ###" else printf "### Downloading system configuration complete ###"; fi } function apply_config(){ # Applies initial configuration printf "### Applying initial system configuration ###"; xrapply_with_reason "Initial ZTP configuration" /harddisk:/new-config 2>&1; printf "### Checking for errors ###"; local config_status=$(xrcmd "show configuration failed"); if [[ $config_status ]]; then echo $config_status printf "!!! Error encounter applying configuration file, review the log !!!!"; fi printf "### Applying system configuration complete ###"; } function install_pkg(){ #Download packages printf "Downloading Packages" ip netns exec tpnns /usr/bin/wget ${HTTP_SERVER}/${RPM_PATH}/${K9SEC_RPM} -O /harddisk:/$K9SEC_RPM 2>&1 if [[ "$?" != 0 ]]; then printf "### Error downloading $K9SEC_RPM ###" else printf "### Downloading $K9SEC_PKG complete ###"; fi printf "Downloading Packages" ip netns exec tpnns /usr/bin/wget ${HTTP_SERVER}/${RPM_PATH}/${MCAST_RPM} -O /harddisk:/$MCAST_RPM 2>&1 if [[ "$?" != 0 ]]; then printf "### Error downloading $MCAST_RPM ###" else printf "### Downloading $MCAST_RPM complete ###"; fi printf "Downloading Packages" ip netns exec tpnns /usr/bin/wget ${HTTP_SERVER}/${RPM_PATH}/${ISIS_RPM} -O /harddisk:/$ISIS_RPM 2>&1 if [[ "$?" != 0 ]]; then printf "### Error downloading $ISIS_RPM ###" else printf "### Downloading $ISIS_RPM complete ###"; fi printf "Downloading Packages" ip netns exec tpnns /usr/bin/wget ${HTTP_SERVER}/${RPM_PATH}/${OSPF_RPM} -O /harddisk:/$OSPF_RPM 2>&1 if [[ "$?" != 0 ]]; then printf "### Error downloading $OSPF_RPM ###" else printf "### Downloading $OSPF_RPM complete ###"; fi printf "Downloading Packages" ip netns exec tpnns /usr/bin/wget ${HTTP_SERVER}/${RPM_PATH}/${MGBL_RPM} -O /harddisk:/$MGBL_RPM 2>&1 if [[ "$?" != 0 ]]; then printf "### Error downloading $MGBL_RPM ###" else printf "### Downloading $MGBL_RPM complete ###"; fi printf "Downloading Packages" ip netns exec tpnns /usr/bin/wget ${HTTP_SERVER}/${RPM_PATH}/${MPLS_RPM} -O /harddisk:/$MPLS_RPM 2>&1 if [[ "$?" != 0 ]]; then printf "### Error downloading $MPLS_RPM ###" else printf "### Downloading $MPLS_RPM complete ###"; fi printf "Downloading Packages" ip netns exec tpnns /usr/bin/wget ${HTTP_SERVER}/${RPM_PATH}/${MPLSTE_RPM} -O /harddisk:/$MPLSTE_RPM 2>&1 if [[ "$?" != 0 ]]; then printf "### Error downloading $MPLSTE_RPM ###" else printf "### Downloading $MPLSTE_RPM complete ###"; fi xrcmd "install update source /harddisk:/ $K9SEC_RPM $MCAST_RPM $ISIS_RPM $OSPF_RPM $MGBL_RPM $MPLS_RPM $MPLSTE_RPM" 2>&1 local complete=0 while [ "$complete" = 0 ]; do complete=`xrcmd "show install active" | grep k9sec | head -n1 | wc -l` printf "Waiting for k9sec package to be activated" sleep 5 done rm -f /harddisk:/$K9SEC_RPM /harddisk:/$MCAST_RPM /harddisk:/$MCAST_RPM /harddisk:/$ISIS_RPM /harddisk:/$OSPF_RPM /harddisk:/$MGBL_RPM /harddisk:/$MPLSTE_RPM /harddisk:/$MPLS_RPM printf "### XR PACKAGE INSTALL COMPLETE ###" } printf "Start Auto provision" install_pkg; download_config; apply_config;
Revisión | Fecha de publicación | Comentarios |
---|---|---|
1.0 |
30-Jun-2021 |
Versión inicial |