PowerEdge: eksplorowanie WSMAN poza wyliczeniem
Summary: System operacyjny i rozwiązania w zakresie aplikacji Dell w witrynie Dell TechCenter — Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu i inne
Symptoms
stwierdziłem, że staje się to skomplikowane po początkowej akcji wyliczania. Nie ma dokumentacji ani przykładów na temat wywoływania akcji get/put/create/delete/custom z odpowiednimi właściwościami klucza. Podstawowym źródłem tych informacji jest specyfikacja WSMAN DMTF i specyfikacja powiązania WSMAN-CIM, które są boleśnie długie. Ponownie, większość treści tego artykułu pochodzi ze specyfikacji DMTF. Jest to próba przetrawienia tych informacji za pomocą kilku przykładów (na Linuksie).
Opracowanie na temat sposobu rozpoczęcia pracy z SFCB i openwsman zostało przeze mnie opublikowane pod adresem https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Jeśli dopiero zaczynasz korzystać z WSMAN i SFCB, plik pdf będzie lepszym punktem wyjścia niż ten artykuł. Jak w powyższym raporcie, w tym artykule
omówiono przede wszystkim implementacje CIMOM openwsman i SFCB Czy teraz, biorąc pod uwagę serwer WSMAN, istnieje sposób na wyświetlenie listy wszystkich komponentów, którymi można zarządzać za pomocą wsman API? Większość serwerów WSMAN komunikuje się z CIMOM na zapleczu i udostępnia funkcje zarządzania CIMOM. Oznacza to, że możliwości zarządzania serwera WSMAN zależą od dostawców CIM zarejestrowanych dla CIMOM w backendzie. CIMOM ma funkcję wewnętrzną o zdefiniowanej nazwie EnumerateClassNames, która może zostać wywoływana w celu wyświetlenia listy wszystkich klas zarejestrowanych w CIMOM.
Cause
Resolution
Nieodłącznym elementem CIMOM EnumerateClassNames można wywołać w następujący sposób za pomocą polecenia: wsmancli:
wsman invoke -a EnumerateClassNames --hostname=test_host --port=5985 --username=abc --password=password http://schemas.openwsman.org/wbem/wscim/1/instrinsic --namespace=root/cimv2
<s:Body>
<n1:EnumerateClassNames>
<n1:name>root/cimv2:CIM_Service</n1:name>
<n1:name>root/cimv2:Syslog_RecordInLog</n1:name>
<n1:name>root/cimv2:Linux_SambaValidUsersForShare</n1:name>
<n1:name>root/cimv2:Linux_BaseBoard</n1:name>
<n1:name>root/cimv2:Linux_SambaForceUserForShare</n1:name>
<n1:name>root/cimv2:Linux_Processor</n1:name>
<n1:name>root/cimv2:CIM_RecordForLog</n1:name>
<n1:name>root/cimv2:Linux_SambaShareForService</n1:name>
<n1:name>root/cimv2:Linux_SambaServiceConfigurationForService</n1:name>
<n1:name>root/cimv2:Linux_SambaHostsForService</n1:name>
<n1:name>root/cimv2:Linux_SambaForceUserForGlobal</n1:name>
<n1:name>root/cimv2:CIM_OSProcess</n1:name>
<n1:name>root/cimv2:CIM_RunningOS</n1:name>...................
Dane wyjściowe wyglądają jak powyżej, wskazując, że w przestrzeni nazw root/cimv2 Linux_Processor jest jedną z zarejestrowanych klas. Kilka klas modelu wspólnych informacji jest dziedziczonych, gdy rejestrują się nowe klasy root lub cimv2, a polecenie zawiera listę wszystkich tych nazw klas. Ogólnie rzecz biorąc, możesz zignorować wszystkie klasy z CIM_ prefiks. Wszystkie klasy z prefiksem Linux_ są klasami zarejestrowanymi przez dostawców zainstalowanych w systemie Linux.
Podczas pracy z kontrolerem iDRAC firmy Dell interesują Cię przede wszystkim zajęcia z DCIM_ prefix.
Korzystając z listy nazw klas, użyj getClass funkcja wyodrębniania Linux_Processor Definicja klasy w następujący sposób:
wsman invoke -a GetClass --hostname=test_host --port=5985 --username=abc --password=password http://schemas.openwsman.org/wbem/wscim/1/intrinsic/Linux_Processor --namespace=root/cimv2
Powyższe polecenie wyświetla listę wszystkich właściwości, które są zdefiniowane w Linux_Processor lokalnie. Oznacza każdą z właściwości, które są dziedziczone po innych CIM_* Klasy nie są wyświetlane w bieżącej implementacji. Definicje klas ujawniają metody, parametry i właściwości klucza, ale polecenie zwraca tylko właściwości lokalne, co sprawia, że kluczowe właściwości są nieidentyfikowalne. Ponownie, jest to ograniczenie implementacji w wsmancli.
Podczas gdy GetClass to dobry początek, jego dane wyjściowe nie wystarczają do zidentyfikowania kluczowych właściwości do wywoływania akcji get lub put lub create lub niestandardowych.
Jakie inne techniki można wykorzystać, aby to osiągnąć? W tym mogą pomóc rozszerzone raporty producenta.
End-Point Reference (EPR) to wskaźnik do instancji z dwoma informacjami: ResourceURI i zestaw selektorów. Plik ResourceURI ma nazwę klasy, z której jest tworzona instancja, a Zestaw selektorów zawiera listę właściwości, z którymi instancja może być jednoznacznie identyfikowana. EPR określonej klasy można wyliczyć za pomocą polecenia podobnego do:
wsman enumerate -M epr http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor -h test_host-P 5985 -u abc -p password -O out
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration" xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">
<s:Header>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
<wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/PullResponse</wsa:Action>
<wsa:RelatesTo>uuid:ca52c9e9-cd47-1d47-8003-a52924d9bed4</wsa:RelatesTo>
<wsa:MessageID>uuid:ca622bb3-cd47-1d47-8097-a52924d9bed4</wsa:MessageID>
</s:Header>
<s:Body>
<wsen:PullResponse>
<wsen:EnumerationContext>ca4fdd21-cd47-1d47-8095-a52924d9bed4</wsen:EnumerationContext>
<wsen:Items>
<wsa:EndpointReference>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
<wsa:ReferenceParameters>
<wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor</wsman:ResourceURI>
<wsman:SelectorSet>
<wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>
<wsman:Selector Name="SystemCreationClassName">Linux_ComputerSystem</wsman:Selector>
<wsman:Selector Name="SystemName">localhost.localdomain</wsman:Selector>
<wsman:Selector Name="CreationClassName">Linux_Processor</wsman:Selector>
<wsman:Selector Name="DeviceID">0</wsman:Selector>
</wsman:SelectorSet>
</wsa:ReferenceParameters>
</wsa:EndpointReference>
</wsen:Items>
</wsen:PullResponse>
</s:Body>
</s:Envelope>
Spośród wszystkich procesorów w systemie docelowym powyższe dane wyjściowe dotyczą jednego procesora.
W danych wyjściowych identyfikator resourceURI jest wymieniony jako https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor i SelectorSet Wyszczególnia wartości __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. Oznacza to, że ze wszystkich właściwości w klasie dziedziczonej i zdefiniowanej lokalnie) te właściwości mogą być używane do jednoznacznej identyfikacji instancji.
Możesz więc oczekiwać prawidłowej odpowiedzi na polecenie, takie jak:
wsman get http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor?SystemCreationClassName="Linux_ComputerSystem",SystemName="localhost.localdomain",CreationClassName="Linux_Processor",DeviceID="3",__cimnamespace="root/cimv2" -h test_host -P 5985 -u abc -p password -O get
Jeśli w powyższym żądaniu zostaną użyte jakiekolwiek inne właściwości, CIMOM w zapleczu nie może jednoznacznie zidentyfikować wystąpienia. Aby uruchomić metody niestandardowe w wystąpieniu, użyj EPR klasy, aby zidentyfikować kluczowe właściwości wywołania metody.
Można również wyliczyć EPR skojarzenia. Biorąc pod uwagę nazwę klasy, nie można stwierdzić, czy jest to standardowa nazwa klasy, czy klasa skojarzenia. Instancja asocjacyjna wskazuje na dwie instancje, więc jej EPR zawiera EPR instancji lub obiektów, do których się odwołuje. Poniżej znajduje się przykład tego samego:
wsman enumerate -M epr http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_CSProcessor -h test_host -P 5985 -u abc -p password -O out
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration" xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">
<s:Header>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
<wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/PullResponse</wsa:Action>
<wsa:RelatesTo>uuid:2efbfcad-cd4b-1d4b-8003-a52924d9bed4</wsa:RelatesTo>
<wsa:MessageID>uuid:2efc1c6f-cd4b-1d4b-80b3-a52924d9bed4</wsa:MessageID>
</s:Header>
<s:Body>
<wsen:PullResponse>
<wsen:EnumerationContext>2ef7f6f5-cd4b-1d4b-80b1-a52924d9bed4</wsen:EnumerationContext>
<wsen:Items>
<wsa:EndpointReference>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
<wsa:ReferenceParameters>
<wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_CSProcessor</wsman:ResourceURI>
<wsman:SelectorSet>
<wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>
<wsman:Selector Name="GroupComponent">
<wsa:EndpointReference>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
<wsa:ReferenceParameters>
<wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_ComputerSystem</wsman:ResourceURI>
<wsman:SelectorSet>
<wsman:Selector Name="CreationClassName">Linux_ComputerSystem</wsman:Selector>
<wsman:Selector Name="Name">localhost.localdomain</wsman:Selector>
<wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>
</wsman:SelectorSet>
</wsa:ReferenceParameters>
</wsa:EndpointReference>
</wsman:Selector>
<wsman:Selector Name="PartComponent">
<wsa:EndpointReference>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
<wsa:ReferenceParameters>
<wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor</wsman:ResourceURI>
<wsman:SelectorSet>
<wsman:Selector Name="SystemCreationClassName">Linux_ComputerSystem</wsman:Selector>
<wsman:Selector Name="SystemName">localhost.localdomain</wsman:Selector>
<wsman:Selector Name="CreationClassName">Linux_Processor</wsman:Selector>
<wsman:Selector Name="DeviceID">0</wsman:Selector>
<wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>
</wsman:SelectorSet>
</wsa:ReferenceParameters>
</wsa:EndpointReference>
</wsman:Selector>
</wsman:SelectorSet>
</wsa:ReferenceParameters>
</wsa:EndpointReference>
</wsen:Items>
</wsen:PullResponse>
</s:Body>
</s:Envelope>
Linux_CSProcessor Linki Linux_ComputerSystem i Linux_Processor, pokazując procesory w systemach komputerowych, szczegółowo GroupComponent i PartComponent sekcje.
Poświęciłem czas na zrozumienie EPR i ich zastosowania do uzyskiwania dostępu do instancji, myśląc, że może to pomóc innym. Zapraszam do pozostawienia mi swoich komentarzy lub sugestii poniżej.
Zastrzeżenie:
Powyższy artykuł służy wyłącznie celom informacyjnym. Treść pochodzi z mojej interpretacji wspomnianych technologii i terminologii. Informacje te są dostarczane w stanie, w jakim się znajdują i mogą zawierać pewne błędy typograficzne i/lub nieścisłości techniczne.