المقدمة
يصف هذا المستند كيفية تكوين وحدة التحكم في الإدارة المتكاملة (CIMC) من Cisco من خلال وحدة واجهة برمجة تطبيقات REST الافتراضية.
المتطلبات الأساسية
المتطلبات
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
المكونات المستخدمة
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
نظرة عامة على واجهة برمجة تطبيقات CIMC
يتم تمثيل جميع المكونات المادية والمنطقية التي تشكل Cisco UCS في نموذج معلومات إدارة هرمي (MIM)، ويشار إليه أيضا باسم MIT. تمثل كل عقدة في الشجرة كائن مدار (MO) أو مجموعة من الكائنات التي تحتوي على حالتها الإدارية وحالتها التشغيلية.
يبدأ الهيكل الهرمي من الأعلى (sys) ويحتوي على العقد الأصل والتابعة. كل عقدة في هذه الشجرة هي كائن تتم إدارته ويكون لكل كائن في Cisco UCS اسم مميز فريد (DN) يصف الكائن ومكانه في الشجرة. تعد الكائنات المدارة تجريدات لموارد Cisco UCS، مثل وحدات المعالجة المركزية (CPU) و DIMM وبطاقات المهايئات والمراوح ووحدات إمداد الطاقة.
مثال على بنية CIMC MIM:
|——sys———————————––– (sys)
|——rack-unit-1————————(sys/rack-unit-1)
|——adaptor-1————————(sys/rack-unit-1/adaptor-1)
|——psu-1————————(sys/rack-unit-1/psu-1)
|——psu-2————————(sys/rack-unit-1/psu-2)
تسمية الكائن:
- dn: يتيح لك الاسم المميز تعريف كائن هدف بشكل لا لبس فيه.
- رينالد: يعرف الاسم النسبي كائن ضمن سياق الكائن الأصلي الخاص به.
على سبيل المثال، هذا الاسم المميز:
<dn = "sys/rack-unit-1/adaptor-1/host-eth-eth2"/>
يتكون من أربعة أسماء نسبية:
topSystem MO: rn="sys"
computeRackUnit MO: rn ="rack-unit-1"
adaptorUnit MO: rn="adaptor-<id>"
adaptorHostEthIf MO: rn="host-eth-<id>"
واجهة برمجة التطبيقات (API) المستخدمة في هذه المقالة:
-
المصادقة: aaaLogin. الطريقة الأولية لتسجيل الدخول. أستخدم أسلوب aaaLogin للحصول على ملف تعريف إرتباط صالح.
-
استعلام: configResolveDn. يسترجع الكائنات حسب DN.
-
التكوين: configConfMo. يتم إستخدام طريقة configConfMo لتكوين خاصية واحدة أو أكثر في كائن مدار (MO). يتم تعريف المذكرة المراد تكوينها بشكل فريد باسم مميز (DN).
ملاحظة:
تتضمن العديد من أساليب الاستعلام وسيطة inHierarchical تقبل قيمة منطقية (true/yes أو false/no). عند التعيين إلى true، تتسبب هذه الوسيطة في إرجاع الأسلوب لكافة الكائنات التابعة ضمن التدرج الهرمي.
التكوينات
1. العثور على الفئة أو DN للكائن المدار (MO) الخاص ب CIMC
لأتمتة تكوين CIMC عبر واجهة برمجة التطبيقات الخاصة به، من الضروري تحديد معلومات الفئة أو الاسم المميز (DN) المحددة المقترنة بالكائنات المدارة (MOs) التي ترغب في تكوينها.
1 أ. أستخدم واجهة برمجة التطبيقات لتسجيل الدخول إلى CIMC واسترداد معلومات ملف تعريف الارتباط
قم بإرسال طلب POST إلى https://{{apic_cimc_ip}}/nuova وحدد أسلوب AAAlogin. أدخل اسم مستخدم وكلمة مرور.
انسخ ملف تعريف الارتباط من إستجابة واجهة برمجة التطبيقات (API).

وبدلا من ذلك، يمكنك إستخدام مفتاح التحكم لجلب معلومات ملف تعريف الارتباط.
curl -k -d "" https://apic_cimc_ip/nuova
1 مليا. إستخدام أسلوب استعلام API configResolveDn لاسترداد جميع معلومات الكائن المدار (MO)
عند إستخدام configResolveDn مع inHierarchical="true" وdn="sys/"، فإنه يسترجع جميع معلومات الكائن المدار (MO) من CIMC.
configResolveDn: يسترجع الأسلوب configResolveDn كائن مدار واحد ل DN محدد.
inHierarchical=true: عند تعيينه إلى true، فإنه يرجع كافة معلومات العقد التابعة. تتيح هذه المجموعة إمكانية إحضار جميع العقد والعقد الفرعية معلومات MO من CIMC.
dn="sys/": هذا هو الجذر العلوي ل MIT.
إستجابة واجهة برمجة التطبيقات:

