vSphere 구성 프로필 API 자동화 – 파트 2 – PowerCLI 및 Python 샘플 코드
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)