'

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [study42] VMware Developer Portal
    FISA 2026. 3. 13. 08:54

    VMware Developer Portal은

    Broadcom Developer Portal 안에서 VMware 관련 개발 자료를 제공하는 형태로 운영됩니다.

    한마디로 말하면, VMware 제품을 직접 개발·연동·자동화하려는 사람들을 위한 공식 개발자 사이트입니다. 여기서 API 문서, SDK, 샘플 코드, PowerCLI, 각종 유틸리티를 찾을 수 있습니다.

     

    이 포털에서 가장 많이 쓰는 영역은 보통 4가지입니다.

    [1] APIs

    vSphere Automation API 같은 REST API 문서를 볼 수 있고, 요청/응답 예시까지 함께 제공돼서 VM 생성, 전원 제어, 태깅, 콘텐츠 라이브러리, vCenter 관리 같은 작업을 코드로 자동화할 때 씁니다. vSphere Automation API 문서에는 최신 버전 기준 9.0과 8.x, 7.x 계열 문서가 같이 정리되어 있습니다.

    [2] SDKs

     SDK 페이지에서는 vSphere, vCenter, NSX 같은 제품용 개발 키트와 라이브러리를 찾을 수 있습니다. 예를 들어 vSphere Management SDK는 Web Services SDK, Storage Policy SDK, Storage Management SDK, ESX Agent Manager SDK, SSO Client SDK 등을 묶은 번들로 소개되고 있고, Java용 vSphere Automation SDK는 REST API 접근용 라이브러리와 샘플을 제공합니다. 다만 Java SDK는 VCF 9.0부터 standalone 형태가 아니라 VCF Java SDK에 통합된다고 안내되어 있습니다.

    [3] PowerCLI

    이건 PowerShell 기반 자동화 도구인데, Broadcom 포털 설명 기준으로 7000개 이상의 cmdlet을 제공하고, vSphere뿐 아니라 vSAN, NSX-T, HCX, Site Recovery Manager, Horizon, VMware Cloud 계열 환경도 관리할 수 있습니다. 즉, “스크립트로 VMware 운영 자동화”를 하고 싶을 때 가장 먼저 보는 도구라고 생각하시면 됩니다.

    [4] Tools / Sample Exchange

    Tools에는 OVF Tool 같은 유틸리티가 있고, Sample Exchange에는 API·SDK·CLI 예제가 모여 있습니다. 예를 들어 OVF Tool은 OVF 패키지를 여러 VMware 제품으로 import/export 하는 명령행 도구로 제공됩니다. 또 HTML Console SDK는 기존 웹 UI에 VM 콘솔 기능을 붙일 때 쓰는 SDK이고, vSphere Client SDK는 vSphere Client용 UI 플러그인을 개발할 때 사용합니다.

     

    그래서 이 포털을 왜 쓰는데?

    vCenter를 사람이 직접 클릭해서 관리하는 수준을 넘어서, VM 배포/삭제, 태그 관리, 정책 적용, 스토리지 연동, 네트워크 연동, 운영 자동화를 코드나 스크립트로 하려는 경우 들어갑니다.

    예를 들면 vSphere REST API로 VM을 만들거나, PowerCLI로 호스트/클러스터 작업을 일괄 처리하거나, VDDK로 가상 디스크를 다루는 백업·마이그레이션 계열 도구를 만들 수 있습니다. VDDK는 C 라이브러리, 샘플, 문서를 포함한 개발 키트로 제공됩니다.

     

     

     

    특히, 디벨로퍼가 할 수 있는걸 지금까지 실습한 vmware가지고 보겠습니다.

    가장 쉬운 예부터 보면, 지금은 VM 하나 만들려면 vCenter 들어가서 클러스터 선택하고, 데이터스토어 고르고, 네트워크 붙이고, 템플릿 배포하고, 전원 켜고, IP 확인하고 이런 식으로 했습니다.

    이걸 웹에 붙이면 사내 포털 같은 데서 그냥 이렇게 보이게 만들 수 있습니다.

     

    새 실습 서버 만들기라고 쳤을 때

    • 위치: 서울 / 제주
    • 템플릿: Ubuntu / Windows
    • 배치 대상: Jeju-Cluster
    • 리소스 풀: Student-Lab
    • 데이터스토어: iSCSI-DS1
    • 네트워크: 172.30.10.x
    • VM 이름: jihye-test-01

    사용자는 이 폼만 입력하고 생성 버튼만 누릅니다. 그러면 뒤에서 웹서버가 vCenter API를 호출해서 실제로는 제가 하던 작업을 할 수 있게 할거예요

     

    < vSphere 운영 작업 웹서비스 추상화 실습 >

     

    vSphere Automation API와 Java SDK로 구현 할 예정입니다.

    1) 프론트엔드: 사내 포털 웹 화면 Spring Boot + 서버 렌더링
    2) 백엔드 API 서버: Spring Boot. 사용자 인증, 요청 검증, vCenter API 호출, 작업 이력 저장 담당.
    3) 인프라 대상: vCenter + 서울 클러스터/호스트 + 로컬 서버 저장소(datastore) + VM 네트워크.

     

    호스팅은 vSphere내부에서 VM 1대에 Docker Compose

    Spring Boot app / PostgreSQL / Nginx(reverse proxy)을 둡니다.

     

     

     

     

     

     

    [1] vCenter에서 먼저 표준화

    서울에서 실제로 쓸 리소스 이름 확정

    vCenter 들어가서 아래 이름을 쓸예정입니다.

    • Datacenter: UserDC
    • Cluster : User-Cluster
    • Resource Pool : Student-pool / admin-pool
    • Network/Port Group : userPg

     

    [2] 수동 작업을 API 작업으로 1:1 매핑

    지금까지 수동으로 하던 순서는 대충 이거죠.

    1. vCenter 접속
    2. 클러스터 선택
    3. 리소스 풀 선택
    4. 템플릿 선택
    5. datastore 선택
    6. 네트워크 선택
    7. VM 이름 넣기
    8. 생성
    9. 전원 켜기
    10. IP 확인

    이걸 Spring Boot 기준으로 바꾸면 이렇게 됩니다.

    1. 웹에서 생성 요청 받기
    2. DB에 REQUESTED 상태로 저장
    3. 요청값 검증
    4. OS에 맞는 템플릿 결정
    5. 고정된 cluster / resource pool / datastore / network 값 로딩
    6. vCenter 로그인
    7. 각 리소스 ID 조회
    8. 템플릿 기반 배포 API 호출
    9. 작업(Task) 상태 추적
    10. 성공 시 COMPLETED, 실패 시 FAILED
    11. 가능하면 IP 조회 저장

     

    [3] Spring Boot에서 서비스 계층 만들기

     

    3.1. springboot프로젝트 생성

    의존성 : Spring Web / Thymeleaf / Spring Data JPA / PostgreSQL Driver / Lombok / Validation

     

    패키지 : controller / service / repository / entity / dto(requestDto,responseDto) / config 

    src/main/java/com/example/vmportal
     ┣ controller
     ┃ ┗ ProvisionRequestController.java
     ┣ dto
     ┃ ┣ CreateProvisionRequestDto.java
     ┃ ┗ ProvisionRequestResponseDto.java
     ┣ entity
     ┃ ┣ ProvisionRequest.java
     ┃ ┗ ProvisionStatus.java
     ┣ repository
     ┃ ┗ ProvisionRequestRepository.java
     ┣ service
     ┃ ┣ ProvisionRequestService.java
     ┃ ┣ ProvisionPolicyService.java
     ┃ ┣ VCenterClientService.java
     ┃ ┗ ProvisionOrchestratorService.java
     ┣ config
     ┃ ┗ VCenterProperties.java
     ┗ VmPortalApplication.java

     

    src/main/resources/templates
     ┣ form.html
     ┗ requests.html

     

     

     

     

     

    3.2. db생성

    [ VmRequest ]

    필드:

    id / vmName / osType  / cpu  / memoryGb / templateName / clusterName / resourcePoolName / networkName / datastoreName / status / vcTaskId / vmId / ipAddress / errorMessage / createdAt

    상태 enum: [ REQUESTED / VALIDATING / VALIDATED / PROVISIONING / COMPLETED / FAILED ]

     

    3.3. api 생성

    POST /requests

    GET /requests

    GET /request/{id}

     

     

     

     

     

    [4] DB를 붙여서 요청 이력 저장

     

    실제 실습은 너무길어질거같아서 다음 글에쓸게요

     

     

     

    728x90

    댓글

Designed by Tistory.
티스토리 친구하기