Tivoli Provisioning Manager는 구성을 유지하고 자원에 대한 변경사항을 관리하는 기능을 사용하여 우수 사례(일반적인 데이터 센터 프로비저닝 활동에 특히 유용함)를 자동화하는 클라우드 플랫폼을 위한 핵심 프로비저닝 엔진이다. (Tivoli Provisioning Manager 데이터 센터 자동화 기능 목록을 참조한다.) 그림 1에서는 클라우드 플랫폼의 계층에 대해 설명한다.
그림 1. 클라우드 플랫폼 참조 아키텍처
Tivoli Provisioning Manager는 프로비저닝 서비스를 제공하는 프로비저닝 관리 계층에 있다는 것을 알 수 있으며 Hyper-V는 실제 자원을 가상화하고 관리하는 가상 플랫폼이다.
기본적으로 Tivoli Provisioning Manager는 이렇게 기능이 제한된 Hyper-V를 기본 컴퓨터 검색으로 지원할 수 있지만 대부분의 프로비저닝 서비스는 처음부터 개발해야 한다. 이 기사에서는 Tivoli Provisioning Manager에서 Hyper-V 프로비저닝을 구현하고 Tivoli Provisioning Manager의 구성 및 샘플 코드를 제공하는 두 가지 접근 방식에 대해 자세히 다룬다.
Tivoli Provisioning Manager 사용 Hyper-V 지원에 대한 두 가지 접근 방식
Hyper-V는 WMI(Windows Management Instrumentation)를 인프라 및 운영 체제 데이터의 관리를 위한 시작 API로 제공한다. WMI를 바탕으로 하여 세 가지 방법으로 Tivoli Provisioning Manager를 통해 Hyper-V 프로비저닝을 구현할 수 있다.
- PowerShell
- VBScript
- Java™ API
VBScript와 Java API는 구성 및 설계 면에서 차이가 크지 않으므로 VBScript에 대한 프로세스에 대해서만 자세히 설명한다. Java API에 대해 VBScript 프로세스를 사용할 수 있다.
그림 2에서는 Tivoli Provisioning Manager에서 Hyper-V로의 라우트를 보여 준다.
그림 2. Tivoli Provisioning Manager에서의 Hyper-V 통합에 대한 접근 방식
여기서 접근 방식에 대한 정보를 좀더 제공한 후 다음 몇몇 섹션에서 더 자세히 설명한다.
PowerShell은 스크립트 언어와 연관되고 .NET 프레임워크와 통합된 명령행 쉘로 구성된 자동화 프레임워크이다. PowerShell은 WMI와 COM(광범위한 프로그래밍 언어에서 프로세스 간 통신(IPC) 및 동적 오브젝트 작성을 가능하게 하는 소프트웨어 컴포넌트에 대한 Component Object Model 바이너리 인터페이스 표준)에 대한 완전한 액세스를 제공하여 관리자가 로컬 Windows 시스템과 원격 Windows 시스템 모두에서 관리 태스크를 수행할 수 있도록 한다.
이 기사에서 사용되는 Hyper-V용 PowerShell 2.0에서는 사용자에게 VM 작성, 제거와 전원 공급 및 차단을 포함한 Hyper-V에 대한 다양한 조치를 수행할 수 있도록 하는 cmdlets라는 명령 세트를 제공한다.
기본적으로 cmdlets를 사용하여 Hyper-V 프로비저닝을 구현할 수 있지만 새로운 VM에 대한 IP 지정과 같은 향상된 기능의 경우에는 WMI API를 호출해야 한다.
Visual Basic Scripting(VBScript)은 Visual Basic에서 모델링되는 액티브 스크립팅 언어이다.
VBScript는 광범위한 Microsoft 지원 환경에서 사용하는 데 필요한 빠른 인터프리터가 포함된
경량 언어이다. VBScript는 WMI API를 호출하여 VM 관리를 수행할 수 있고 스크립틀릿의 언어를
vbscript로 정의하면 Tivoli Provisioning Manager가 VBScript도
지원할 수 있다.
이 접근 방식을 사용하려면 Java API를 호출하여 WMI API를 수행해야 한다. com4j,
j-Interop 및 J-Integra를 포함하여 시장에 제공된
몇몇 API를 사용하여 태스크를 수행할 수 있다. 일반적으로 이 접근 방식은 한 쪽 끝에서 WMI API를 호출하는
Java 코드를 개발하고 다른 쪽 끝에서 Java 코드를 호출하는 데 필요한 Tivoli Provisioning Manager 워크로드를
개발하기 위한 것이다.
VBScript 접근 방식과 Java API 접근 방식은 매우 비슷하기 때문에 여기서는 PowerShell 및 VBScript 접근 방식에 대해서만 자세히 설명한다.
Tivoli Provisioning Manager가 Hyper-V 서버를 호스트 플랫폼으로 지원하지 않아 Tivoli Provisioning Manager를 통해 Hyper-V에서 직접 조치를 트리거할 수 없기 때문에 Hyper-V 서버를 원격으로 관리하기 위한 중간 서버로 SCVMM(System Center Virtual Machine Manager)을 아키텍처에 도입한다. 이 아키텍처는 그림 3에서 확인할 수 있다.
그림 3. PowerShell을 통한 Hyper-V 프로비저닝 아키텍처
SCVMM은 명령행을 통해 Hyper-V를 관리할 수 있는 내장 PowerShell과 함께 제공된다. Tivoli Provisioning Manager가 식별하는 Windows OS에 SCVMM을 설치해야 한다. 이를 수행하면 SCVMM이 Hyper V와 Tivoli Provisioning Manager 사이의 중간 서버 역할을 하게 되고 Tivoli Provisioning Manager가 SCVMM에서 명령을 실행할 수 있게 된다. 그러면 VM 작성, VM 제거 등과 같은 다양한 조작을 위해 Hyper-V 호스트에서 명령이 실행된다.
Tivoli Provisioning Manager 구성하기
Hyper-V 서버와 SCVMM 서버는 둘 다 Tivoli Provisioning Manager에 정의되어야 한다. 전제조건은 Hyper-V 서버와 SCVMM 서버가 설치되어 적절하게 구성되는 것이다. 그림 4와 같이 SCVMM 콘솔을 통해 가상 시스템을 작성하고 호스트를 추가할 수 있다.
그림 4. SCVMM에서 Hyper-V 서버를 호스트로 추가하기
그림 4에서는 하나의 호스트(r3p13physic)가 SCVMM에 추가되고 세 개의 가상 시스템(HyperV002, HyperV003, HyperV-Manual)이 호스트에서 작성되는 것을 알 수 있다.
SCVMM 서버는 Tivoli Provisioning Manager에서 호스트 플랫폼으로 처리되므로 Hyper-V 서버는 호스트 플랫폼에 지정된다. Tivoli Provisioning Manager에서의 구성 단계는 다음과 같다.
- 호스트 이름, IP 주소 및 서브넷 마스크를 지정하여 Tivoli Provisioning Manager에서 Hyper-V 서버를 컴퓨터로 구성한다.
- 호스트 이름, IP 주소, 서브넷 마스크, 자원 및 신임 정보를 지정하여 Tivoli Provisioning Manager에서 SCVMM 서버를 컴퓨터로 구성한다.
- 새로 추가된 SCVMM 서버를 Tivoli Provisioning Manager의 호스트 플랫폼으로 정의한다.
중요한 점은 Hyper-V 서버에서 가상 시스템을 작성하지만 SCVMM을 전개하여 조작을 호출하기 때문에 CPU, 메모리 및 디스크와 같은 자원이
Hyper-V 서버의 값과 동일한 값을 사용하여 지정되어야 한다는 것이다.
그림 5에서는 CPU를 SCVMM 서버에 추가하는 방법을 보여 준다.
그림 5. Tivoli Provisioning Manager에서 SCVMM 서버를 위한 CPU 자원 추가하기
-
HyperV변수를 정의하고 값을 SCVMM 호스트 플랫폼에 있는 Hyper-V 호스트의 서버 이름으로 지정하여 SCVMM 호스트 플랫폼에서 Hyper-V 서버를 지정한다. 이 방법으로 프로비저닝 중에 중간 호스트 플랫폼에서 실제 Hyper-V 서버를 가져올 수 있다.
프로비저닝을 구현하려면 워크플로우를 Tivoli Provisioning Manager에서 작성해야 한다. 두 가지 샘플 워크플로우가 제공된다.
- 목록 1은 템플리트를 기반으로 가상 시스템을 작성하도록 설계되어 있다.
- 목록 2는 SCVMM이 포함된 PowerShell이 충분히 VM을 작성한 후 비슷한 기타 태스크를 수행할 수 있음을 알 수 있는 하나의 새로 작성된 VM과 작성된 VM에 IP를 지정하기 위해 WMI API가 계속 사용되는 하나의 VM에 IP를 지정하도록 설계되어 있다.
SCVMM 2008 R2 PowerShell이 목록 1의 샘플 코드에서 사용된다.
목록 1. PowerShell을 통한 VM 작성
var cmdlet1 = "Get-VMMserver localhost" var cmdlet21 = "New-VM -Template '" + templateName + "' -Name '" + vmName + "' -VMHost '" + hypervServer + "'" var cmdlet22 = "-Path '"+vmPath+"' -JobGroup '"+guid+"' -RunAsynchronously -TimeZone 4 -AnswerFile $null -RunAsSystem -StartAction NeverAutoTurnOnVM -StopAction SaveVM" var createVMCmd = "\"" + cmdlet1 + ";" + cmdlet21 + ";" + cmdlet22 + "\"" var executeVMCmd = Jython["PowerShell.exe -PSConsoleFile " + vmmPSPath + " -Command " + createVMCmd] Device.ExecuteCommand(DeviceID,executeVMCmd , "", "default","600", "error", returnCode, errorString, returnResult) |
여기서 알 수 있듯이 New-VM cmdlet이 호출되고 가상 시스템을 작성하기 위해
하나의 템플리트가 입력으로 사용된다. 템플리트는 이미 SCVMM 라이브러리에 있어야 한다.
목록 2의 이 샘플 코드에서는 새로 작성된 가상 시스템의 정적 IP를 설정하기 위해 WMI 오브젝트 Win32_NetworkAdapterConfiguration이 호출된다.
목록 2. 새로 작성된 VM에 지정된 IP
var VMMNetworkIndex = "$VMMIndex = (Get-WMIObject -computername '" + vmName + "' -class
Win32_NetworkAdapterConfiguration | where {$_.DHCPEnabled -eq 'true'}).Index"
var VMNetworkConfig = "$networkConfig = (Get-WMIObject -computername '" + vmName + "'
-class Win32_NetworkAdapterConfiguration | where {$_.Index -eq $VMMIndex})"
var setIP = "$networkConfig.EnableStatic('" + vmIPAddress + "','" + vmSubnetMask + "')"
var cmd = "\"" + VMMNetworkIndex + ";" + VMNetworkConfig + ";" + setIP + "\""
var executeCmd1 = Jython["PowerShell.exe -PSConsoleFile " + vmmPSPath + " -Command "
+ cmd]
Device.ExecuteCommand(hostPlatformID, executeCmd1 , "", "default", "600",
"ignore", returnCode, errorString, returnResult)
|
또다른 플랫폼인 Hyper-V 사용 Windows 서버가 이 아키텍처에서 적용된다. Hyper-V는 Windows 서버 가상화 기능을 활성화하는 데 사용되는 서버 가상화 역할을 수행한다. 서버에서 Hyper-V 역할을 활성화하고 나면 서버를 프로비저닝을 위해 Tivoli Provisioning Manager에서 호스트 플랫폼으로 사용할 수 있다.
VBScript는 Tivoli Provisioning Manager 워크플로우에서 정의되며 복사되어 호스트에서 실행될 수 있다. Hyper-V에 대한 WMI 조작이 VBScript에서 호출되고 Windows 서버에서 가상 시스템 프로비저닝을 호출한다.
그림 6에서는 아키텍처에 대해 설명한다.
그림 6. VBScript를 통한 Hyper-V 프로비저닝 아키텍처
Tivoli Provisioning Manager 구성하기
Windows 서버는 Tivoli Provisioning Manager에서 식별되므로 사용자는 Tivoli Provisioning Manager에서 서버를 추가하기만 하면 된다. 먼저 그림 7과 같이 컴퓨터 및 인벤토리 발견을 통해 서버를 Tivoli Provisioning Manager 컴퓨터에 추가한다.
그림 7. Tivoli Provisioning Manager에서 Windows 서버 발견
그런 다음 새로 추가된 컴퓨터를 Tivoli Provisioning Manager의 호스트 플랫폼으로 정의한다. 이 두 단계가 완료되면 Tivoli Provisioning Manager가 이 호스트 플랫폼을 기반으로 프로비저닝을 시작할 수 있다.
VBScript를 Tivoli Provisioning Manager 워크플로우에서 사용하기 위해 언어가 vbscript인 스크립틀릿이 사용된다. 이 스크립틀릿에서는 VBScript가 WMI API를 호출하여 가상 시스템 작성 등과 같은 프로비저닝 조작을 완료할 수 있다. 목록 3에 제공된 샘플 워크플로우는 VM 작성을 위한 것이다.
목록 3. VBScript를 통한 VM 작성
scriptlet(vmName, hostName) language = vbscript target=DeviceID timeout=3600
<<EOF4VMCreate
Dim WMIService
Dim VSManagementService
Dim VSGlobalSettingData
Dim InParam
Set WMIService = GetObject("winmgmts:\\" & hostName & "\root\virtualization")
Set VSManagementService = WMIService.ExecQuery("SELECT * FROM
Msvm_VirtualSystemManagementService").ItemIndex(0)
Set VSGlobalSettingData = WMIService.Get("Msvm_VirtualSystemGlobalSettingData")
.SpawnInstance_()
VSGlobalSettingData.ElementName = vmName
Set InParam = VSManagementService.Methods_("DefineVirtualSystem")
.InParameters.SpawnInstance_()
InParam.SystemSettingData = VSGlobalSettingData.GetText_(1)
VSManagementService.ExecMethod_("DefineVirtualSystem", InParam)
EOF4VMCreate
|
이 샘플 코드에서는 WMI 오브젝트 Msvm_VirtualSystemManagementService를 사용하여 가상 시스템을 정의한다.
이 워크플로우는 지정된 호스트 이름을 가진 가상 시스템을 작성한다.
Windows OS에서 실행 중인 vbscript 언어의 스크립틀릿에는 Cygwin이 미리 설치되어 있어야 하지만 Cygwin을 사용하지 않는 다른 방법이 있다.
스크립트를 .VBS 파일에 저장한 후 Device.ExecuteCommand를 사용하여 vbscript 파일을 실행한다.
이 기사에서는 클라우드 환경에서 Tivoli Provisioning Manager를 통해 Hyper-V 프로비저닝을 구현하는 방법을 보여 주기 위해 두 가지 접근 방식과 아키텍처에 대해 소개했다. 이 기사에서는 Tivoli Provisioning Manager가 기본적으로 Hyper-V 프로비저닝을 지원하지 않기 때문에 Tivoli Provisioning Manager를 재구성하는 방법에 대해 설명했다.
설명한 첫 번째 접근 방식에서는 Hyper-V 서버 + SCVMM + PowerShell 아키텍처를 적용한다.
- Hyper-V 서버는 가상화 솔루션을 제공하는 순수한 경량 호스트 플랫폼이다.
- SCVMM은 Tivoli Provisioning Manager와 직접 상호작용하는 관리 서버의 역할을 수행한다.
- 또한 SCVMM은 PowerShell을 강화하고 Tivoli Provisioning Manager 호출을 용이하게 하는 향상된 PowerShell 인터페이스를 제공한다.
소개한 두 번째 접근 방식에서는 Hyper-V 역할 + VBScript 아키텍처가 포함된 Windows 서버를 사용한다.
- Hyper-V 역할을 가진 Windows 서버는 Hyper-V 호스트와 관리 서버를 통합하여 프로비저닝을 위한 통합된 보기를 제공한다.
실제 환경에서는 개발자 또는 설계자가 이러한 접근 방식의 균형을 유지하고 요구사항 및 사용 가능한 자원에 따라 사용할 접근 방식을 결정해야 한다.
이 기사는 필자의 관점에 따라 작성되었으며 IBM의 의견과는 다를 수 있다.
Tivoli Provisioning Manager 기능
Tivoli Provisioning Manager에서 예상할 수 있는 기능과 각 기능이 데이터 센터 관리에 제공하는 혜택의 목록은 다음과 같다.
- 고급 이미지 관리 기능: 이미지 라이브러리 및 이미지 이동성 지원과 함께 애플리케이션의 신속한 전개를 제공하여 애플리케이션의 전개 속도를 높인다.
- 향상된 확장성(수천 대의 가상 시스템을 동시에 작성할 수 있는 기능 포함): 엔터프라이즈 요구에 맞게 자동화를 확장하여 대규모 가상화 환경에 대한 지원을 전달하여 자원 활용을 최적화한다.
- 향상된 준수 보고: 기본 제공 보고를 통해 보안 및 준수 보고를 개선하여 위험 및 감사 관리를 지원한다.
- 실행 중인 AIX LPAR을 이동하는 기능: 동적으로 워크로드를 이동하여 서버 자원의 활용도를 개선하여 자원 최적화를 위해 워크로드의 균형을 맞춘다.
- Windows 및 Solaris 운영 체제에 대한 개선된 패치 관리 지원: 개별 패칭 대신 Microsoft Security Bulletin 번호를 사용한 패칭을 통해 더 편리하고 신속하게 업데이트된 지원을 제공한다.
- 사전 빌드된 우수 사례 자동화 패키지: 다수의 공통 태스크에 대한 솔루션을 전달한다.
- 유연한 사용자 정의 자동화 패키지를 빌드하는 데 필요한 개발 툴킷: 사용자 환경 및 IT 또는 비즈니스 프로세스에 맞게 자동화 솔루션을 신속하게 조정할 수 있다.
- 조직의 기존 IT 인프라와의 통합
교육
-
Tivoli Provisioning Manager에 대한 추가 정보는 다음을 참조한다.
- Tivoli Provisioning Manager의 VBScript 스크립틀릿의 사용법에 대해 살펴본다.
- Tivoli Provisioning Manager에 대한 인기 주제 문서의 호스트를 찾는다.
- developerWorks Tivoli에서는 최근 기사인 "Create a virtual data center with Tivoli Provisioning Manager"를 포함하여 Tivoli Provisioning Manager에 대한 많은 정보를 얻을 수 있다.
-
Hyper-V에 대한 추가 정보는 다음을 참조한다.
- Hyper-V Server 2008 R2
- Virtualization with Hyper-V
- SCVMM Virtual Machine Manager
- Hyper-V 아키텍처 개요
- Hyper-V 및 WMI 소개
- VBScript 또는 PowerShell을 사용하여 Hyper-V를 자동화하는 방법
- The PowerShell Management Library for Hyper-V
-
Java 환경에서 WMI에 액세스하는 방법은 다음과 같다.
-
IBM의 Tivoli Provisioning Manager 사이트에서 Tivoli Provisioning Manager에 대한 자세한 데이터를 확인해 보자.
-
developerWorks cloud developer resources에서는
클라우드 배치를 위한 프로젝트를 개발 중인 애플리케이션 및 서비스 개발자의 경험과 지식을 찾아보고 공유할 수 있다.
토론
-
developerWorks에는 Tivoli Provisioning Manager 커뮤니티 포럼과 Tivoli Provisioning Manager 소프트웨어 프로비저닝 그룹이 있다.
-
My
developerWorks의 클라우드 컴퓨팅 그룹에 참여하자.
-
My developerWorks에 있는 뛰어난 클라우드 블로그를 모두 읽어보자.
-
연결, 공유 및 협업을 위한 전문가 네트워크이자 통합 커뮤니티 도구 세트인 My
developerWorks에 참여하자.
Mu Dan Cao는 클라우드 서비스 연구 및 개발에 중점을 두고 있는 소프트웨어 엔지니어이다. 현재는 프로비저닝 플랫폼 및 포털 프로젝트에 대해 작업하면서 다양한 가상 플랫폼에서의 Tivoli Provisioning Manager 워크플로우 프로비저닝을 담당하고 있다. 관심 분야는 가상화 기술, 클라우드 프로비저닝 및 데이터 분석이다.
Song Nie는 클라우드 플랫폼을 위한 기술 팀장이다. 그는 Common Service Delivery Platform, Smart Business Desktop Cloud, Open Application Development Environment 및 Provisioning Platform and Portal을 포함한 여러 클라우드 프로젝트에 대해 작업했으며 워크플로우 개발, 모니터링, 가상화, BSS, OSS 등을 포함한 클라우드 아키텍처 및 기술 세부사항에 대해 잘 알고 있다.