DMTF Redfish API를 사용하여 시스템 관리

OpenBMC 기반 시스템은 DMTF Redfish API를 사용하여 관리할 수 있습니다.

개요

Redfish는 플랫폼 관리에 사용되는 REST API이고 Distributed Management Task Force, Inc.에 의해 표준화되었습니다(http://www.dmtf.org/standards/redfish).

Redfish에서는 보안 설정된 현재적인 프로그래밍 패러다임을 사용하여 배치되는 클라이언트 스크립트가 플랫폼 관리 태스크를 제어할 수 있습니다.

Redfish API는 전원 이용률을 높이기 위해 조정할 수 있는 매개변수의 프로비저닝을 가능하게 합니다.

IBM® OpenBMC 기반 시스템에서는 시스템 관리를 위해 DMTF Redfish API(DSP0266, 버전 1.7.0, 2019년 5월 20일에 공개됨)를 지원합니다.

JSON 형식으로 된 Redfish 스키마 파일의 사본이 DMTF(http://redfish.dmtf.org/schemas/v1/)에서 공개되고 펌웨어 이미지로 패키지화되었습니다.

칩으로 배포되는 스키마 파일은 광역 네트워크(WAN) 연결이 없는 배치에서 API의 올바른 작동을 가능하게 합니다.

참고: Redfish API는 기본적으로 사용으로 설정되고 Redfish 서비스는 사용자가 사용 또는 사용 안함으로 설정할 수 없습니다.

펌웨어 레벨

Redfish API는 OpenPOWER(OP) 펌웨어 레벨 OP940 이상에서 지원됩니다.

OpenBMC 기반 서버에서 Redfish의 통신 전제조건

현재 펌웨어 레벨 및 네트워크 배치에 따라 다음 전제조건 태스크를 완료하십시오.
  • 서버 펌웨어 레벨을 OP940 이상으로 업그레이드하십시오.
  • BMC의 IP 주소를 식별하십시오.
  • Redfish 서비스와 통신하기 위한 매개변수로 메소드, URI(Uniform Resource Indicator) 및 요청 본문을 사용하여 cURL(https://curl.haxx.se/)을 설치하고 실행하십시오.
  • 클라이언트 시스템(일반적으로 Linux® 호스트)에 Python을 설치하십시오.
  • 선택적으로 DMTF Redfishtool(https://github.com/DMTF/Redfishtool)을 설치하고 실행하십시오.

Redfish 서비스와 상호작용

Redfish 서비스와 상호작용하려면 다음 단계를 완료하십시오.
  1. 인증된 로그인 세션(/redfish/v1/SessionService/Sessions 자원에서 POST 메소드)을 작성하십시오.
  2. 다음 세부사항을 추출하고 저장하십시오.
    • 인증 토큰(응답의 X-Auth-Token 헤더에 있음)
    • 세션 URI(응답의 위치 헤더에 있음)
  3. 자원의 특성을 읽으려면 자원의 URI에 대해 X-Auth-Token 헤더가 포함된 GET 요청을 보내십시오.
  4. 자원의 특성을 설정하려면 자원의 URI, 특성 이름, 유형 및 JSON 본문으로 인코딩된 값에 대한 X-Auth-Token 헤더가 포함된 PATCH 요청을 보내십시오.
  5. JSON 본문을 포함하는 Redfish 서비스로부터 응답을 추출하고 구문 분석하십시오.

Redfish 서비스 홈 페이지 URI

Redfish 서비스 홈 페이지 URI(서비스 ROOT라고도 함)는 다음 URI를 검색하여 액세스할 수 있습니다. https://<ip:port>/redfish/v1. 이 URI에 대한 응답은 상위 레벨 사이트 맵으로서, 하이퍼미디어 API 패러다임을 사용하여 Redfish 서비스의 순회를 가능하게 합니다.

Redfish 서비스에서 리턴된 데이터 해석

데이터의 형식 및 구조는 스키마 파일에서 정의됩니다. 스키마 파일은 Redfish 서비스에 의해 전송되는 데이터를 설명하는 JSON 파일입니다. 이 스키마 파일을 사용하여 Redfish 서비스에 의해 전송되는 데이터를 이해하고 Redfish 서비스에 의해 전송되는 응답을 유효성 검증할 수 있습니다.

스키마 파일의 위치

DMTF는 Redfish에서 사용되는 표준 데이터를 위한 스키마 파일을 공개합니다.

JSON 형식의 Redfish 스키마 파일은 http://redfish.dmtf.org/schemas/v1/에 있는 DMTF 스키마 저장소에서 호스팅됩니다.

지원되는 스키마 파일

다음 스키마 파일이 OpenBMC 기반 시스템에 대해 지원됩니다.

  • Account
  • AccountCollection
  • AccountService
  • Certificate
  • CertificateCollection
  • CertificateLocations
  • CertificateService
  • Chassis
  • ChassisCollection
  • ComputerSystem
  • ComputerSystemCollection
  • EthernetInterface
  • EthernetInterfaceCollection
  • LogEntry
  • LogService
  • LogServiceCollection
  • Manager
  • ManagerCollection
  • ManagerNetworkProtocol
  • 메모리
  • MemoryCollection
  • Processor
  • ProcessorCollection
  • Role
  • RoleCollection
  • ServiceRoot
  • Session
  • SessionCollection
  • SessionService
  • SoftwareInventory
  • SoftwareInventoryCollection
  • ThermalPower
  • UpdateService

cURL 명령을 사용하여 Redfish 서비스의 공통 시스템 관리 기능에 액세스

다음 예제는 OpenBMC Redfish API에서 지원되는 공통 기능에 액세스하는 데 사용할 수 있는 클라이언트 URL(cURL) 명령을 보여줍니다.
참고: 모든 cURL 명령에서 ${BMC}는 BMC의 IP 주소입니다.
  • 주요 콜렉션을 보려면 다음 명령을 실행하십시오.
    • 섀시 콜렉션:
      curl -u root:0penBmc -k -s  https://${BMC}/redfish/v1/Chassis
    • 관리자 콜렉션:
      curl -u root:0penBmc -k -s  https://${BMC}/redfish/v1/Managers
    • 시스템 콜렉션:
      curl -u root:0penBmc -k -s  https://${BMC}/redfish/v1/Systems
  • 섀시, 관리자 및 시스템 자원을 보려면 다음 명령을 실행하십시오.
    • 섀시 자원:
      curl -u root:0penBmc -k -s  https://${BMC}/redfish/v1/Chassis/chassis
    • 관리자 자원:
      curl -u root:0penBmc -k -s  https://${BMC}/redfish/v1/Managers/bmc
    • 시스템 자원:
      curl -u root:0penBmc -k -s  https://${BMC}/redfish/v1/Systems/system
  • 호스트 전원 제어 조작을 수행하려면 다음 명령을 실행하십시오.
    • 호스트 전원 켜기:
      -X POST https://${BMC}/redfish/v1/Systems/system/Actions/ComputerSystem.Reset -d '{"ResetType": "On"}'
    • 호스트 소프트 전원 끄기:
      -X POST https://${BMC}/redfish/v1/Systems/system/Actions/ComputerSystem.Reset -d '{"ResetType": "GracefulShutdown"}'
    • 호스트 하드 전원 끄기:
      -X POST https://${BMC}/redfish/v1/Systems/system/Actions/ComputerSystem.Reset -d '{"ResetType": "ForceOff"}'
    • 호스트 다시 시작:
      -X POST https://${BMC}/redfish/v1/Systems/system/Actions/ComputerSystem.Reset -d '{"ResetType": "GracefulRestart"}'
  • 호스트 전원 자원을 보려면 다음 명령을 실행하십시오.
    curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Systems/system/Actions/
  • 로그 자원을 보려면 다음 명령을 실행하십시오.
    curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Systems/system/LogServices/EventLog/Entries
  • 센서 자원을 보려면 다음 명령을 실행하십시오.
    • Power® 자원:
      curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Chassis/chassis/Power
    • 열 자원:
      curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Chassis/chassis/Thermal
    • 센서 자원:
      curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Chassis/chassis/Sensors
  • 자원 명세 자원을 보려면 다음 명령을 실행하십시오.
    • 메모리 자원:
      curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Systems/system/Memory
    • 프로세서 자원:
      curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Systems/system/Processors
    • 전원 공급장치 0 자원:
      curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Chassis/powersupply0
    • 전원 공급 장치 1 자원:
      curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Chassis/powersupply1
    • 마더보드 자원:
      curl -u root:0penBmc -k -s https://${BMC}/redfish/v1/Chassis/motherboard
  • 펌웨어를 업데이트하려면 다음 명령을 실행하십시오.
    • 시스템의 이미지 파일을 사용:
      curl -u root:0penBmc -curl k -s  -H "Content-Type: application/octet-stream" -X POST -T <image file path> https://${BMC}/redfish/v1/UpdateService
    • TFTP(Trivial File Transfer Protocol) 서버 사용:
      curl -u root:0penBmc -k -s -d '{"ImageURI":"<TFTP IP Address>/<File name on TFTP server>","TransferProtocol":"TFTP"}' -X POST https://${BMC}/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate
      
  • 새 로컬 계정을 작성하려면 다음 명령을 실행하십시오.
    • curl -X POST https://${BMC}/redfish/v1/AccountService/Accounts/ -d '{"UserName": "admin", "Password": "NEWPASSWORD", "RoleId": "Administrator"}'
      여기서, admin은 작성할 사용자의 이름이고 NEWPASSWORD는 새 비밀번호이고 RoleId는 권한 역할을 맵핑합니다.
  • 계정 비밀번호를 변경하려면 다음 명령을 실행하십시오.
    • curl -X POST https://${BMC}/redfish/v1/AccountService/Accounts/root -d '{"Password": "NEWPASSWORD"}'
      여기서, root는 계정 이름 또는 사용자 ID이고 NEWPASSWORD는 새 비밀번호입니다.

사용자 이름, 비밀번호 또는 역할 선택에 대한 자세한 정보는 로컬 사용자의 내용을 참조하십시오.