Введение в Redfish API
Redfish API — это стандартный интерфейс управления серверами, разработанный DMTF (Distributed Management Task Force). Он предоставляет RESTful API для взаимодействия с серверными системами, включая включение/выключение, мониторинг состояния и развертывание операционной системы.
Этот API позволяет автоматизировать управление серверами без необходимости физического доступа или использования устаревших интерфейсов, таких как IPMI.
Требования
Прежде чем приступить к работе, необходимо подготовить следующее:
- Сервер с поддержкой Redfish (например, HPE iLO, Dell iDRAC, Lenovo XClarity, Cisco UCS и др.).
- Доступ к Redfish API через сеть.
- Учетные данные для аутентификации.
- Инструмент для работы с API (cURL, Postman, Python с библиотекой
requests
).
Подключение и аутентификация
Для взаимодействия с Redfish API используется стандартный HTTP-запрос с аутентификацией по логину и паролю. Например, для проверки работоспособности интерфейса можно выполнить GET-запрос к корневому ресурсу:
curl -k -u admin:password https://<IP_СЕРВЕРА>/redfish/v1/
Пример ответа:
{
"@odata.type": "#ServiceRoot.v1_3_0.ServiceRoot",
"Id": "RootService",
"Name": "Root Service",
"RedfishVersion": "1.3.0",
"Systems": {
"@odata.id": "/redfish/v1/Systems"
},
"Chassis": {
"@odata.id": "/redfish/v1/Chassis"
}
}
Управление питанием сервера
Получение состояния питания
Чтобы узнать текущее состояние сервера, отправьте GET-запрос:
curl -k -u admin:password https://<IP_СЕРВЕРА>/redfish/v1/Systems/1
Ответ содержит поле PowerState
, которое может быть On
, Off
или Standby
:
{
"PowerState": "On"
}
Включение сервера
Для включения сервера отправьте POST-запрос:
curl -k -u admin:password -X POST \
-H "Content-Type: application/json" \
-d '{"ResetType": "On"}' \
https://<IP_СЕРВЕРА>/redfish/v1/Systems/1/Actions/ComputerSystem.Reset
Выключение сервера
curl -k -u admin:password -X POST \
-H "Content-Type: application/json" \
-d '{"ResetType": "ForceOff"}' \
https://<IP_СЕРВЕРА>/redfish/v1/Systems/1/Actions/ComputerSystem.Reset
Развертывание операционной системы
Чтобы установить ОС через Redfish API, можно использовать виртуальные носители (Virtual Media) или загрузку по сети (PXE).
Подключение ISO-образа через Virtual Media
-
Узнать доступные виртуальные носители:
curl -k -u admin:password https://<IP_СЕРВЕРА>/redfish/v1/Managers/1/VirtualMedia
-
Подключить ISO-образ:
curl -k -u admin:password -X POST \ -H "Content-Type: application/json" \ -d '{"Image": "http://<URL_ОБРАЗА>/ubuntu.iso", "Inserted": true}' \ https://<IP_СЕРВЕРА>/redfish/v1/Managers/1/VirtualMedia/CD
-
Перезагрузить сервер с загрузкой с CD:
curl -k -u admin:password -X POST \ -H "Content-Type: application/json" \ -d '{"BootSourceOverrideTarget": "Cd"}' \ https://<IP_СЕРВЕРА>/redfish/v1/Systems/1
Загрузка по сети (PXE)
-
Указать PXE как загрузочный приоритет:
curl -k -u admin:password -X PATCH \ -H "Content-Type: application/json" \ -d '{"Boot": {"BootSourceOverrideTarget": "Pxe"}}' \ https://<IP_СЕРВЕРА>/redfish/v1/Systems/1
-
Перезагрузить сервер:
curl -k -u admin:password -X POST \ -H "Content-Type: application/json" \ -d '{"ResetType": "ForceRestart"}' \ https://<IP_СЕРВЕРА>/redfish/v1/Systems/1/Actions/ComputerSystem.Reset
Мониторинг состояния сервера
Получение информации о процессоре, памяти и дисках
Запрос общей информации о системе:
curl -k -u admin:password https://<IP_СЕРВЕРА>/redfish/v1/Systems/1
Запрос информации о процессоре:
curl -k -u admin:password https://<IP_СЕРВЕРА>/redfish/v1/Systems/1/Processors
Запрос информации о памяти:
curl -k -u admin:password https://<IP_СЕРВЕРА>/redfish/v1/Systems/1/Memory
Автоматизация с Python
Для автоматизации работы с Redfish API удобно использовать Python с библиотекой requests
.
Пример включения сервера:
import requests
from requests.auth import HTTPBasicAuth
ip = "<IP_СЕРВЕРА>"
url = f"https://{ip}/redfish/v1/Systems/1/Actions/ComputerSystem.Reset"
headers = {"Content-Type": "application/json"}
data = {"ResetType": "On"}
response = requests.post(url, json=data, auth=HTTPBasicAuth("admin", "password"), verify=False)
print(response.json())
Redfish API — мощный инструмент для автоматизации развертывания серверов и их управления. Он предоставляет удобный RESTful-интерфейс для управления питанием, мониторинга состояния и установки операционных систем. Используя cURL или Python, можно легко интегрировать Redfish API в DevOps-процессы и автоматизировать управление инфраструктурой.
Комментарии
Отправить комментарий