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는 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/v1/SessionService/Sessions 자원에서 POST 메소드)을 작성하십시오.
- 다음 세부사항을 추출하고 저장하십시오.
- 인증 토큰(응답의 X-Auth-Token 헤더에 있음)
- 세션 URI(응답의 위치 헤더에 있음)
- 자원의 특성을 읽으려면 자원의 URI에 대해 X-Auth-Token 헤더가 포함된 GET 요청을 보내십시오.
- 자원의 특성을 설정하려면 자원의 URI, 특성 이름, 유형 및 JSON 본문으로 인코딩된 값에 대한 X-Auth-Token 헤더가 포함된 PATCH 요청을 보내십시오.
- 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 서비스의 공통 시스템 관리 기능에 액세스
- 주요 콜렉션을 보려면 다음 명령을 실행하십시오.
- 섀시 콜렉션:
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
- Power® 자원:
- 자원 명세 자원을 보려면 다음 명령을 실행하십시오.
- 메모리 자원:
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
는 새 비밀번호입니다.
-
사용자 이름, 비밀번호 또는 역할 선택에 대한 자세한 정보는 로컬 사용자의 내용을 참조하십시오.