يصف هذا المستند الخطوات اللازمة لتثبيت Cisco Catalyst 8000V وجلبه على سحابة Stackit التي تنتمي إلى أرقام Schwarz.
cisco مادة حفازة 8000v مسحاج تخديد ظاهري أن يركض cisco ios XE. على StackIT، يتم تحميل الصورة C8000V كصورة مخصصة ويتم إستخدامها لإنشاء وحدة تخزين التمهيد للخادم الظاهري.
أثناء إنشاء الخادم، يضع STACKIT بيانات المستخدم المتوفرة على محرك أقراص config. تقرأ C8000V شريط التمهيد أثناء التمهيد الأولي. يعتمد محتوى بروتوكول تمهيد تشغيل الكمبيوتر (BOOTSTRP) على وضع التشغيل المقصود:
يتم إستخدام نفس الصورة ووحدة التخزين والواجهة وسلسلة إنشاء الخادم لكل الأوضاع الثلاثة. يختلف محتوى بروتوكول نظام تمهيد تشغيل الكمبيوتر (BOOTSTRP) والتحقق من مرحلة ما بعد النشر حسب الوضع.
يمكن أن يحتوي ملف تمهيد تشغيل الكمبيوتر على كلمات مرور أو شهادات أو معلومات هوية جهاز. قم بتخزينه في موقع محمي. لا يقوم تشفير Base64 بتشفير الملف.
تم التحقق من صحة سير عمل النشر في هذا المستند باستخدام إصدارات البرامج التالية ومواصفات StackVM. يوثق هذا الخط الأساسي المختبر بيئة المعمل؛ هو لا يستبدل ال cisco مادة حفازة 8000v حالي إطلاق بطاقة، منصة متطلب، أو سمة-specific تحجيم guidelines.
تم تضمين معايير Stack VM التالية في عملية التحقق من الصحة:
| حجم المثيل |
vCPUs |
الذاكرة (GiB) |
| c3i.4 |
4 |
8 |
| c3i.8 |
8 |
16 |
| c3i.16 |
16 |
32 |
حدد النكهة التي تفي بمتطلبات وحدة المعالجة المركزية (CPU) والذاكرة والإنتاجية والميزات الخاصة بنشر C8000V المخطط له.
قام ضيف C8000V الذي تم التحقق من صحته بالتبليغ عن بيئة المحاكاة الظاهرية StackIT كما يلي:
Router#show platform software system hypervisor
Hypervisor: KVM
Manufacturer: STACKIT Cloud
Product Name: OpenStack Nova
Serial Number: <INSTANCE_UUID>
UUID: <INSTANCE_UUID>
Image Variant: None
Router#
يستخدم هذا الدليل Homebrew لتثبيت واجهة سطر الأوامر للمكدس. تتوفر برامج أخرى لإدارة الحزم وأساليب التثبيت. لمزيد من المعلومات، راجع دليل تثبيت واجهة سطر الأوامر ل StackIt.
brew tap stackitcloud/tap
brew install --cask stackit
قم بتكوين بيئة واجهة سطر الأوامر (CLI) للمكدس قبل تشغيل أوامر النشر.
قم بتسجيل الدخول إلى حساب StackIt الخاص بك.
stackit auth login
أكمل المصادقة في المستعرض لديك. بعد نجاح المصادقة، تؤكد CLI (واجهة سطر الأوامر) أنك قمت بتسجيل الدخول.
قم بتعيين المشروع الافتراضي للأوامر المتبقية.
stackit config set --project-id xxxxxxxx-yyyy-zzzz-aaaa-bbbbbbbbbbbb
إذا لم تكن تعرف معرف المشروع، فقم بسرد المشاريع المتوفرة.
stackit project list
تجميع القيم المطلوبة من قبل النشر. ينشئ المثال شبكتين وبطاقتي واجهة شبكة (NICs): الأولى للإدارة أو النقل والثانية لحركة مرور الخدمة أو البيانات.
export PROJECT_ID="<PROJECT_ID>"
export REGION="<REGION>"
export AVAILABILITY_ZONE="<AVAILABILITY_ZONE>"
export MACHINE_TYPE="<MACHINE_TYPE>"
export SERVER_NAME="<C8000V_NAME>"
export IMAGE_NAME="<C8000V_IMAGE_NAME>"
export IMAGE_FILE="/path/to/<C8000V_IMAGE>.qcow2"
export IMAGE_MIN_DISK_SIZE="<MINIMUM_DISK_GB>"
export BOOT_VOLUME_SIZE="<BOOT_VOLUME_GB>"
export IMAGE_UEFI="<true_or_false>"
export MGMT_NETWORK_NAME="${SERVER_NAME}-mgmt"
export DATA_NETWORK_NAME="${SERVER_NAME}-data"
export MGMT_IPV4_PREFIX="<MANAGEMENT_IPV4_PREFIX>"
export DATA_IPV4_PREFIX="<DATA_IPV4_PREFIX>"
export TRUSTED_SOURCE_CIDR="<TRUSTED_SOURCE_IP_OR_NETWORK>/<PREFIX_LENGTH>"
أستخدم البادئات غير المتداخلة من تصميم الشبكة المعتمد. حدد Trusted_SOURCE_CIDR في تدوين CIDR، بما في ذلك طول البادئة. أستخدم /32 للسماح بعنوان IPv4 واحد. تتيح أمثلة قاعدة الإدارة أدناه ل SSH فقط من Trusted_SOURCE_CIDR.
تحقق من أن الملف هو الصورة المعتمدة للإصدار الذي تم التخطيط له. قم بتسجيل اسم الملف والجملة الاختبارية في سجل النشر.
qemu-img info "$IMAGE_FILE"
if command -v shasum >/dev/null 2>&1; then
shasum -a 256 "$IMAGE_FILE"
else
sha256sum "$IMAGE_FILE"
fi
قم بتعيين IMAGE_UEFI إلى true لصورة EFI أو false لصورة BIOS. حدد الإعداد المحدد لصورة C8000V التي تم تنزيلها. تعيين الحد الأدنى لحجم القرص وفقا للصورة المحددة ووثائق المنتج الحالية.
IMAGE_RESPONSE="$(
stackit image create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--name "$IMAGE_NAME" \
--disk-format qcow2 \
--uefi="$IMAGE_UEFI" \
--min-disk-size "$IMAGE_MIN_DISK_SIZE" \
--local-file-path "$IMAGE_FILE" \
--output-format json
)"
export IMAGE_ID="$(printf '%s' "$IMAGE_RESPONSE" | jq -r '.id')"
printf 'IMAGE_ID=%s\n' "$IMAGE_ID"
stackit image describe "$IMAGE_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--output-format json |
jq '{id, name, status, diskFormat}'
تابع عندما تكون حالة الصورة متاحة.
إنشاء وحدة تخزين تحميل جديدة من الصورة المخصصة. يجب أن يتوافق حجم وحدة التخزين مع متطلبات القرص للصورة المحددة.
BOOT_VOLUME_RESPONSE="$(
stackit volume create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--availability-zone "$AVAILABILITY_ZONE" \
--name "${SERVER_NAME}-boot" \
--source-id "$IMAGE_ID" \
--source-type image \
--size "$BOOT_VOLUME_SIZE" \
--output-format json
)"
export BOOT_VOLUME_ID="$(printf '%s' "$BOOT_VOLUME_RESPONSE" | jq -r '.id')"
printf 'BOOT_VOLUME_ID=%s\n' "$BOOT_VOLUME_ID"
قم باستطلاع وحدة التخزين حتى تتوفر حالتها.
stackit volume describe "$BOOT_VOLUME_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--output-format json |
jq '{id, name, status, size}'
إستخدام الشبكات ومجموعات الأمان الموجودة عندما تفي بالفعل بالتصميم المعتمد. وإلا، فعليك إنشاء الموارد كما هو موضح أدناه.
قم بسرد الشبكات الموجودة قبل إنشاء شبكات جديدة.
stackit network list \
--project-id "$PROJECT_ID" \
--region "$REGION"
في حالة عدم وجود شبكات مناسبة، قم بإنشاء شبكة الإدارة أو النقل والخدمة أو شبكة البيانات.
MGMT_NETWORK_RESPONSE="$(
stackit network create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--name "$MGMT_NETWORK_NAME" \
--ipv4-prefix "$MGMT_IPV4_PREFIX" \
--output-format json
)"
DATA_NETWORK_RESPONSE="$(
stackit network create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--name "$DATA_NETWORK_NAME" \
--ipv4-prefix "$DATA_IPV4_PREFIX" \
--output-format json
)"
export MGMT_NETWORK_ID="$(printf '%s' "$MGMT_NETWORK_RESPONSE" | jq -r '.id')"
export DATA_NETWORK_ID="$(printf '%s' "$DATA_NETWORK_RESPONSE" | jq -r '.id')"
printf 'MGMT_NETWORK_ID=%s\nDATA_NETWORK_ID=%s\n' "$MGMT_NETWORK_ID" "$DATA_NETWORK_ID"
إذا كانت الشبكات المعتمدة موجودة بالفعل، فقم بتعيين MGMT_NETWORK_ID وDATA_NETWORK_ID إلى معرفات هذه الشبكات بدلا من ذلك.
قم بإنشاء مجموعة أمان ذات حالة لبطاقة واجهة الشبكة (NIC) الإدارية.
SECURITY_GROUP_RESPONSE="$(
stackit security-group create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--name "${SERVER_NAME}-mgmt" \
--description "Management access for ${SERVER_NAME}" \
--stateful \
--output-format json
)"
export MGMT_SECURITY_GROUP_ID="$(printf '%s' "$SECURITY_GROUP_RESPONSE" | jq -r '.id')"
printf 'MGMT_SECURITY_GROUP_ID=%s\n' "$MGMT_SECURITY_GROUP_ID"
السماح ب SSH من مصدر CIDR معتمد.
stackit security-group rule create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--security-group-id "$MGMT_SECURITY_GROUP_ID" \
--direction ingress \
--ether-type IPv4 \
--protocol-name tcp \
--port-range-min 22 \
--port-range-max 22 \
--ip-range "$TRUSTED_SOURCE_CIDR" \
--description "SSH from approved source"
لا تقم بإضافة قواعد مستوى البيانات أو التحكم HTTPS أو NetConf أو ICMP أو Cisco SD-WAN إلا عند طلبها بواسطة النشر. قصر كل قاعدة مدخل على أضيق مصدر عملي.
قم بإنشاء بطاقات واجهة الشبكة (NICs) قبل إنشاء الخادم. قم بإرفاق مجموعة أمان الإدارة ببطاقة واجهة الشبكة (NIC) رقم 1 وأرسل معرفات بطاقة واجهة الشبكة (NIC) الناتجة في أمر الواجهة C8000V المقصود.
MGMT_NIC_RESPONSE="$(
stackit network-interface create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--network-id "$MGMT_NETWORK_ID" \
--name "${SERVER_NAME}-mgmt" \
--nic-security \
--security-groups "$MGMT_SECURITY_GROUP_ID" \
--output-format json
)"
DATA_NIC_RESPONSE="$(
stackit network-interface create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--network-id "$DATA_NETWORK_ID" \
--name "${SERVER_NAME}-data" \
--nic-security \
--output-format json
)"
export MGMT_NIC_ID="$(printf '%s' "$MGMT_NIC_RESPONSE" | jq -r '.id')"
export DATA_NIC_ID="$(printf '%s' "$DATA_NIC_RESPONSE" | jq -r '.id')"
printf 'MGMT_NIC_ID=%s\nDATA_NIC_ID=%s\n' "$MGMT_NIC_ID" "$DATA_NIC_ID"
يقوم مثال إنشاء الخادم بإرسال MGMT_NIC_ID أولا ل GigabitEthernet1 وDATA_NIC_ID في الثانية ل GigabitEthernet2. يتم تعيين معرفات NIC إضافية إلى واجهات IOS XE التالية بالترتيب الذي تم تقديمه. تحقق من التعيين الناتج من IOS XE بعد تمهيد الخادم.
قم بتسجيل معرف بطاقة واجهة الشبكة (NIC) ومعرف الشبكة وعنوان MAC وعنوان IP المعين وواجهة IOS XE المقصودة لكل بطاقة واجهة شبكة (NIC).
يقترن عنوان IP العام ببطاقة واجهة شبكة (NIC) معينة. عندما يكون مطلوبا وجود إدارة خارجية، قم بإقرانها ب NIC 1.
حذف هذه الخطوة عندما يتم توفير وصول الإدارة من خلال مسار خاص.
PUBLIC_IP_RESPONSE="$(
stackit public-ip create \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--associated-resource-id "$MGMT_NIC_ID" \
--output-format json
)"
export PUBLIC_IP_ID="$(printf '%s' "$PUBLIC_IP_RESPONSE" | jq -r '.id')"
printf '%s\n' "$PUBLIC_IP_RESPONSE" | jq '{id, ip, associatedResourceId}'
للوضع الذاتي، قم بإنشاء iosxe_config.txt باستخدام أمر تكوين IOS XE لكل سطر.
بالنسبة لوضع وحدة التحكم، قم بإنشاء بروتوكول نظام تمهيد تشغيل Cloud-Init لوضع وحدة التحكم في برنامج Cisco SD-WAN Manager، واستبقي اسم الملف CiscoSDWAN_cloud_init.cfg.
للحصول على وضع توجيه SD، قم بإنشاء بروتوكول نظام تمهيد تشغيل شبكة SD-Routing-Mode Cloud-Init في برنامج Cisco SD-WAN Manager واستبقي اسم الملف ciscoSDWAN_cloud_init.cfg.
لا تقم بتحرير ملف تمهيد تشغيل تم إنشاؤه بواسطة Cisco SD-WAN Manager. يحتوي الملف الذي تم إنشاؤه على هوية الجهاز ومعلومات الإلحاق به ويجب حمايته كقطعة أثرية تحتوي على بيانات اعتماد.
hostname <ROUTER_HOSTNAME>
!
ip domain name <DOMAIN_NAME>
!
username <ADMIN_USER> privilege 15 secret <ADMIN_SECRET>
enable secret <ENABLE_SECRET>
!
interface GigabitEthernet1
description Management
ip address dhcp
no shutdown
!
interface GigabitEthernet2
description Service
no ip address
no shutdown
!
crypto key generate rsa modulus 2048
ip ssh version 2
!
line vty 0 4
login local
transport input ssh
!
end
اضبط المسار على شريط التمهيد المحدد وحد الوصول إلى الملف.
export BOOTSTRAP_FILE="/path/to/<BOOTSTRAP_FILE>"
chmod 600 "$BOOTSTRAP_FILE"
export USER_DATA_B64="$(base64 < "$BOOTSTRAP_FILE" | tr -d '\r\n')"
الإعدادات الخاصة ب C8000V هي configDrive: true، Bootstrap الذي تم ترميزه بالأساس64 في userData، ووحدة تخزين التمهيد المستندة إلى الصور، ومعرفات NIC المطلوبة.
jq -n \
--arg name "$SERVER_NAME" \
--arg machineType "$MACHINE_TYPE" \
--arg availabilityZone "$AVAILABILITY_ZONE" \
--arg bootVolumeId "$BOOT_VOLUME_ID" \
--arg mgmtNicId "$MGMT_NIC_ID" \
--arg dataNicId "$DATA_NIC_ID" \
--arg userData "$USER_DATA_B64" \
'{
name: $name,
machineType: $machineType,
availabilityZone: $availabilityZone,
configDrive: true,
userData: $userData,
bootVolume: {
source: {
type: "volume",
id: $bootVolumeId
}
},
networking: {
nicIds: [$mgmtNicId, $dataNicId]
},
labels: {
product: "cisco-c8000v"
}
}' > c8000v-server.json
راجع الطلب دون عرض شريط التمهيد:
jq 'del(.userData)' c8000v-server.json
أستخدم نقطة النهاية الحالية ل Stackit IAAs v2 الموثقة للبيئة الهدف. إستبدال عنوان URL لواجهة برمجة التطبيقات الخاصة ب StackIt حسب الحاجة.
SERVER_RESPONSE="$(
stackit curl \
-X POST \
"https://<STACKIT API URL>/v2/projects/${PROJECT_ID}/regions/${REGION}/servers" \
-H "Content-Type: application/json" \
--data @c8000v-server.json \
--fail
)"
export SERVER_ID="$(printf '%s' "$SERVER_RESPONSE" | jq -r '.id')"
printf '%s\n' "$SERVER_RESPONSE" | jq '{id, name, status, configDrive}'
مثال على الاستجابة:
{
"id": "<SERVER_ID>",
"name": "<C8000V_NAME>",
"status": "CREATING",
"configDrive": true
}
استبيان حتى يصل الخادم إلى حالة التشغيل المتوقعة.
stackit server describe "$SERVER_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION" \
--output-format json |
jq '{id, name, status, powerStatus}'
تأكيد ما يلي:
اتصل عبر مسار الإدارة المعتمد وقم بتشغيل التحققات المناسبة للإصدار المحدد والوضع.
show version
show platform software vnic-if interface-mapping
show ip interface brief
show ip route
تأكد من أن الوضع المقصود نشط، وتم تطبيق تكوين اليوم-0، وواجهات IOS XE تطابق أمر بطاقة واجهة الشبكة (NIC) الذي تم إرساله.
أوامر إضافية لوضع وحدة التحكم:
show sdwan control connections
show sdwan control local-properties
show sdwan system status
أوامر إضافية لوضع توجيه SD:
show sd-routing control connections summary
show sd-routing control local-properties summary
show sd-routing system status
بعد التحقق، قم بتدوير بيانات اعتماد الإمداد المؤقت وإزالة ملف الطلب المحلي والمتغير المشفر.
rm -f c8000v-server.json
unset USER_DATA_B64
تقوم أوامر التنظيف في هذا القسم بحذف الموارد نهائيا. تأكد من أن النشر لم يعد مطلوبا وأن كل معرف مورد ينتمي فقط إلى عملية النشر C8000V هذه. لا تقم بحذف الشبكات أو مجموعات الأمان أو الصور أو الموارد الأخرى الموجودة أو المشتركة.
تحتفظ أمثلة التنظيف بمطالبات التأكيد التفاعلية. راجع المورد الموضح في كل مطالبة تأكيد واجهة سطر الأوامر ل Stackit قبل الموافقة على العملية.
بالنسبة لوضع وحدة التحكم أو توجيه SD، قم بإكمال أي إيقاف مطلوب للتشغيل من جانب وحدة التحكم قبل حذف موارد Stackit.
قم بمراجعة معرفات الموارد المسجلة قبل المتابعة.
printf 'SERVER_ID=%s\n' "$SERVER_ID"
printf 'PUBLIC_IP_ID=%s\n' "${PUBLIC_IP_ID:-not-created}"
printf 'MGMT_NIC_ID=%s\nDATA_NIC_ID=%s\n' "$MGMT_NIC_ID" "$DATA_NIC_ID"
printf 'BOOT_VOLUME_ID=%s\n' "$BOOT_VOLUME_ID"
printf 'MGMT_SECURITY_GROUP_ID=%s\n' "$MGMT_SECURITY_GROUP_ID"
printf 'MGMT_NETWORK_ID=%s\nDATA_NETWORK_ID=%s\n' "$MGMT_NETWORK_ID" "$DATA_NETWORK_ID"
printf 'IMAGE_ID=%s\n' "$IMAGE_ID"
إذا كان النشر يحتوي على IP عام، فقم بفصله قبل حذف الخادم.
if [ -n "${PUBLIC_IP_ID:-}" ]; then
stackit server public-ip detach "$PUBLIC_IP_ID" \
--server-id "$SERVER_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
fi
احذف الخادم أولا. تابع بعد أن لم يعد الخادم يظهر في قائمة الخوادم.
stackit server delete "$SERVER_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
stackit server list \
--project-id "$PROJECT_ID" \
--region "$REGION"
احذف عنوان IP العام الاختياري، وبطاقتا واجهة الشبكة (NIC) المطلوبة، ووحدة تخزين التمهيد.
if [ -n "${PUBLIC_IP_ID:-}" ]; then
stackit public-ip delete "$PUBLIC_IP_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
fi
stackit network-interface delete "$MGMT_NIC_ID" \
--network-id "$MGMT_NETWORK_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
stackit network-interface delete "$DATA_NIC_ID" \
--network-id "$DATA_NETWORK_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
stackit volume delete "$BOOT_VOLUME_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
إذا تم إنشاء مجموعة أمان الإدارة والشبكات لهذا النشر فقط، فقم بحذفها بعد إختفاء الموارد التابعة لها.
stackit security-group delete "$MGMT_SECURITY_GROUP_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
stackit network delete "$MGMT_NETWORK_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
stackit network delete "$DATA_NETWORK_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
احتفظ بالصورة المخصصة عند إستخدامها من أجل عملية نشر أخرى للطراز C8000v. وإلا، فعليك حذفها بعد إزالة جميع وحدات تخزين التمهيد التابعة.
stackit image delete "$IMAGE_ID" \
--project-id "$PROJECT_ID" \
--region "$REGION"
قم بسرد الموارد المتبقية وتأكد من أن المعرفات المحذوفة لم تعد موجودة. ولا يزال يتعين أن تظهر الموارد المشتركة التي تم الاحتفاظ بها عن قصد.
stackit server list --project-id "$PROJECT_ID" --region "$REGION"
stackit public-ip list --project-id "$PROJECT_ID" --region "$REGION"
stackit volume list --project-id "$PROJECT_ID" --region "$REGION"
stackit security-group list --project-id "$PROJECT_ID" --region "$REGION"
stackit network list --project-id "$PROJECT_ID" --region "$REGION"
stackit image list --project-id "$PROJECT_ID" --region "$REGION"
تأكد من أنه قد تم التعامل مع أي نتائج ملموسة محلية تم الاحتفاظ بها بعد النشر وفقا لنهج الاحتفاظ ببيانات الاعتماد الخاص بالمؤسسة.
# List servers
stackit server list --project-id "$PROJECT_ID" --region "$REGION"
# List volumes
stackit volume list --project-id "$PROJECT_ID" --region "$REGION"
# List custom images
stackit image list --project-id "$PROJECT_ID" --region "$REGION"
# List network interfaces
stackit network-interface list --project-id "$PROJECT_ID" --region "$REGION"
show version
show platform software vnic-if interface-mapping
show ip interface brief
show ip route
show logging
| المراجعة | تاريخ النشر | التعليقات |
|---|---|---|
1.0 |
24-Aug-2026
|
الإصدار الأولي |