К основному контенту

Что такое Redfish API? Развертывание серверов через Redfish API: подробное руководство с примерами

Введение в 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

  1. Узнать доступные виртуальные носители:

    curl -k -u admin:password https://<IP_СЕРВЕРА>/redfish/v1/Managers/1/VirtualMedia
    
  2. Подключить 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
    
  3. Перезагрузить сервер с загрузкой с CD:

    curl -k -u admin:password -X POST \
      -H "Content-Type: application/json" \
      -d '{"BootSourceOverrideTarget": "Cd"}' \
      https://<IP_СЕРВЕРА>/redfish/v1/Systems/1
    

Загрузка по сети (PXE)

  1. Указать PXE как загрузочный приоритет:

    curl -k -u admin:password -X PATCH \
      -H "Content-Type: application/json" \
      -d '{"Boot": {"BootSourceOverrideTarget": "Pxe"}}' \
      https://<IP_СЕРВЕРА>/redfish/v1/Systems/1
    
  2. Перезагрузить сервер:

    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-процессы и автоматизировать управление инфраструктурой.

Комментарии

Популярные сообщения из этого блога

Настройка и подключение IPSec в Windows

Настройка IPSec на Windows включает в себя создание правил безопасности и фильтров для защиты сетевого трафика. Ниже — пошаговое руководство. Включение службы IPSec Перед настройкой убедитесь, что служба IPSec Policy Agent запущена: Нажмите Win + R , введите services.msc и нажмите Enter . Найдите IPsec Policy Agent . Если она не работает, нажмите ПКМ → Свойства . Установите Тип запуска: Автоматически , затем нажмите Запустить . Настройка политики IPSec через «Локальную политику безопасности» Нажмите Win + R , введите secpol.msc , нажмите Enter . Перейдите в Политики IP-безопасности в локальном компьютере . В правом окне нажмите Создать политику IP-безопасности → Далее . Укажите имя политики (например, "IPSec VPN"), снимите флажок Активировать правило по умолчанию , нажмите Далее . Нажмите Добавить , чтобы создать правило. Транспортный или туннельный режим : Если IPSec для защищенной локальной сети – выберите Транспортный режим . Если IPSec для VPN – выберите Туннельн...

Debian 10: Подключение и Настройка Архивных Репозиториев для Работы

Актуальные рабочие репозитории для Debian 10: подключение и исправление проблем Debian 10 "Buster" официально устарел, и его репозитории были перемещены в архив. Это означает, что стандартные зеркала больше не содержат пакеты для данной версии. Однако можно продолжать использовать Debian 10, подключив архивные репозитории. В этой статье рассмотрим, как правильно настроить систему и устранить возможные проблемы. 1. Подключение архивных репозиториев для Debian 10 Шаг 1: Редактирование файла sources.list Для работы с пакетами необходимо обновить список репозиториев в файле /etc/apt/sources.list . Откройте его с правами суперпользователя: sudo nano /etc/apt/sources.list Замените его содержимое на следующее: deb http://archive.debian.org/debian buster main contrib non-free deb http://archive.debian.org/debian-security buster/updates main contrib non-free deb http://archive.debian.org/debian buster-updates main contrib non-free Сохраните изменения ( Ctrl + X , затем Y и Enter ). Ш...

Debian 11: настройка сети и имени хоста /etc/network/interfaces, NetworkManager и systemd-networkd

Как настроить сеть в Debian 11? 🔹 1. Настройка через /etc/network/interfaces (Традиционный способ) Этот метод удобен для серверов и минималистичных систем без NetworkManager . Открываем конфигурационный файл: sudo nano /etc/network/interfaces 🔹 DHCP (Автоматическое получение IP) auto eth0 iface eth0 inet dhcp 🔹 Статический IP auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4 🔹 Wi-Fi (WPA2) auto wlan0 iface wlan0 inet dhcp wpa-ssid "Название_сети" wpa-psk "Пароль" 📌 Применение изменений: sudo systemctl restart networking 🔹 2. Настройка через NetworkManager (Удобно для десктопов) Проверяем статус: systemctl status NetworkManager Если не установлен, ставим: sudo apt install network-manager sudo systemctl enable --now NetworkManager 🔹 Графический интерфейс (TUI) nmtui Выберите Edit a connection , настройте параметры и сохраните. 🔹 Консольный способ ( nmcli ...