انسخ إستجابة تطبيق PostMan للتنفيذ إلى محرر نصوص مثل Notepad أو PyCharm أو Visual Studio Code للبحث اللاحق في الفئة و DN استنادا إلى MO.
مثال 1: الاستعلام عن الفئة و DN للمنطقة الزمنية
المنطقة الزمنية التي تم تكوينها في واجهة المستخدم الرسومية (GUI) الحالية ل CIMC هي "آسيا/شنغهاي".

ابحث عن 'آسيا/شنغهاي' من النتائج التي رجعها بوستمان في الخطوة 1 ب. المنطقة الزمنية هي "آسيا/شنغهاي"، والفئة هي "أعلى نظام"، والشبكة الرقمية هي "sys/".
<configResolveDn cookie="85da25da6c/c6f2adca-5d27-ba55-a780-9e33548f595c" response="yes" dn="sys/">
<outConfig>
<topSystem dn="sys" address="a.b.c.d" currentTime="Wed Apr 10 01:05:12 2024
" localTime="Wed Apr 10 09:05:12 2024 CST +0800" timeZone="Asia/Shanghai"mode="stand-alone" name="dlc-aci01-apic1" fipsEnable="disabled" ccEnable="disabled" >
مثال 2: الاستعلام عن الفئة و DN لاسم المضيف
اسم المضيف الذي تم تكوينه في واجهة المستخدم الرسومية (GUI) الحالية ل CIMC هو "dlc-aci01-apic1".

ابحث عن "dlc-aci01-apic1" في النتائج التي أرجعها ساعي البريد. اسم المضيف هو "dlc-aci01-apic1"، والفصل هو "mgmtIf"، والشبكة اللاسلكية هي "if-1".
<mgmtIf rn="if-1" description="Management Interface Network Settings" id="1" extEnabled="yes" extIp="a.b.c.d" extMask="255.255.255.0" extGw="a.b.c.z"
ifType="physical" mac="00:A3:8E:E3:7A:DC" hostname="dlc-aci01-apic1"dhcpEnable="no" dnsUsingDhcp="no" ddnsEnable="yes" ddnsDomain=""
dnsPreferred="a.b.c.z" dnsAlternate="0.0.0.0" ddnsRefreshInterval="0" nicMode="dedicated" vicSlot="0" nicRedundancy="none"
vlanEnable="no" vlanId="1" vlanPriority="0" portProfile="" v6extEnabled="no" v6extIp="::" v6extGw="::" v6prefix="64" v6linkLocal="::"
v6SlaacIp="::" v6dhcpEnable="no" v6dnsUsingDhcp="no" v6dnsPreferred="::" v6dnsAlternate="::" subject="blade" autoNeg="enabled"
adminNetSpeed="auto" adminDuplex="auto" operNetSpeed="1Gbps" operDuplex="full" >
بعد ذلك، قم باستعلام CIMC Visore من https://CIMC_IP/visore.html، ويتوافق اسم المضيف "dlc-aci01-apic1" مع DN= "sys/rack-unit-1/mgmt/if-1'.

2. إدارة CIMC عبر واجهة برمجة تطبيقات REST
-
في الخطوة 1، لقد قمت بالفعل بتعريف الفئة والاسم المميز (DN) المطابق للكائن المدار (MO).
-
يمكنك إستخدام الوحدة النمطية Ansible community.general.imc_rest لإدارة CIMC عبر API. تشير معلومات التفاصيل إلى: وثائق IMC_REST_MODULE
إستخدام أسلوب API configResolveClass لاسترداد المعلومات
configResolveClass: يسترجع الأسلوب كائن مدار في فئة معينة. إذا كان InHierarchical=true، تحتوي النتائج على توابع. ومثال على ذلك الاستعلام عن إصدار البرامج الثابتة، أستخدم أسلوب API configResolveClass وحدد معرف الفئة الخاص بالأمر.
إخراج محتوى برنامج نصي غير قابل للتطبيق:
- name: IMC login and check
community.general.imc_rest:
hostname: '{{ imc_hostname }}'
username: '{{ imc_username }}'
password: '{{ imc_password }}'
validate_certs: false # only do this when you trust the network!
content: |
<configResolveClassinHierarchical='false'classId='firmwareRunning'/>
إستخدام أسلوب API configConfMo لتعديل التكوين
لتعديل تكوين MO باستخدام واجهة برمجة تطبيقات CIMC، أستخدم طريقة configConfMo. تم تصميم هذه الطريقة لتكوين إعدادات الأمر MO المحدد أو تعديلها. عند إستدعاء configConfMo، من المهم توفير معلومات الفئة أو DN الدقيقة الخاصة ب MO الذي ترغب في تعديله.

