المقدمة
يصف هذا وثيقة تشكيل وتوفير من Zero Touch Provisioning (ZTP) على cisco مادة حفازة 9000 sery مفتاح.
المتطلبات الأساسية
المتطلبات
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
- تكوين خادم بروتوكول التكوين الديناميكي للمضيف (DHCP) على المحول
- أساسيات قانون بايثون
- أساسيات خدمة HTTP/TFTP
متطلبات الترخيص
- يجب أن يكون ترخيص ميزة الشبكة أو Network Essentials نشطا.
الأنظمة الأساسية المدعومة
- محولات Catalyst 9300 Series التي تشغل الإصدار 16.5.1a
- محولات Catalyst 9500 Series التي تشغل الإصدار 16.5.1a
- محولات Catalyst 9400 Series التي تشغل الإصدار 16.6.2
ملاحظة: هذه الميزة غير مدعومة في C9600.
المكونات المستخدمة
تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:
- المحول Cisco Catalyst 9300 switch على Cisco IOS® XE 17.6.4
- يعمل المحول Cisco Catalyst 3850 switch كخادم DHCP مع تكوين الخيار 67
- يحتوي المضيف النهائي المثبت مع خدمة HTTP على ملف Python.
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
معلومات أساسية
يتم إستخدام ميزة "التوفير دون لمس (ZTP)" لتزويد أجهزة الشبكة بدقة في غضون دقائق ودون أي تدخل يدوي.
الرسم التخطيطي للشبكة
الإعداد والخطوات الأساسية للإعداد دون لمس
عملية ZTP (الخطوات التفصيلية)
يقوم ZTP بأتمتة تكوين محولات Catalyst 9000 Series مع عدم تكوين بدء التشغيل عند تقديمه إلى الشبكة الموجودة. يحدث هذا دون أي تدخل يدوي. يتم شرح الخطوات التفصيلية هنا:
الخطوة 1. توصيل المحول الجديد
قم بتوصيل محول جديد بالبنية الأساسية الحالية والطاقة الموجودة على الجهاز. يتم تمهيد المحول دون تكوين بدء التشغيل.
الخطوة 2. بدء ZTP
يتم بدء عملية ZTP بواسطة المحول تلقائيا.
الخطوة 3. طلب DHCP
يرسل المحول رسالة اكتشاف DHCP.
الخطوة 4. إستجابة DHCP
يستجيب خادم DHCP مع عرض يتضمن الخيار 67، والذي يحتوي على عنوان IP و URL لخادم HTTP.
الخطوة 5. URL ل HTTP
يتلقى المفتاح العرض ويحصل على عنوان IP لإتصاله الخاص. كما أنها تتلقى عنوان IP الخاص بخادم HTTP وعنوان URL الكامل لتنزيل ملف ztp.py.
الخطوة 6. تنزيل
يصل المحول إلى خادم HTTP وينزل ZTP.py
الملف.
الخطوة 7. قسطرة
يقوم المحول بتنشيط shell تلقائيا.
الخطوة 8. نشر التكوينات
يقوم المحول بتنفيذ ملف Python ويتم تطبيق التكوينات تلقائيا.
الخطوة 9. نجاح
يقوم المحول بتدمير طبقة الأمانscript execution is a success
ويتم عرض الرسالة.
التكوين
إعداد خدمة HTTP
الخطوة 1. تثبيت خدمة HTTP في المضيف النهائي (مثال Linux)
sudo apt update
sudo apt install apache2
الخطوة 2. إنشاء ملف python ztp_http.py
إذا ظهرت أي مشكلة في الأذونات، أستخدمchmod 777
هذا لمنح إذن كامل للملف.
يحتوي ملف Python على التعليمات البرمجية التي تم تكوينها من المهام التالية:
1. إظهار الأوامر.
2. تكوين الاسترجاع.
3. التحقق من التكوين.
كود بايثون
#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"
موقع ملف python.
يجب تخزين هذا الملف تحت /var/www/html
جهاز Linux.
vm: /var/www/html$ ls -l ztp_http.py
-rwxrwxrwx 1 root root 346 Apr 04 14:14 ztp_http.py
الخطوة 3. التحقق من منفذ خدمة HTTP و Listening
أستخدم الأمر service للتحقق من بدء تشغيل خدمة HTTP وتشغيلها الآن.
vm: /var/www/html$ sudo service apache2 status
Active: active (running)
تحقق من المنفذ الذي تستمع إليه خدمة HTTP الآن.
vm: /var/www/html$ sudo netstat -anp | grep apache
tcp6 0 :::80 :::* LISTEN 1998/apache2 <<<< Listens at 80
الخطوة 4. التحقق من متصفح رقم المنفذ
تحقق مما إذا كان الملف قابلا للتنزيل عبر مستعرض الويب.
1. افتح أي متصفح ضمن نفس الجهاز (على سبيل المثال، Linux).
2. أدخل عنوان URL هذا في شريط البحث: localhost:80/ztp_http.py
3. تنزيلات الملفات تلقائيا.
إعداد خدمة DHCP
الخطوة 1. تكوين واجهة الإمداد (جهاز جديد)
من المتوقع أن يكون المحول الجديد متصلا بالجيل 1/0/1.
enable
configure terminal
interface g1/0/1
description New_9300_switch
switchport
switchport mode access
switchport access vlan 1
الخطوة 2. تكوين الواجهة المتصلة بخادم HTTP
خادم HTTP (Linux) متصل مباشرة بالمحول 3850 switch (على سبيل المثال، الواجهة g1/0/2).
enable
configure terminal
interface g1/0/2
description Linux_is_connected_here
switchport
switchport mode access
switchport access vlan 1
الخطوة 3. تكوين نطاق DHCP
مثال على تكوين تجمع DHCP مع الخيار 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
التحقق
لا يوجد حاليًا إجراء للتحقق من صحة هذا التكوين.
سجلات وحدة التحكم العاملة
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
استكشاف الأخطاء وإصلاحها
يوفر هذا القسم معلومات يمكنك استخدامها لاستكشاف أخطاء التكوين وإصلاحها.
المشكلات الشائعة
1. وجود خادم DHCP آخر في الشبكة
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
--- 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
تنصت خدمة HTTP على منافذ مختلفة، مثل 8080، لكن تكوين DHCP للخيار 67 يشير إلى 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. عنوان IP مكرر
تحقق من نطاق DHCP واستبعد عنوان IP الذي تم تعيينه لخادم 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. التحقق من خدمة HTTP، والإيقاف، وإعادة التشغيل
vm: /var/www/html$ sudo service apache2 stop
vm: /var/www/html$ sudo service apache2 start
vm: /var/www/html$ sudo service apache2 status
عينات تفاصيل الحزمة
ملخص تبادل 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
تفاصيل إستجابة HTTP:
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