vSphere 구성 프로필 API 자동화 – 파트 2 – PowerCLI 및 Python 샘플 코드

발행: (2026년 2월 18일 오후 05:42 GMT+9)
3 분 소요

Source: VMware Blog

Source:

vSphere Configuration Profile API – Python Sample

Author: Jatin Purohit
Title: Product Marketing Engineer, Broadcom

vSphere Configuration Profile로 관리되는 클러스터 전환

import requests
import urllib3
import json
import time

from vmware.vapi.vsphere.client import create_vsphere_client

# ESXi settings services
from com.vmware.esx.settings.clusters.enablement_client import Configuration
from com.vmware.esx.settings.clusters_client import Configuration as ClusterConfiguration
from com.vmware.esx.settings.clusters.enablement.configuration_client import Transition
from com.vmware.esx.settings.clusters.configuration.reports_client import LastComplianceResult
from com.vmware.esx.settings.clusters.configuration_client import Drafts

# -------------------------------------------------------------------------
# Create a vSphere client session
# -------------------------------------------------------------------------
session = requests.session()
session.verify = False                     # Disable SSL verification (for demo only)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

vsphere_client = create_vsphere_client(
    server='vc_fqdn_or_ip',
    username='vc_username',
    password='vc_password',
    session=session
)

print(f"\033[92mConnected to vCenter Server, Session ID: \033[0m{vsphere_client.session_id}")

# =============================================================================
# 1️⃣ Transition a cluster to be managed by vSphere Configuration Profile
# =============================================================================

# -------------------------------------------------------------------------
# Check VCP enablement status on the cluster
# -------------------------------------------------------------------------
print("\033[92m1. Checking VCP Configuration for cluster: domain-c10 \033[0m")
print("GET /esx/settings/clusters/:cluster/enablement/configuration")

vcp_service = Configuration(vsphere_client._stub_config)
result = vcp_service.get(cluster="domain-c10")
print(f"\033[92mvSphere Configuration Profile Enablement Status on cluster domain-c10: \033[0m{result.enabled}")

# -------------------------------------------------------------------------
# Invoke cluster eligibility check for VCP transition
# -------------------------------------------------------------------------
print("\n\033[92m2. Invoking Cluster Eligibility Check for Configuration Transition... \033[0m")
print("POST /esx/settings/clusters/:cluster/enablement/configuration/transition?action=checkEligibility&vmw-task=true")

transition_service = Transition(vsphere_client._stub_config)
check_eligibility_task = transition_service.check_eligibility_task(cluster="domain-c10")
print(f"\033[92mCluster Eligibility check initiated successfully. VMware Task ID: \033[0m{check_eligibility_task.task_id}")

time.sleep(120)   # Wait for the task to complete (adjust as needed)

# -------------------------------------------------------------------------
# Import Configuration Profile from a reference host
# -------------------------------------------------------------------------
print("\n\033[92m3. Importing Configuration Profile from reference Host for VCP Transition... \033[0m")
print("POST /esx/settings/clusters/:cluster/enablement/configuration/transition?action=importFromHost&vmw-task=true")

import_task = transition_service.import_from_host_task(cluster="domain-c10", host="host-13")
print(f"\033[92mConfiguration Profile import initiated successfully. VMware Task ID: \033[0m{import_task.task_id}")

time.sleep(120)

# -------------------------------------------------------------------------
# Validate the imported Configuration Profile
# -------------------------------------------------------------------------
print("\n\033[92m4. Validating Imported Cluster Configuration Profile for VCP Transition... \033[0m")
print("POST /esx/settings/clusters/:cluster/enablement/configuration/transition")

Source:

클러스터에서 Desired State Configuration (DSC) 관리

참고

  • 이 스크립트는 SSL 검증을 비활성화(session.verify = False)하고 관련 경고를 억제합니다 – 이는 신뢰할 수 있는 환경에서 테스트할 때 오직 적합합니다.
  • time.sleep(120)은 비동기 작업이 완료될 때까지 기다리는 간단한 방법으로 사용됩니다; 실제 운영 환경에서는 고정 지연 대신 작업 상태를 폴링하는 것이 바람직합니다.
  • 자리표시자 값(vc_fqdn_or_ip, vc_username, vc_password, domain-c10, host-13)을 실제 환경에 맞는 식별자로 교체하십시오.

Configuration Draft created successfully, Draft ID: {draft_id}

print(“\n\033[92m10. Exporting Cluster Configuration from Draft…\033[0m”)

print(“POST /esx/settings/clusters/:cluster/configuration/drafts/{draft}?action=exportConfig”) draft_config = draft_service.export_config(cluster=“domain-c10”, draft=draft_id) print(draft_config)

Convert the returned object to a mutable

0 조회
Back to Blog

관련 글

더 보기 »