إخراج محتوى برنامج نصي غير قابل للتطبيق:
- name: change CIMC description
community.general.imc_rest:
hostname: '{{ imc_hostname }}'
username: '{{ imc_username }}'
password: '{{ imc_password }}'
validate_certs: false
content: |
<computeRackUnit dn="sys/rack-unit-1" usrLbl="new_lab_CIMC_description"/>
examples:
3. مثال سير عمل تكوين أتمتة CIMC
برنامج APIC من Cisco هو برنامج وحدة التحكم في الوصول للبنية الأساسية (ACI) المثبت على سلسلة UCS C220. يوضح سير العمل العملية الآلية لإعادة تصوير برنامج APIC.
1. Login to CIMC with pre-check
- Retrieve firmware version
- Retrieve faults
- Retrieve TPM status
2. Update CIMC configurations
- Update management hostname
- Update Description
- Update Timezone
- Update ntp
- Enable SOL
- Update CIMC mapping vmedia
- Update CIMC boot order to CIMC-map
- Reboot CIMC
3. Ansible run shell expect to monitor installation status and enter iso link for APIC installation speed up
4. Retrieve CIMC post installation status
- Update CIMC boot order back to HDD
- Power-on host
مثال على الوحدة غير القابلة للتشغيل:
ملاحظة: يتضمن المثال معلومات المحتوى فقط، تشير وحدة التحكم الكاملة غير القابلة للإستخدام إلى وحدة community.general.imc_rest من موقع الويب الرسمي Ansible
- name: Login to CIMC with pre-check
content: |
<configResolveClass inHierarchical='false' classId='firmwareRunning'/>
<configResolveClass inHierarchical='false' classId='faultInst'/>
<configResolveClass inHierarchical='false' classId='equipmentTpm'/>
- name: IMC update CIMC infra info
content: |
<mgmtIf dn="sys/rack-unit-1/mgmt/if-1" hostname="dlc-aci01-apic1"/>
<computeRackUnit dn="sys/rack-unit-1" usrLbl="ACI Lab - POD01 - dlc-aci01-apic1"/>
<topSystem dn="sys" timeZone="Asia/Shanghai"/>
<commNtpProvider dn="sys/svc-ext/ntp-svc" ntpServer1="ntp.esl.cisco.com"/>
- name: Update CIMC configurations
content: |
<lsbootVMedia dn="sys/rack-unit-1/boot-precision/vm-CIMC-map" name="CIMC-map" type="VMEDIA" subtype="cimc-mapped-dvd" order="1" state="Enabled" />
<commVMediaMap volumeName="ACI-automation" map="www" remoteShare="http://a.b.c.d/Images/ACI/4/4.2/" remoteFile="aci-apic-dk9.4.2.6l.iso" dn="sys/svc-ext/vmedia-svc/vmmap-ACI-automation" >
<computeRackUnit dn="sys/rack-unit-1" adminPower="hard-reset-immediate" />
# Ansible run shell expect to monitor installation status and enter iso link for APIC installation speed up
- name: copy apic init script to
template:
src: "init.sh"
dest: /tmp/init.sh
delegate_to: localhost
- name: Make script executable
file:
path: /tmp/init.sh
mode: "+x"
delegate_to: localhost
tags:
- render
- init
- name: Run the generated script
command: /tmp/init.sh
delegate_to: localhost
changed_when: no
tags:
- script
- name: Retrieve CIMC post installation status
content: |
<lsbootVMedia dn="sys/rack-unit-1/boot-precision/vm-CIMC-map" name="CIMC-map" status='removed'/>
<commVMediaMap dn="sys/svc-ext/vmedia-svc/vmmap-ACI-automation" volumeName="ACI-automation" status='removed' >
<lsbootStorage dn="sys/rack-unit-1/boot-policy/storage-read-write" access="read-write" order="1" type="storage"/>
<computeRackUnit dn="sys/rack-unit-1" adminPower="up" />
delegate_to: localhost
tags:
- retrieve_CIMC_status
معلومات ذات صلة
دليل مبرمج Cisco UCS للخوادم المثبتة على حامل Cisco IMC XML API
community.general.imc_rest module - إدارة أجهزة Cisco IMC من خلال REST API الخاص بها
UCS Manager Information Model Reference