Włączanie Cisco UCS skryptem w Python

Jeżeli w Twoim domowym labie ląduje serwer Cisco UCS, to być może nie chcesz by działał 24/7. Prąd jest drogi, szumi to niemiłosiernie i jak nie masz serwerowni w garażu to po paru dniach będziesz miał dość odgłosów serwerowni w swoim domu. Z drugiej strony leń siedzi w każdym z nas i nikomu nie chce się chodzić by tylko kliknąć przycisk by uruchomić serwer. Zatem najbardziej przydatny skrypt to ten, który pozwoli uruchomić serwer zdalnie.

CIMC i biblioteki Python

CIMC (Cisco Integrated Management Controller) to dedykowany moduł zarządzania zdalnego, który jest często stosowany w serwerach firmy Cisco. CIMC umożliwia zdalne uruchamianie i wyłączanie serwera, co jest przydatne w przypadku potrzeby zdalnego restartu lub wyłączenia serwera w celu oszczędzania energii. Dostarcza zdalną konsolę, która pozwala administratorom uzyskać dostęp do konsoli serwera, jakby byli fizycznie podłączeni do niego. To umożliwia rozwiązywanie problemów i diagnozowanie problemów bez potrzeby fizycznego dostępu do serwera. CIMC ma dedykowany port Ethernet i działa zawsze gdy podłączone jest zasilanie do zasilacza. 

Biblioteka imcsdk w języku Python jest narzędziem stworzonym przez firmę Cisco, której głównym celem jest ułatwienie interakcji z urządzeniami Cisco UCS poprzez interfejs CIMC. Biblioteka ta zapewnia programistom narzędzia do automatyzacji i zarządzania serwerami Cisco UCS poprzez programowanie w języku Python.

Biblioteka wykorzystuje do automatyzacji interfejs XMLAPI, który na UCS może być domyślnie wyłączony. Dlatego powinniśmy go aktywować. 

ucs-cimc# scope xmlapi
ucs-cimc /xmlapi # set enabled yes
ucs-cimc /xmlapi *# commit 
ucs-cimc /xmlapi # show 
Enabled Active Sessions 
------- --------------- 
yes     0               
Previous slide
Next slide

Skrypt

Mój skrypt jest bardzo prosty. Pierwszą rzeczą, jaką robi ten skrypt, jest zaimportowanie odpowiednich modułów z biblioteki imcsdk. Następnie tworzy obiekt ImcHandle, który służy do nawiązania połączenia z serwerem CIMC. Podczas tworzenia tego obiektu musimy podać adres IP serwera CIMC oraz dane uwierzytelniające do logowania, takie jak nazwa użytkownika i hasło. Dodatkowo, możemy określić, czy chcemy używać bezpiecznego połączenia SSL/TLS, ale w tym przypadku ustawiamy secure=False.

Po nawiązaniu połączenia za pomocą handle.login(), skrypt pobiera informacje o stanie zasilania serwera, używając funkcji server_power_state_get(). Wynik jest zapisywany do zmiennej oper_power.

Następnie skrypt analizuje stan zasilania i podejmuje odpowiednie działania. Jeżeli serwer jest wyłączony to próbuje go włączyć serwer za pomocą funkcji server_power_up()Na koniec, po zakończeniu operacji, skrypt wywołuje handle.logout() w celu zakończenia sesji i zamknięcia połączenia z serwerem CIMC.

import imcsdk.imchandle
import imcsdk.apis.server.serveractions

# Dane do logowania
ip_address = ""
username = ""
password = ""

# Tworzenie obiektu ImcHandle i logowanie
with imcsdk.imchandle.ImcHandle(ip_address, username, password, secure=False) as handle:
    oper_power = imcsdk.apis.server.serveractions.server_power_state_get(handle)

    if oper_power == "off":
        print("Bringing server up")
        imcsdk.apis.server.serveractions.server_power_up(handle)
    elif oper_power == "on":
        print("Server already on")
    else:
        print("Server power status is:", oper_power)

E-BOOK

Zaczynasz swój pierwszy projekt związany z automatyzacją?

Ten e-book jest dla Ciebie! Zawiera sprawdzone podejście, które realizowałem w wielu projektach. Sprawdź co możesz zrobić, by odnieść sukces!


Subscribe
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments

ZdradziĆ Ci sekretY udanego projektu automatyzacji?

(link otwiera się w nowym oknie)