vmware vrealize orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18...

258
VMware vRealize Orchestrator를 사용한 개 vRealize Orchestrator 7.3 이 문서는 새 버전으로 교체되기 전까지 나열된 각 제품 버전 및 모든 이후 버전을 지원합니다. 이 문서에 대한 최 신 버전을 확인하려면 http://www.vmware.com/kr/support/pubs를 참 조하십시오. KO-002550-00

Upload: others

Post on 10-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealizeOrchestrator를 사용한 개

발vRealize Orchestrator 7.3

이 문서는 새 버전으로 교체되기 전까지 나열된 각 제품버전 및 모든 이후 버전을 지원합니다. 이 문서에 대한 최신 버전을 확인하려면 http://www.vmware.com/kr/support/pubs를 참조하십시오.

KO-002550-00

Page 2: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator를 사용한 개발

2 VMware, Inc.

VMware 웹 사이트 (http://www.vmware.com/kr/support/) 에서 최신 기술 문서를 확인할 수 있습니다.

또한 VMware 웹 사이트에서 최신 제품 업데이트를 제공합니다.

이 문서에 대한 의견이 있으면 [email protected]으로 사용자 의견을 보내주십시오.

Copyright © 2008–2017 VMware, Inc. 판권 소유. 저작권 및 상표 정보.

VMware, Inc.3401 Hillview Ave.Palo Alto, CA 94304www.vmware.com

Page 3: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

목차

VMware vRealize Orchestrator 를 사용한 개발 9

1 워크플로 개발 11

워크플로의 핵심 개념 13

워크플로 매개 변수 13

워크플로 특성 13

워크플로 스키마 14

워크플로 프레젠테이션 14

워크플로 토큰 14

워크플로 개발 프로세스의 단계 14

워크플로 개발에 대한 모범 사례 14

Orchestrator 클라이언트 액세스 권한 15

개발 중 워크플로 테스트 15

워크플로 생성 및 편집 15

워크플로 생성 16

워크플로 편집 16

표준 라이브러리에서 워크플로 편집 16

워크플로 편집기 탭 17

일반 워크플로 정보 입력 18

특성 및 매개 변수 정의 19

워크플로 매개 변수 정의 19

워크플로 특성 정의 20

특성 및 매개 변수 이름 지정 제한 사항 20

워크플로 스키마 21

워크플로 스키마 보기 22

워크플로 스키마에서 워크플로 작성 22

스키마 요소 25

스키마 요소 속성 28

링크 및 바인딩 30

의사 결정 35

예외 처리 38

오류 처리기 사용 39

Foreach 요소 및 복합 유형 40

워크플로에 스위치 작업 추가 43

플러그인 개발 43

플러그인 개요 43

플러그인 내용 및 구조 50

Orchestrator 플러그인 API 참조 54

vso.xml 플러그인 정의 파일의 요소 63

Orchestrator 플러그인 개발에 대한 모범 사례 79

워크플로를 시작할 때 사용자로부터 입력 매개 변수 가져오기 91

프레젠테이션 탭에서 입력 매개 변수 대화 상자 생성 91

VMware, Inc. 3

Page 4: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

매개 변수 속성 설정 93

워크플로가 실행되는 동안 사용자 상호 작용 요청 96

워크플로에 사용자 상호 작용 추가 97

사용자 상호 작용 security.group 특성 설정 97

절대 날짜로 timeout.date 특성 설정 98

사용자 상호 작용에 대한 상대 시간 초과 계산 99

상대 날짜로 timeout.date 특성 설정 100

사용자 상호 작용에 대한 외부 입력 정의 101

사용자 상호 작용 예외 동작 정의 101

사용자 상호 작용에 대한 입력 매개 변수 대화 상자 생성 103

사용자 상호 작용 요청에 응답 104

워크플로 내에서 워크플로 호출 104

워크플로를 호출하는 워크플로 요소 105

동기식으로 워크플로 호출 107

비동기식으로 워크플로 호출 108

워크플로 스케줄링 108

다른 워크플로 내에서 원격 워크플로를 호출하기 위한 사전 요구 사항 109

동시에 여러 워크플로 호출 110

선택한 개체에서 워크플로 실행 111

직렬 워크플로의 시작 워크플로 및 병렬 워크플로의 시작 워크플로 구현 111

장기 실행 워크플로 개발 113

타이머 기반 워크플로의 상대 시간 및 날짜 설정 113

타이머 기반 장기 실행 워크플로 생성 114

트리거 개체 생성 115

트리거 기반 장기 실행 워크플로 생성 117

구성 요소 118

구성 요소 생성 118

워크플로 사용자 권한 119

워크플로에서 사용자 사용 권한 설정 119

워크플로 유효성 검사 120

워크플로 유효성 검사 및 유효성 검사 오류 수정 120

워크플로 디버깅 121

워크플로 디버깅 121

예제 워크플로 디버깅 122

실행 중인 워크플로 123

워크플로 편집기에서 워크플로 실행 123

워크플로 실행 124

실패한 워크플로 실행 재개 125

실패한 워크플로 실행을 재개하기 위한 동작 설정 125

실패한 워크플로 실행을 재개할 수 있는 사용자 지정 속성 설정 126

실패한 워크플로 실행 재개 126

워크플로 설명서 생성 126

워크플로 버전 기록 사용 127

삭제된 워크플로 복원 127

간단한 예제 워크플로 개발 128

간단한 워크플로 예제 생성 129

간단한 워크플로 예제의 스키마 생성 130

간단한 워크플로 예제 영역 생성 132

간단한 워크플로 예제의 매개 변수 정의 134

VMware vRealize Orchestrator를 사용한 개발

4 VMware, Inc.

Page 5: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

간단한 워크플로 예제 의사 결정 바인딩 정의 134

간단한 워크플로 예제의 작업 요소 바인딩 135

간단한 워크플로 예제의 스크립팅된 작업 요소 바인딩 138

간단한 워크플로 예제 예외 바인딩 정의 145

간단한 워크플로 예제의 특성에 대해 읽기-쓰기 속성 설정 145

간단한 워크플로 예제 매개 변수 속성 설정 146

간단한 워크플로 예제 입력 매개 변수 대화상자의 레이아웃 설정 148

간단한 워크플로 예제 검증 및 실행 149

복잡한 워크플로 개발 150

복잡한 워크플로 예제 생성 151

복잡한 워크플로 예제에 대한 사용자 지정 작업 생성 152

복잡한 워크플로 예제의 스키마 생성 153

복잡한 워크플로 예제 영역 생성 155

복잡한 워크플로 예제의 매개 변수 정의 156

복잡한 워크플로 예제에 대한 바인딩 생성 157

복잡한 워크플로 예제 특성 속성 설정 165

복잡한 워크플로 예제 입력 매개 변수의 레이아웃 생성 166

복잡한 워크플로 예제 검증 및 실행 167

2 스크립팅 169

스크립팅이 필요한 Orchestrator 요소 169

Orchestrator의 Mozilla Rhino 구현에 대한 제한 사항 170

Orchestrator 스크립팅 API 사용 170

워크플로 편집기에서 스크립팅 엔진 액세스 171

작업 또는 정책 편집기에서 스크립팅 엔진 액세스 172

Orchestrator API 탐색기 액세스 172

Orchestrator API 탐색기를 사용해 개체 찾기 172

스크립트 작성 173

스크립트에 매개 변수 추가 175

JavaScript 및 워크플로에서 Orchestrator 서버 파일 시스템 액세스 175

JavaScript에서 Java 클래스 액세스 176

JavaScript에서 운영 체제 명령 액세스 176

vCenter Server 플러그인으로 XPath 표현식 사용 176

vCenter Server 플러그인으로 XPath 표현식 사용 177

예외 처리 지침 177

Orchestrator JavaScript 예제 178

기본 스크립팅 예제 179

이메일 스크립팅 예제 180

파일 시스템 스크립팅 예제 182

LDAP 스크립팅 예제 182

로깅 스크립팅 예제 183

네트워킹 스크립팅 예제 183

워크플로 스크립팅 예제 183

3 작업 개발 185

작업 재사용 185

작업 보기 액세스 185

작업 보기의 구성 요소 186

목차

VMware, Inc. 5

Page 6: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

작업 생성 186

작업 생성 186

작업을 구현하는 요소 찾기 187

작업 코딩 지침 187

작업 버전 기록 사용 188

삭제된 작업 복원 189

4 리소스 요소 생성 191

리소스 요소 보기 191

리소스 요소로 사용할 외부 개체 가져오기 192

리소스 요소 정보 및 액세스 권한 편집 192

파일에 리소스 요소 저장 193

리소스 요소 업데이트 193

워크플로에 리소스 요소 추가 194

5 패키지 생성 195

패키지 생성 195

패키지에서 사용자 사용 권한 설정 196

6 플러그인 개발 199

플러그인 개요 199

Orchestrator 플러그인의 구조 200

Orchestrator에 외부 API 노출 201

플러그인의 구성 요소 201

vso.xml 파일의 역할 202

플러그인 어댑터의 역할 203

플러그인 팩토리의 역할 203

찾기 개체의 역할 204

스크립팅 개체의 역할 204

이벤트 처리기의 역할 205

플러그인 내용 및 구조 206

vso.xml 파일에서 애플리케이션 매핑 정의 206

vso.xml 플러그인 정의 파일의 형식 207

플러그인 개체 이름 지정 208

플러그인 개체 명명 규칙 208

플러그인의 파일 구조 209

Orchestrator 플러그인 API 참조 210

IAop 인터페이스 210

IDynamicFinder 인터페이스 210

IPluginAdaptor 인터페이스 210

IPluginEventPublisher 인터페이스 211

IPluginFactory 인터페이스 212

IPluginNotificationHandler 인터페이스 213

IPluginPublisher 인터페이스 213

WebConfigurationAdaptor 인터페이스 213

PluginTrigger 클래스 214

PluginWatcher 클래스 215

QueryResult 클래스 215

VMware vRealize Orchestrator를 사용한 개발

6 VMware, Inc.

Page 7: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

SDKFinderProperty 클래스 216

PluginExecutionException 클래스 217

PluginOperationException 클래스 217

HasChildrenResult 열거형 217

ScriptingAttribute 주석 유형 218

ScriptingFunction 주석 유형 218

ScriptingParameter 주석 유형 219

vso.xml 플러그인 정의 파일의 요소 219

모듈 요소 219

description 요소 220

deprecated 요소 220

url 요소 220

설치 요소 221

action 요소 221

finder-datasources 요소 221

finder-datasource 요소 222

인벤토리 요소 223

finders 요소 223

finder 요소 223

속성 요소 224

속성 요소 224

관계 요소 225

관계 요소 225

id 요소 226

인벤토리-하위 항목 요소 226

관계-링크 요소 226

events 요소 227

trigger 요소 227

trigger-properties 요소 227

trigger-properties 요소 227

gauge 요소 228

scripting-objects 요소 228

개체 요소 229

constructors 요소 229

constructor 요소 230

생성자 parameters 요소 230

생성자 parameter 요소 230

attributes 요소 230

attribute 요소 231

메서드 요소 231

메서드 요소 232

example 요소 232

code 요소 233

메서드 매개 변수 요소 233

메서드 parameter 요소 233

singleton 요소 233

enumerations 요소 234

enumeration 요소 234

entries 요소 234

목차

VMware, Inc. 7

Page 8: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

entry 요소 235

Orchestrator 플러그인 개발에 대한 모범 사례 235

Orchestrator 플러그인 빌드 방법 235

Orchestrator 플러그인 유형 237

플러그인 구현 240

Orchestrator 플러그인 개발에 대한 권장 사항 244

플러그인 사용자 인터페이스 문자열 및 API 설명서 작성 246

7 Maven을 사용하여 플러그인 생성 249

아키타입에서 Maven을 사용하여 Orchestrator 플러그인 생성 249

Maven 아키타입 250

Maven 기반 플러그인 개발 모범 사례 250

색인 253

VMware vRealize Orchestrator를 사용한 개발

8 VMware, Inc.

Page 9: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator 를 사용한개발

VMware vRealize Orchestrator를 사용한 개발에서는 사용자 지정 VMware®

vRealize Orchestrator 워크플로 및 작업 개발에 대한 정보 및 지침을 제공합니다.

이 설명서에는 스크립팅이 필요한 Orchestrator 요소에 대한 정보와 JavaScript 예제도 수록되어 있습니다. 또한 VMware vRealize Orchestrator를 사용한 개발에서는 리소스 및 패키지를 만드는 방법에 대한 지침을 제공합니다.

대상 사용자이 정보는 사용자 지정 Orchestrator 워크플로 및 작업과 사용자 지정 빌딩 블록을 만들려는 개발자를대상으로 합니다.

VMware, Inc. 9

Page 10: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator를 사용한 개발

10 VMware, Inc.

Page 11: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로 개발 1Orchestrator 클라이언트 인터페이스에서 워크플로를 개발합니다. 워크플로 개발에는 워크플로 편집기,기본 제공 Mozilla Rhino JavaScript 스크립팅 엔진, Orchestrator 및 vCenter Server API 등이사용됩니다.

n 워크플로의 핵심 개념(13 페이지)

워크플로는 스키마, 특성 및 매개 변수로 구성됩니다. 워크플로 스키마는 워크플로의 주요 구성 요소로, 모든 워크플로 요소와 요소 간의 논리적 연결을 정의합니다. 워크플로 특성 및 매개 변수는 워크플로에서 데이터를 전송하는 데 사용하는 변수입니다. Orchestrator에서는 워크플로가 실행될때마다 특정 워크플로 실행의 세부 정보를 기록하여 워크플로 토큰을 저장합니다.

n 워크플로 개발 프로세스의 단계(14 페이지)

워크플로 개발 프로세스에는 일련의 단계가 포함됩니다. 개발 중인 워크플로 유형에 따라 다양한 단계 순서를 따르거나 단계를 건너뛸 수 있습니다. 예를 들어 사용자 지정 스크립팅 없이 워크플로를만들 수 잇습니다.

n 워크플로 개발에 대한 모범 사례(14 페이지)

VMware는 여러 사용자가 있는 경우와 클러스터링된 환경에서 Orchestrator 워크플로 개발에 대한 여러 가지 모범 사례를 권장합니다.

n Orchestrator 클라이언트 액세스 권한(15 페이지)

기본적으로 Orchestrator 관리자 LDAP 그룹의 구성원만 Orchestrator 클라이언트에 액세스할수 있습니다.

n 개발 중 워크플로 테스트(15 페이지)

워크플로를 완료하지 않았거나 종료 요소를 포함하지 않았더라도 개발 과정 중 언제든지 워크플로를테스트할 수 있습니다.

n 워크플로 생성 및 편집(15 페이지)

Orchestrator 클라이언트에서 워크플로를 생성하고 워크플로 편집기에서 편집합니다. 워크플로편집기는 워크플로를 개발할 수 있는 Orchestrator 클라이언트의 IDE입니다.

n 일반 워크플로 정보 입력(18 페이지)

사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및 설명을 입력하고 특성과 워크플로 동작의특정 측면을 정의하며 버전 번호를 설정하고 서명을 확인하며 사용자 권한을 설정합니다.

n 특성 및 매개 변수 정의(19 페이지)

워크플로를 생성한 후에는 워크플로의 전역 특성, 입력 매개 변수 및 출력 매개 변수를 정의해야 합니다.

n 워크플로 스키마(21 페이지)

워크플로 스키마는 워크플로를 상호 연결된 워크플로 요소의 플로 다이어그램으로 표시하는 워크플로의 그래픽 표현입니다. 워크플로 스키마는 워크플로의 논리적 흐름을 정의합니다.

VMware, Inc. 11

Page 12: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 플러그인 개발(43 페이지)

Orchestrator는 개방형 플러그인 아키텍처를 통해 관리 및 운영 솔루션과의 통합을 지원합니다.Orchestrator 클라이언트를 사용하여 플러그인 워크플로를 실행 및 생성하고 플러그인 API에 액세스할 수 있습니다.

n 워크플로를 시작할 때 사용자로부터 입력 매개 변수 가져오기(91 페이지)

워크플로에 입력 매개 변수가 필요하면 실행될 때 사용자가 필수 입력 매개 변수를 입력하는 대화상자가 열립니다. 워크플로 편집기의 프레젠테이션 탭에서 이 대화상자의 내용 및 레이아웃 또는 프레젠테이션을 구성할 수 있습니다.

n (선택 사항) 워크플로가 실행되는 동안 사용자 상호 작용 요청(96 페이지)

워크플로가 실행되는 동안 외부 소스의 추가 입력 매개 변수가 필요한 경우가 있을 수 있습니다. 이러한 입력 매개 변수는 다른 애플리케이션 또는 워크플로에서 가져오거나 사용자가 직접 제공할 수있습니다.

n 워크플로 내에서 워크플로 호출(104 페이지)

워크플로를 실행하는 동안 다른 워크플로를 호출할 수 있습니다. 워크플로에서 다른 워크플로를 시작할 수 있는 것은 워크플로 실행에 다른 워크플로의 결과가 입력 매개 변수로 필요하기 때문이거나다른 워크플로를 시작하고 해당 워크플로가 독립적으로 계속 실행되도록 둘 수 있기 때문입니다. 또한 워크플로에서 이후의 지정된 시간에 워크플로를 시작하거나 여러 워크플로를 동시에 시작할 수있습니다.

n 선택한 개체에서 워크플로 실행(111 페이지)

선택한 개체에서 워크플로를 실행하여 반복 작업을 자동화할 수 있습니다. 예를 들어 가상 시스템폴더의 모든 가상 시스템에 대한 스냅샷을 생성하는 워크플로를 만들거나, 지정된 호스트에 있는 모든 가상 시스템의 전원을 끄는 워크플로를 만들 수 있습니다.

n 장기 실행 워크플로 개발(113 페이지)

대기 상태의 워크플로는 응답이 필요한 개체를 지속적으로 폴링하기 때문에 시스템 리소스를 소비합니다. 워크플로가 필요한 응답을 수신하기 전에 오랜 시간 대기해야 할 수 있음을 아는 경우 해당 워크플로에 장기 실행 워크플로 요소를 추가할 수 있습니다.

n 구성 요소(118 페이지)

구성 요소는 전체 Orchestrator 서버 배포에서 상수를 구성하는 데 사용할 수 있는 특성 목록입니다.

n 워크플로 사용자 권한(119 페이지)

Orchestrator 그룹에 적용 가능한 권한 수준을 정의해 워크플로에 대한 액세스를 허용 또는 거부할 수 있습니다.

n 워크플로 유효성 검사(120 페이지)

Orchestrator는 워크플로 유효성 검사 도구를 제공합니다. 워크플로 유효성 검사는 워크플로의 오류를 식별하고 데이터가 한 요소에서 다음 요소로 올바르게 이동하는지 확인하는 데 도움이 됩니다.

n 워크플로 디버깅(121 페이지)

Orchestrator에서는 워크플로 디버깅 도구를 제공합니다. 워크플로를 디버깅하여 작업 시작 시 입력 및 출력 매개 변수와 특성을 검사하고, 워크플로가 실행되는 동안 편집 모드에서 매개 변수 또는특성 값을 바꾸고, 마지막으로 실패한 작업에서 워크플로를 재개할 수 있습니다.

n 실행 중인 워크플로(123 페이지)

Orchestrator 워크플로는 이벤트의 논리적 흐름에 따라 실행됩니다.

n 실패한 워크플로 실행 재개(125 페이지)

워크플로에 실패한 경우 Orchestrator에서는 마지막으로 실패한 작업에서 워크플로를 재개할 수있는 옵션을 제공합니다.

n 워크플로 설명서 생성(126 페이지)

선택한 워크플로 또는 워크플로 폴더에 대한 설명서를 언제든지 PDF 형식으로 내보낼 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

12 VMware, Inc.

Page 13: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 워크플로 버전 기록 사용(127 페이지)

버전 기록을 사용하여 워크플로를 이전에 저장된 상태로 되돌릴 수 있습니다. 워크플로 상태를 이전또는 이후 워크플로 버전으로 되돌릴 수 있습니다. 또한 워크플로의 현재 상태와 저장된 버전 간의차이점을 비교할 수 있습니다.

n 삭제된 워크플로 복원(127 페이지)

워크플로 라이브러리에서 삭제된 워크플로를 복원할 수 있습니다.

n 간단한 예제 워크플로 개발(128 페이지)

간단한 예제 워크플로 개발에서는 워크플로 개발 프로세스의 가장 일반적인 단계를 보여 줍니다.

n 복잡한 워크플로 개발(150 페이지)

복잡한 예제 워크플로 개발에서는 워크플로 개발 프로세스의 가장 일반적인 단계 및 고급 시나리오(예: 사용자 지정 의사 결정 및 루프 생성)를 보여 줍니다.

워크플로의 핵심 개념워크플로는 스키마, 특성 및 매개 변수로 구성됩니다. 워크플로 스키마는 워크플로의 주요 구성 요소로,모든 워크플로 요소와 요소 간의 논리적 연결을 정의합니다. 워크플로 특성 및 매개 변수는 워크플로에서데이터를 전송하는 데 사용하는 변수입니다. Orchestrator에서는 워크플로가 실행될 때마다 특정 워크플로 실행의 세부 정보를 기록하여 워크플로 토큰을 저장합니다.

워크플로 매개 변수

워크플로는 입력 매개 변수를 받아 실행되면 출력 매개 변수를 생성합니다.

입력 매개 변수

대부분의 워크플로에는 실행할 특정 입력 매개 변수 집합이 필요합니다. 입력 매개 변수는 워크플로가 시작 시 처리하는 인수입니다. 워크플로가 시작 시 처리할 입력 매개 변수는 사용자, 애플리케이션, 다른 워크플로 또는 작업에 의해 전달됩니다.

예를 들어 가상 시스템을 재설정하는 워크플로의 경우 가상 시스템의 이름이 입력 매개 변수로 필요합니다.

출력 매개 변수

워크플로의 출력 매개 변수는 워크플로의 실행 결과를 나타냅니다. 출력 매개 변수는 워크플로 또는 워크플로 요소가 실행될 때 변경될 수 있습니다. 워크플로는 실행 중에 다른 워크플로의 출력 매개 변수를 입력 매개 변수로 받을 수 있습니다.

예를 들어 가상 시스템의 스냅샷을 생성하는 워크플로의 경우 출력 매개 변수는 결과 스냅샷입니다.

워크플로 특성

워크플로 요소는 입력 매개 변수로 받은 데이터를 처리하고 결과 데이터를 워크플로 특성이나 출력 매개변수로 설정합니다.

읽기 전용 워크플로 특성은 워크플로의 전역 상수 역할을 합니다. 쓰기 가능 특성은 워크플로의 전역 변수역할을 합니다.

특성을 사용해 워크플로의 요소 간에 데이터를 전송할 수 있습니다. 다음 방법으로 특성을 가져올 수 있습니다.

n 워크플로를 생성할 때 특성 정의

n 워크플로 요소의 출력 매개 변수를 워크플로 특성으로 설정

n 구성 요소에서 특성 상속

1장 워크플로 개발

VMware, Inc. 13

Page 14: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로 스키마

워크플로 스키마는 워크플로를 상호 연결된 워크플로 요소의 플로 다이어그램으로 표시하는 그래픽 표현입니다. 워크플로 스키마는 워크플로의 논리를 결정하므로 워크플로에서 가장 중요한 요소입니다.

워크플로 프레젠테이션

사용자는 워크플로를 실행할 때 워크플로 프레젠테이션에서 워크플로의 입력 매개 변수 값을 제공합니다.워크플로 프레젠테이션을 구성할 때 워크플로 입력 매개 변수의 유형 및 개수를 고려해야 합니다.

워크플로 토큰

워크플로 토큰은 실행 중이거나 실행된 워크플로를 나타냅니다.

워크플로는 일반적인 단계 시퀀스 및 일반적인 필수 입력 매개 변수 집합을 정의하는 프로세스에 대한 추상적 설명입니다. 실제 입력 매개 변수 집합을 사용하여 워크플로를 실행하면 제공한 특정 입력 매개 변수에 따라 동작하는 이 추상적 워크플로의 인스턴스가 수신됩니다. 완료되거나 실행 중인 워크플로의 이 특정 인스턴스를 워크플로 토큰이라고 합니다.

워크플로 토큰 특성

워크플로 토큰 특성은 워크플로 토큰 실행에 사용되는 특정 매개 변수입니다. 워크플로 토큰 특성은 워크플로의 전역 특성과 워크플로 토큰을 실행할 특정 입력 및 출력 매개 변수의 집합체입니다.

워크플로 개발 프로세스의 단계워크플로 개발 프로세스에는 일련의 단계가 포함됩니다. 개발 중인 워크플로 유형에 따라 다양한 단계 순서를 따르거나 단계를 건너뛸 수 있습니다. 예를 들어 사용자 지정 스크립팅 없이 워크플로를 만들 수 잇습니다.

일반적으로 다음 단계에 따라 워크플로를 개발합니다.

1 새 워크플로를 만들거나 표준 라이브러리에서 기존 워크플로의 복제본을 만듭니다.

2 워크플로에 대한 일반 정보를 입력합니다.

3 워크플로의 입력 매개 변수를 정의합니다.

4 워크플로의 논리적 흐름을 정의할 워크플로 스키마를 배치하고 연결합니다.

5 각 스키마 요소의 입력 및 출력 매개 변수를 워크플로 특성에 바인딩합니다.

6 스크립팅 가능한 작업 요소나 사용자 지정 의사 결정 요소에 필요한 스크립트를 작성합니다.

7 사용자가 워크플로를 실행할 때 보는 입력 매개 변수 대화상자의 레이아웃을 정의할 워크플로 프레젠테이션을 만듭니다.

8 워크플로의 유효성을 검사합니다.

워크플로 개발에 대한 모범 사례VMware는 여러 사용자가 있는 경우와 클러스터링된 환경에서 Orchestrator 워크플로 개발에 대한 여러 가지 모범 사례를 권장합니다.

n 각 개발자는 워크플로 생성 및 개발에 대해 전용 테스트된 독립형 Orchestrator 인스턴스를 보유하고 있습니다.

n 워크플로는 공유된 소스 코드 제어 시스템에서 전문가 프로젝트로 저장됩니다.

n Orchestrator 운영 배포에서 최적의 성능을 보장하려면 계획된 창에서 워크플로를 가져오는 것이가장 좋습니다.

VMware vRealize Orchestrator를 사용한 개발

14 VMware, Inc.

Page 15: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n Orchestrator 클러스터에 워크플로를 가져올 때 로드 밸런서 가상 서버의 주소 대신Orchestrator의 로컬 호스트 이름 또는 IP 주소를 사용하여 Orchestrator 클라이언트를 노드 중하나에 연결합니다.

참고 워크플로를 수정할 경우 다음 번 워크플로 실행에 영향을 미칩니다.

Orchestrator 클라이언트 액세스 권한기본적으로 Orchestrator 관리자 LDAP 그룹의 구성원만 Orchestrator 클라이언트에 액세스할 수 있습니다.

Orchestrator 관리자는 보기 이상의 권한을 설정하여 다른 사용자 그룹에 Orchestrator 클라이언트에대한 액세스 권한을 부여할 수 있습니다.

사용자가 Orchestrator 클라이언트에 액세스하려면 관리자가 Orchestrator 관리자 LDAP 그룹에 사용자를 추가하거나, 사용자가 구성원으로 속해 있는 그룹에보기, 검사, 편집, 실행 또는 관리 권한을 설정해야 합니다.

개발 중 워크플로 테스트워크플로를 완료하지 않았거나 종료 요소를 포함하지 않았더라도 개발 과정 중 언제든지 워크플로를 테스트할 수 있습니다.

기본적으로 Orchestrator는 워크플로를 실행하기 전에 워크플로가 유효한지 확인합니다. 테스트 목적으로 부분 워크플로를 실행하려면 워크플로 개발 중 자동 검증을 비활성화합니다.

참고 워크플로 개발을 완료하면 자동 검증을 다시 활성화하는 것을 잊지 마십시오.

프로시저

1 Orchestrator 클라이언트 메뉴에서 도구 > 사용자 기본 설정을 클릭합니다.

2 워크플로 탭을 클릭합니다.

3 워크플로 실행 전 유효성 검사 확인란의 선택을 취소합니다.

자동 워크플로 유효성 검사를 비활성화했습니다.

워크플로 생성 및 편집Orchestrator 클라이언트에서 워크플로를 생성하고 워크플로 편집기에서 편집합니다. 워크플로 편집기는 워크플로를 개발할 수 있는 Orchestrator 클라이언트의 IDE입니다.

기존 워크플로를 편집하여 워크플로 편집기를 엽니다.

n 워크플로 생성(16 페이지)

Orchestrator 클라이언트의 워크플로 계층 목록에서 워크플로를 생성할 수 있습니다.

n 워크플로 편집(16 페이지)

워크플로를 편집하여 기존 워크플로를 변경하거나 빈 워크플로를 새로 개발할 수 있습니다.

n 표준 라이브러리에서 워크플로 편집(16 페이지)

Orchestrator에서는 가상 인프라에서 작업을 자동화하는 데 사용할 수 있는 표준 워크플로 라이브러리를 제공합니다. 표준 라이브러리의 워크플로는 읽기 전용 상태로 잠겨 있습니다.

n 워크플로 편집기 탭(17 페이지)

워크플로 편집기는 워크플로의 구성 요소를 편집할 수 있는 탭으로 구성되어 있습니다.

1장 워크플로 개발

VMware, Inc. 15

Page 16: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로 생성

Orchestrator 클라이언트의 워크플로 계층 목록에서 워크플로를 생성할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 (선택 사항) 워크플로 계층 목록의 루트 또는 목록의 폴더를 마우스 오른쪽 버튼으로 클릭하고 폴더추가를 선택하여 새 워크플로 폴더를 생성합니다.

4 (선택 사항) 새 폴더의 이름을 입력합니다.

5 새 폴더 또는 기존 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 워크플로를 선택합니다.

6 새 워크플로 이름을 지정하고 확인을 클릭합니다.

빈 워크플로가 선택한 폴더에 새로 생성됩니다.

후속 작업

워크플로를 편집할 수 있습니다.

워크플로 편집

워크플로를 편집하여 기존 워크플로를 변경하거나 빈 워크플로를 새로 개발할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 워크플로 계층 목록을 확장하여 편집할 워크플로로 이동합니다.

4 편집할 워크플로를 열려면 해당 워크플로를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

워크플로 편집기에 편집할 워크플로가 열립니다.

표준 라이브러리에서 워크플로 편집

Orchestrator에서는 가상 인프라에서 작업을 자동화하는 데 사용할 수 있는 표준 워크플로 라이브러리를 제공합니다. 표준 라이브러리의 워크플로는 읽기 전용 상태로 잠겨 있습니다.

표준 라이브러리에서 워크플로를 편집하려면 해당 워크플로의 복제본을 만들어야 합니다. 복제 워크플로또는 사용자 지정 워크플로를 편집할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 (선택 사항) 계층형 워크플로 폴더 목록의 루트를 마우스 오른쪽 버튼으로 클릭하고 새 폴더를 선택하여 편집할 워크플로를 포함하는 폴더를 만듭니다.

4 라이브러리 계층형 표준 워크플로 목록을 확장하여 편집할 워크플로로 이동합니다.

5 편집할 워크플로를 마우스 오른쪽 버튼으로 클릭합니다.

편집 옵션이 흐리게 표시됩니다. 이 워크플로는 읽기 전용입니다.

6 워크플로를 마우스 오른쪽 버튼으로 클릭하고 워크플로 복제를 선택합니다.

VMware vRealize Orchestrator를 사용한 개발

16 VMware, Inc.

Page 17: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

7 복제 워크플로의 이름을 제공합니다.

기본적으로 Orchestrator는 복제 워크플로의 이름을 Copy of workflow_name으로 지정합니다.

8 워크플로 폴더 값을 클릭하여 복제 워크플로를 저장할 폴더를 검색합니다.

단계 3에서 만든 폴더를 선택합니다. 폴더를 만들지 않은 경우 표준 워크플로 라이브러리에 없는 폴더를 선택합니다.

9 예 또는 아니요를 클릭하여 워크플로 버전 기록을 복제본에 복사합니다.

옵션 설명

예 원래 워크플로의 버전 기록이 복제본에 복제됩니다.

아니요 복제본의 버전이 0.0.0으로 되돌아갑니다.

10 복제를 클릭하여 워크플로를 복제합니다.

11 복제 워크플로를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

워크플로 편집기가 열립니다. 복제 워크플로를 편집할 수 있습니다.

표준 라이브러리에서 워크플로를 복제했습니다. 복제 워크플로를 편집할 수 있습니다.

워크플로 편집기 탭

워크플로 편집기는 워크플로의 구성 요소를 편집할 수 있는 탭으로 구성되어 있습니다.

표 1‑1. 워크플로 편집기 탭

탭 설명

일반 워크플로 이름을 편집하고 워크플로가 수행하는 작업을설명하며 버전 번호를 설정하고 사용자 사용 권한을 보며Orchestrator 서버가 다시 시작될 때 워크플로의 동작을정의하고 워크플로의 전역 특성을 정의합니다.

입력 워크플로를 실행할 때 필요한 매개 변수를 정의합니다. 이러한 입력 매개 변수는 워크플로가 처리하는 데이터입니다. 워크플로의 동작은 이러한 매개 변수에 따라 변경됩니다.

출력 워크플로가 실행을 완료했을 때 생성되는 값을 정의합니다. 다른 워크플로나 작업이 실행될 때 이 값을 사용할 수있습니다.

스키마 워크플로를 작성합니다. 스키마 탭 왼쪽에 있는 워크플로팔레트에서 워크플로 스키마 요소를 끌어와 워크플로를작성합니다. 스키마 다이어그램에서 요소를 클릭하여 스키마 탭 아래쪽에 있는 요소의 동작을 정의하고 편집할 수있습니다.

프레젠테이션 사용자가 워크플로를 실행할 때 나타나는 사용자 입력 대화상자의 레이아웃을 정의합니다. 사용자가 입력 매개 변수 대화상자의 매개 변수를 쉽게 식별할 수 있도록 매개변수와 특성을 프레젠테이션 단계와 그룹으로 배열합니다. 매개 변수 속성을 설정해 사용자가 프레젠테이션에서제공할 수 있는 입력 매개 변수의 제약 조건을 정의합니다.

매개 변수 참조 워크플로의 논리적 흐름에서 특성 및 매개 변수를 사용하는 워크플로 요소를 봅니다. 이 탭은 또한 프레젠테이션탭에 정의한 매개 변수와 특성의 제약 조건을 표시합니다.

워크플로 토큰 각 워크플로 실행에 대한 세부 정보를 봅니다. 이 정보에는 워크플로의 상태, 이를 실행한 사용자, 현재 요소의 비즈니스 상태 그리고 워크플로가 시작 및 종료된 시간과 날짜가 포함되어 있습니다.

1장 워크플로 개발

VMware, Inc. 17

Page 18: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑1. 워크플로 편집기 탭 (계속)

탭 설명

이벤트 워크플로가 실행되었을 때 발생한 개별 이벤트에 대한 정보를 봅니다. 이 정보에는 이벤트에 대한 설명, 이벤트를트리거한 사용자, 이벤트의 유형 및 원본 그리고 이벤트가발생한 시간과 날짜가 포함되어 있습니다.

사용 권한 사용자 또는 사용자 그룹이 워크플로와 상호 작용할 수 있는 사용 권한을 설정합니다.

일반 워크플로 정보 입력사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및 설명을 입력하고 특성과 워크플로 동작의 특정측면을 정의하며 버전 번호를 설정하고 서명을 확인하며 사용자 권한을 설정합니다.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 일반 탭을 클릭합니다.

2 버전 숫자를 클릭해 워크플로의 버전 번호를 설정합니다.

버전 설명 대화상자가 열립니다.

3 워크플로의 이 버전에 대한 설명을 입력한 후 확인을 클릭합니다.

예를 들어 방금 워크플로를 만들었다면 초기 생성을 입력합니다.

워크플로의 새 버전이 생성되었습니다. 나중에 이 버전으로 워크플로 상태를 되돌릴 수 있습니다.

4 서버 재시작 동작 값을 설정해 Orchestrator 서버가 다시 시작될 때 워크플로의 동작을 정의합니다.

n 워크플로 실행 재개의 기본값을 그대로 두면 서버가 중지되었을 때 실행이 중단된 지점에서 워크플로를 재개합니다.

n 워크플로 실행 재개를 클릭하고 워크플로 실행을 재개하지 않음(실패로 설정)을 선택해Orchestrator 서버를 다시 시작하면 워크플로가 다시 시작되지 않도록 합니다.

워크플로가 실행되는 환경에 따라 다르면 워크플로가 다시 시작되지 않도록 합니다. 예를 들어 워크플로에 특정 vCenter Server가 필요하고 Orchestrator가 다른 vCenter Server에 연결되도록다시 구성한 경우 Orchestrator 서버를 다시 시작한 후 워크플로를 다시 시작하면 워크플로가 실패합니다.

5 설명 텍스트 상자에 워크플로의 자세한 설명을 입력합니다.

6 워크플로 편집기 맨 아래의 저장을 클릭합니다.

워크플로 편집기 맨 아래 왼쪽 녹색 메시지를 통해 변경 사항을 저장했는지 확인합니다.

워크플로 동작의 여러 측면을 정의하고 버전을 설정했으며 워크플로에서 사용자가 수행할 수 있는 작업을정의했습니다.

후속 작업

워크플로 특성 및 매개 변수를 정의해야 합니다.

VMware vRealize Orchestrator를 사용한 개발

18 VMware, Inc.

Page 19: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

특성 및 매개 변수 정의워크플로를 생성한 후에는 워크플로의 전역 특성, 입력 매개 변수 및 출력 매개 변수를 정의해야 합니다.

워크플로 특성에는 워크플로에서 내부적으로 처리되는 데이터가 저장됩니다. 워크플로 입력 매개 변수는사용자 또는 다른 워크플로와 같은 외부 소스에서 제공되는 데이터입니다. 워크플로 출력 매개 변수는 워크플로 실행이 완료될 때 워크플로가 제공하는 데이터입니다.

n 워크플로 매개 변수 정의(19 페이지)

입력 및 출력 매개 변수를 사용하여 워크플로와 데이터를 전달할 수 있습니다.

n 워크플로 특성 정의(20 페이지)

워크플로 특성은 워크플로에서 처리되는 데이터입니다.

n 특성 및 매개 변수 이름 지정 제한 사항(20 페이지)

OGNL 표현식을 사용하여 워크플로를 실행할 때 입력 매개 변수를 동적으로 확인할 수 있습니다.Orchestrator OGNL 구문 분석기는 OGNL을 처리하는 동안 워크플로 특성 또는 매개 변수 이름에 사용할 수 없는 특정 키워드를 사용합니다.

워크플로 매개 변수 정의

입력 및 출력 매개 변수를 사용하여 워크플로와 데이터를 전달할 수 있습니다.

워크플로 편집기에서 워크플로의 매개 변수를 정의할 수 있습니다. 입력 매개 변수는 워크플로에서 실행해야 하는 초기 데이터입니다. 사용자가 워크플로를 실행할 때 입력 매개 변수 값을 제공합니다. 출력 매개 변수는 실행이 완료된 경우 워크플로에서 반환되는 데이터입니다.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 해당 탭을 클릭합니다.

n 입력 매개 변수를 생성하려면 입력을 클릭합니다.

n 출력 매개 변수를 생성하려면 출력을 클릭합니다.

2 매개 변수 탭에서 마우스 오른쪽 버튼을 클릭하고 매개 변수 추가를 선택합니다.

3 매개 변수 이름을 클릭하여 변경합니다.

입력 매개 변수의 기본 이름은 arg_in_X이고, 출력 매개 변수의 기본 이름은 arg_out_X입니다(여기서X는 숫자).

4 (선택 사항) 매개 변수 유형의 값을 변경하려면 해당 값을 클릭하고 사용 가능한 값 목록에서 값을 선택합니다.

매개 변수 유형의 값은 기본적으로 문자열입니다.

5 설명 텍스트 상자에 매개 변수의 설명을 추가합니다.

6 (선택 사항) 매개 변수가 특성이어야 하는 경우 해당 매개 변수를 마우스 오른쪽 버튼으로 클릭하고특성으로 이동을 선택하여 매개 변수를 특성으로 변경합니다.

워크플로의 입력 또는 출력 매개 변수를 정의했습니다.

후속 작업

워크플로의 매개 변수를 정의한 후에는 워크플로 스키마를 작성합니다.

1장 워크플로 개발

VMware, Inc. 19

Page 20: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로 특성 정의

워크플로 특성은 워크플로에서 처리되는 데이터입니다.

참고 워크플로 스키마에서 생성한 워크플로 스키마 요소에서 워크플로 특성을 정의할 수도 있습니다. 해당 특성을 처리하는 워크플로 스키마 요소를 생성할 때 특성을 정의하는 것이 보다 간편한 경우가 많습니다.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 일반 탭을 클릭합니다.

일반 탭의 아래쪽에 특성 창이 표시됩니다.

2 특성 창을 마우스 오른쪽 버튼을 클릭하고 특성 추가를 선택합니다.

기본 유형이 문자열인 새 특성이 특성 목록에 표시됩니다.

3 특성 이름을 클릭하여 변경합니다.

기본 이름은 attX입니다(여기서 X는 숫자).

참고 워크플로 특성은 워크플로 매개 변수와 이름이 같을 수 없습니다.

4 특성 유형을 클릭하여 가능한 값 목록에서 새 유형을 선택합니다.

기본 특성 유형은 문자열입니다.

5 특성 값을 클릭하여 특성 유형에 따라 값을 설정하거나 선택합니다.

6 설명 텍스트 상자에 특성의 설명을 추가합니다.

7 특성이 변수가 아니라 상수인 경우 특성 이름 왼쪽에 있는 확인란을 클릭하여 값을 읽기 전용으로 설정합니다.

잠금 아이콘은 읽기 전용 확인란의 열을 식별합니다.

8 (선택 사항) 특성이 입력 또는 출력 매개 변수여야 하는 경우 해당 특성을 마우스 오른쪽 버튼으로 클릭하고 입력/출력 매개 변수로 이동을 선택하여 특성을 매개 변수로 변경합니다.

워크플로의 특성을 정의했습니다.

후속 작업

워크플로의 입력 및 출력 매개 변수를 정의할 수 있습니다.

특성 및 매개 변수 이름 지정 제한 사항

OGNL 표현식을 사용하여 워크플로를 실행할 때 입력 매개 변수를 동적으로 확인할 수 있습니다.Orchestrator OGNL 구문 분석기는 OGNL을 처리하는 동안 워크플로 특성 또는 매개 변수 이름에 사용할 수 없는 특정 키워드를 사용합니다.

예약된 OGNL 키워드를 특성 이름의 접두사로 사용하면 OGNL 처리가 중단되지 않습니다. 예를 들어매개 변수 이름을 trueParameter로 지정할 수 있습니다. 예약된 키워드는 대/소문자를 구분하지 않습니다.

다음 키워드는 워크플로 특성 및 매개 변수 이름에 사용할 수 없습니다.

VMware vRealize Orchestrator를 사용한 개발

20 VMware, Inc.

Page 21: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑2. 특성 및 매개 변수 이름에 금지된 키워드

금지된 키워드 금지된 키워드 금지된 키워드

n abstract

n back_char_esc

n back_char_literal

n boolean

n byte

n char

n char_literal

n class

n _classResolver

n const

n context

n debugger

n dec_digits

n dec_flt

n default

n delete

n digit

n double

n dynamic_subscript

n enum

n eof

n esc

n exponent

n export

n extends

n false

n final

n flt_literal

n flt_suff

n ident

n implements

n import

n in

n int

n int_literal

n interface

n _keepLastEvaluation

n _lastEvaluation

n letter

n long

n _memberAccess

n native

n package

n private

n public

n root

n short

n static

n string_esc

n string_literal

n synchronized

n this

n _traceEvaluations

n true

n _typeConverter

n volatil

n with

n WithinBackCharLiteral

n WithinCharLiteral

n WithinStringLiteral

워크플로 스키마워크플로 스키마는 워크플로를 상호 연결된 워크플로 요소의 플로 다이어그램으로 표시하는 워크플로의그래픽 표현입니다. 워크플로 스키마는 워크플로의 논리적 흐름을 정의합니다.

n 워크플로 스키마 보기(22 페이지)

Orchestrator 클라이언트에서 해당 워크플로의 스키마 탭에서 워크플로의 스키마를 봅니다.

n 워크플로 스키마에서 워크플로 작성(22 페이지)

워크플로 스키마는 스키마 요소 시퀀스로 구성됩니다. 워크플로 스키마 요소는 워크플로의 빌딩 블록이며, 의사 결정, 스크립팅된 작업, 작업, 예외 처리기 등을 나타내거나 다른 워크플로를 나타낼수도 있습니다.

n 스키마 요소(25 페이지)

워크플로 편집기는 스키마 탭의 메뉴에 워크플로 스키마 요소를 표시합니다. 스키마 탭에서 사용 가능한 스키마 요소를 사용해 워크플로를 만들 수 있습니다.

n 스키마 요소 속성(28 페이지)

스키마 요소는 워크플로 팔레트의 스키마 탭에서 정의하고 편집할 수 있는 속성을 가지고 있습니다.

n 링크 및 바인딩(30 페이지)

요소 간 링크는 워크플로의 논리적 흐름을 결정합니다. 바인딩은 입력 및 출력 매개 변수를 워크플로 특성에 바인딩하여 다른 요소의 데이터로 요소를 채웁니다.

n 의사 결정(35 페이지)

워크플로는 부울 true 또는 false 문에 따라 작업의 여러 과정을 정의하는 의사 결정 함수를 구현할수 있습니다.

n 예외 처리(38 페이지)

예외 처리는 스키마 요소가 실행될 때 발생한 오류를 인식합니다. 또한 오류가 발생한 경우 스키마요소의 동작 방식을 정의합니다.

1장 워크플로 개발

VMware, Inc. 21

Page 22: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 오류 처리기 사용(39 페이지)

표준 오류 처리기를 사용하여 특정 워크플로 스키마 요소에서 오류가 발생한 경우의 동작을 정의할수 있습니다. 전역 오류 처리기를 사용하여 표준 오류 처리기에서 발견하지 못한 오류가 발생한 경우의 동작을 정의할 수 있습니다.

n Foreach 요소 및 복합 유형(40 페이지)

개발한 워크플로에 Foreach 요소를 삽입하여 매개 변수 또는 특성의 어레이에서 반복되는 하위 워크플로를 실행할 수 있습니다. 워크플로의 이해도 및 가독성을 개선하기 위해 복합 유형이라는 단일유형에서 논리적으로 연결된 여러 유형의 워크플로 매개 변수를 그룹화할 수 있습니다.

n 워크플로에 스위치 작업 추가(43 페이지)

워크플로 특성 또는 매개 변수를 기반으로 스위치 케이스를 정의하는 기본 스위치 작업을 워크플로스키마에 추가할 수 있습니다.

워크플로 스키마 보기

Orchestrator 클라이언트에서 해당 워크플로의 스키마 탭에서 워크플로의 스키마를 봅니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 계층형 목록에서 워크플로로 이동합니다.

3 워크플로를 클릭합니다.

워크플로에 대한 정보가 오른쪽 창에 나타납니다.

4 오른쪽 창에서 스키마 탭을 선택합니다.

워크플로의 그래픽 표현을 볼 수 있습니다.

워크플로 스키마에서 워크플로 작성

워크플로 스키마는 스키마 요소 시퀀스로 구성됩니다. 워크플로 스키마 요소는 워크플로의 빌딩 블록이며, 의사 결정, 스크립팅된 작업, 작업, 예외 처리기 등을 나타내거나 다른 워크플로를 나타낼 수도 있습니다.

워크플로 편집기 왼쪽에 있는 워크플로 팔레트에서 워크플로 스키마 다이어그램으로 스키마 요소를 끌어와 워크플로 편집기에서 워크플로를 작성합니다.

워크플로 스키마 편집

워크플로의 논리적 흐름을 정의하는 스키마 요소 시퀀스를 생성하여 워크플로를 작성합니다.

기본적으로 워크플로 스키마의 모든 요소는 연결되어 있습니다. 요소 간의 링크는 화살표로 표시됩니다.워크플로 스키마에 새 요소를 추가하는 경우 다음 요소에 연결되지 않은 기존 워크플로 요소 또는 화살표로 해당 요소를 끌어와야 합니다. 스키마에 워크플로 요소를 추가한 후에는 기존 링크를 삭제하고 새 링크를 생성하여 워크플로의 논리적 흐름을 정의할 수 있습니다.

기존 워크플로의 스키마에서 편집 중인 워크플로의 스키마로 하나 이상의 요소를 복사할 수 있습니다. “워크플로 스키마 요소 복사,”(23 페이지) 항목을 참조하십시오.

워크플로 스키마에는 적어도 하나의 종료 워크플로 요소가 있어야 하지만 이 요소가 여러 개 있을 수도 있습니다.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

VMware vRealize Orchestrator를 사용한 개발

22 VMware, Inc.

Page 23: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

프로시저

1 워크플로 편집기에서 스키마 탭을 클릭합니다.

2 왼쪽 창의 일반 메뉴에서 스키마 요소를 워크플로 스키마로 끌어옵니다.

3 워크플로 스키마로 끌어온 요소를 두 번 클릭하고 해당 이름을 입력한 후 Enter 키를 누릅니다.

워크플로 컨텍스트에서 고유한 요소 이름을 제공해야 합니다.

대기 타이머, 대기 이벤트, 종료 워크플로 또는 예외 발생 요소의 이름은 변경할 수 없습니다.

4 (선택 사항) 스키마에서 요소를 마우스 오른쪽 버튼으로 클릭하고 복사를 선택합니다.

5 (선택 사항) 스키마에서 적절한 위치를 마우스 오른쪽 버튼으로 클릭하고 붙여넣기를 선택합니다.

기존 스키마 요소를 복사하여 붙여넣는 것은 유사한 요소를 스키마에 신속하게 추가하는 방법입니다.비즈니스 상태를 제외하고 복사한 요소의 모든 설정이 붙여넣은 요소에 표시됩니다. 이 설정에 따라붙여넣은 요소 설정을 조정합니다.

6 기본, 로그 또는 네트워크 메뉴에서 워크플로 스키마로 스키마 요소를 끌어옵니다.

기본, 로그 또는 네트워크 메뉴에서 요소 이름을 편집할 수 있습니다. 해당 스크립팅은 편집할 수 없습니다.

7 일반 메뉴에서 워크플로 스키마로 스키마 요소를 끌어옵니다.

작업 또는 워크플로를 워크플로 스키마로 끌어오면 삽입할 작업 또는 워크플로를 검색할 수 있는 대화 상자가 나타납니다.

8 필터 텍스트 상자에 워크플로에 삽입할 작업 또는 워크플로 이름을 전체 또는 일부 입력합니다.

검색과 일치하는 워크플로 또는 작업이 대화 상자에 나타납니다.

9 워크플로 또는 작업을 두 번 클릭하여 선택합니다.

워크플로 스키마에 워크플로 또는 작업을 삽입했습니다.

10 필요한 모든 스키마 요소를 워크플로 스키마에 추가할 때까지 이 절차를 반복합니다.

후속 작업

워크플로 스키마에 추가한 요소의 속성을 정의하고 모든 요소를 연결 및 바인딩합니다.

워크플로 스키마 요소 복사

기존 워크플로의 스키마에서 편집 중인 워크플로의 스키마로 하나 이상의 요소를 복사할 수 있습니다.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 스키마 탭을 클릭합니다.

2 왼쪽 창에서 스키마 요소를 복사할 워크플로를 선택합니다.

n 모든 워크플로를 클릭하고 계층형 워크플로 목록에서 워크플로를 선택합니다.

n 검색 텍스트 상자에 워크플로 이름을 입력하고 Enter 키를 누릅니다.

3 선택한 워크플로를 마우스 오른쪽 버튼으로 클릭하고 열기를 선택합니다.

워크플로 속성이 표시된 창이 나타납니다.

4 워크플로 창에서 스키마 탭을 클릭합니다.

5 하나 이상의 워크플로 스키마 요소를 선택하고 마우스 오른쪽 버튼으로 클릭한 후 복사를 선택합니다.

1장 워크플로 개발

VMware, Inc. 23

Page 24: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

6 편집 중인 워크플로의 스키마 탭에서 마우스 오른쪽 버튼을 클릭하고 붙여넣기를 선택합니다.

워크플로 간에 워크플로 스키마 요소를 복사했습니다.

후속 작업

복사한 스키마 요소를 기존 워크플로 스키마에 연결하고 바인딩해야 합니다.

입력 및 출력 매개 변수 승격

하위 요소의 입력 및 출력 매개 변수를 상위 워크플로로 승격할 수 있습니다.

워크플로 편집기의 일반 탭에서 정의한 사용자 지정 특성을 승격할 수 있습니다. 미리 정의된 특성을 승격하려면 입력 매개 변수를 일치하는 유형의 특성으로 대체하기만 하면 됩니다.

참고 미리 정의된 특성을 승격하고 사용자 지정 값을 할당한 경우 원래 특성 값을 덮어쓰지 않도록 복제특성이 생성됩니다. 복제 특성은 원래 특성의 이름을 유지하며 해당 이름 끝에 숫자 값이 증분됩니다.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 스키마 탭을 클릭합니다.

2 워크플로 또는 작업 요소를 워크플로 스키마에 추가합니다.

스키마 창 상단에 다음 알림이 표시됩니다.

작업의 매개 변수를 현재 워크플로에 입력/출력으로 추가하시겠습니까?

3 알림에서 설정을 클릭합니다.

사용 가능한 옵션이 포함된 팝업 창이 표시됩니다.

4 각 입력 매개 변수의 매핑 유형을 선택합니다.

옵션 설명

입력 인수가 입력 워크플로 매개 변수에 매핑됩니다.

건너뛰기 인수가 NULL 값에 매핑됩니다.

값 인수가 값 열에서 설정할 수 있는 값을 가진 특성에 매핑됩니다.

5 각 출력 매개 변수의 매핑 유형을 선택합니다.

옵션 설명

출력 인수가 출력 워크플로 매개 변수에 매핑됩니다.

건너뛰기 인수가 NULL 값에 매핑됩니다.

로컬 변수 인수가 특성에 매핑됩니다.

6 승격을 클릭합니다.

매개 변수를 상위 워크플로로 승격했습니다.

검색 결과 수정

워크플로나 작업 등의 요소를 찾으려면 검색 텍스트 상자를 사용합니다. 검색 시 결과가 일부만 반환되면검색 시 반환되는 결과의 개수를 수정할 수 있습니다.

요소에 대한 검색을 사용할 때 녹색 메시지 상자는 검색 결과가 모두 나열됨을 나타냅니다. 노란색 메시지상자는 검색 결과가 일부만 나열됨을 나타냅니다.

VMware vRealize Orchestrator를 사용한 개발

24 VMware, Inc.

Page 25: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

프로시저

1 (선택 사항) 워크플로 편집기에서 워크플로를 편집 중이라면 저장 후 닫기를 클릭하여 편집기를 종료합니다.

2 Orchestrator 클라이언트 메뉴에서 도구 > 사용자 기본 설정을 선택합니다.

3 일반 탭을 클릭합니다.

4 찾기 최대 크기 텍스트 상자에서 반환할 검색 결과 개수를 입력합니다.

5 사용자 기본 설정 대화상자에서 저장 후 닫기를 클릭합니다.

검색 시 반환할 결과의 개수를 수정했습니다.

스키마 요소

워크플로 편집기는 스키마 탭의 메뉴에 워크플로 스키마 요소를 표시합니다. 스키마 탭에서 사용 가능한스키마 요소를 사용해 워크플로를 만들 수 있습니다.

표 1‑3. 스키마 요소 및 아이콘

스키마 요소 이름 설명 아이콘 워크플로 편집기에서의 위치

시작 워크플로 워크플로의 시작점입니다. 모든 워크플로는 이 요소를 포함하고 있습니다. 워크플로는 하나의 시작 요소만 가질 수 있습니다. 시작 요소는 하나의 출력만 있으며 입력은 없고 워크플로 스키마에서 제거할 수없습니다.

항상 스키마 탭에 표시

스크립팅 가능한 작업

사용자가 정의한 일반 용도 작업. 이 요소에 JavaScript 함수를 작성합니다.

범용 워크플로 팔레트

의사 결정 부울 함수. 의사 결정 요소는 하나의 입력매개 변수를 가지며 true 또는 false를 반환합니다. 요소의 의사 결정 유형은 입력매개 변수 유형에 따라 다릅니다. 의사 결정 요소를 사용하면 의사 결정 요소가 수신하는 입력 매개 변수에 따라 워크플로가여러 방향으로 분기할 수 있습니다. 수신된 입력 매개 변수가 예상한 값과 일치하면 워크플로는 계속해서 특정 경로를 따라갑니다. 입력이 예상한 값과 다르면 워크플로는 대체 경로를 따라갑니다.

범용 워크플로 팔레트

사용자 지정 의사 결정

부울 함수. 사용자 지정 의사 결정은 여러개의 입력 매개 변수를 가지고 사용자 지정 스크립트에 따라 처리할 수 있습니다.true 또는 false를 반환합니다.

범용 워크플로 팔레트

의사 결정 활동 부울 함수. 의사 결정 활동은 워크플로를실행하고 출력 매개 변수를 true 또는false 경로에 바인딩합니다.

범용 워크플로 팔레트

1장 워크플로 개발

VMware, Inc. 25

Page 26: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑3. 스키마 요소 및 아이콘 (계속)

스키마 요소 이름 설명 아이콘 워크플로 편집기에서의 위치

사용자 상호 작용 사용자가 워크플로에 새 입력 매개 변수를전달할 수 있습니다. 사용자 상호 작용 요소가 입력 매개 변수에 대한 요청을 표시하고 사용자가 제공 가능한 매개 변수의제약 조건을 지정하는 방법을 설계할 수있습니다. 입력 매개 변수를 제공할 사용자를 결정하는 권한을 설정할 수 있습니다. 실행 중인 워크플로가 사용자 상호 작용 요소에 도달하면 수동 상태가 되고 사용자에게 입력하라는 메시지가 나타납니다. 해당 기간 내에 사용자가 입력해야 하는 시간 초과 기간을 설정할 수 있습니다.워크플로는 사용자가 전달한 데이터에 따라 재개되거나 시간 초과 기간이 만료되면예외를 반환합니다. 사용자의 응답을 기다리는 동안 워크플로 토큰은 waiting 상태에 있습니다.

범용 워크플로 팔레트

대기 타이머 장기 실행 워크플로에서 사용됩니다. 실행중인 워크플로가 대기 타이머 요소에 도달하면 수동 상태에 진입합니다. 워크플로가실행을 재개할 절대 날짜를 설정합니다.해당 날짜를 기다리는 동안 워크플로 토큰은 waiting-signal 상태에 있습니다.

범용 워크플로 팔레트

대기 이벤트 장기 실행 워크플로에서 사용됩니다. 실행중인 워크플로가 대기 이벤트 요소에 도달하면 수동 상태에 진입합니다. 사용자는워크플로가 실행을 재개하기 전에 기다리는 트리거 이벤트를 정의합니다. 해당 이벤트를 기다리는 동안 워크플로 토큰은waiting-signal 상태에 있습니다.

범용 워크플로 팔레트

종료 워크플로 워크플로의 끝점입니다. 가능한 다양한 워크플로 결과를 나타내기 위해 스키마에 여러 개의 끝 요소를 가질 수 있습니다. 종료요소는 하나의 입력을 가지며 출력은 없습니다. 워크플로가 종료 워크플로 요소에도달하면 워크플로 토큰이 completed 상태에 진입합니다.

범용 워크플로 팔레트

발생한 예외 예외를 생성하고 워크플로를 중지합니다.이 요소가 여러 번 발생하면 워크플로 스키마에 나타날 수 있습니다. 예외 요소는문자열 유형만 가능한 입력 매개 변수 하나를 가지며 출력 매개 변수는 없습니다.워크플로가 예외 요소에 도달하면 워크플로 토큰이 failed 상태에 진입합니다.

범용 워크플로 팔레트

워크플로 참고 워크플로 섹션에 주석을 달 수 있습니다.참고를 이용해 워크플로 섹션을 설명할 수있습니다. 참고의 배경 색을 변경해 워크플로 영역과 구분할 수 있습니다. 워크플로 참고는 스키마 이해에 도움이 되는 시각적 정보만 제공합니다.

범용 워크플로 팔레트

작업 요소 Orchestrator 작업 라이브러리에서 작업을 호출합니다. 워크플로가 작업 요소에도달하면 해당 작업을 호출해 실행합니다.

범용 워크플로 팔레트

VMware vRealize Orchestrator를 사용한 개발

26 VMware, Inc.

Page 27: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑3. 스키마 요소 및 아이콘 (계속)

스키마 요소 이름 설명 아이콘 워크플로 편집기에서의 위치

워크플로 요소 다른 워크플로를 동기식으로 시작합니다.워크플로가 자체 스키마의 워크플로 요소에 도달하면 자체 프로세스의 일환으로 해당 워크플로를 실행합니다. 원래 워크플로는 호출된 워크플로가 실행을 완료해야 계속됩니다.

범용 워크플로 팔레트

Foreach 요소 어레이의 모든 요소에 대해 워크플로를 실행합니다. 예를 들어 폴더에서 모든 가상시스템에 대해 가상 시스템 이름 변경 워크플로를 실행할 수 있습니다.

범용 워크플로 팔레트

비동기 워크플로 비동기식으로 워크플로를 시작합니다. 워크플로가 비동기식 워크플로 요소에 도달하면 해당 워크플로를 시작하고 자체 실행을 계속합니다. 원래 워크플로는 호출된워크플로가 완료되기를 기다리지 않습니다.

범용 워크플로 팔레트

스케줄 워크플로 설정된 시간에 워크플로를 실행하는 작업을 생성한 후 워크플로는 그 실행을 계속합니다.

범용 워크플로 팔레트

중첩된 워크플로 동시에 여러 워크플로를 시작합니다. 로컬워크플로와 다른 Orchestrator 서버에있는 원격 워크플로를 중첩하도록 선택할수 있습니다. 서로 다른 자격 증명을 가진워크플로를 실행할 수도 있습니다. 워크플로는 실행을 계속하기 전에 중첩된 모든워크플로가 완료될 때까지 대기합니다.

범용 워크플로 팔레트

오류 처리 특정 워크플로 요소에 대한 오류를 처리합니다. 워크플로는 예외 생성, 다른 워크플로 호출 또는 사용자 지정 스크립트 실행을 통해 오류를 처리할 수 있습니다.

범용 워크플로 팔레트

기본 오류 처리기 표준 오류 처리기에서 발견하지 못한 워크플로 오류를 처리합니다. 오류를 처리하기위해 사용 가능한 모든 스키마 요소를 사용할 수 있습니다.

범용 워크플로 팔레트

1장 워크플로 개발

VMware, Inc. 27

Page 28: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑3. 스키마 요소 및 아이콘 (계속)

스키마 요소 이름 설명 아이콘 워크플로 편집기에서의 위치

전환 워크플로 특성이나 매개 변수를 기반으로대체 워크플로 경로로 전환합니다.

범용 워크플로 팔레트

미리 정의된 작업 워크플로가 일반적으로 사용하는 표준 작업을 수행하는 편집할 수 없는 스크립팅된요소. 다음 작업은 미리 정의되어 있습니다.

기본n 수면n 자격 증명 변경n 종료 날짜까지 대기n 사용자 지정 이벤트 대기n 카운터 증가n 카운터 감소

로그n 시스템 로그n 시스템 주의n 시스템 오류n 서버 로그n 서버 주의n 서버 오류n 시스템+서버 로그n 시스템+서버 주의n 시스템+서버 오류

네트워크n HTTP postn HTTP get

기본, 로그 및 네트워크 워크플로 팔레트

스키마 요소 속성

스키마 요소는 워크플로 팔레트의 스키마 탭에서 정의하고 편집할 수 있는 속성을 가지고 있습니다.

스키마 요소의 전역 속성 편집

스키마 요소의 정보 탭에서 해당 요소의 전역 속성을 정의합니다.

필수 조건

워크플로 편집기의 스키마 탭에 요소가 있는지 확인합니다.

프로시저

1 워크플로 편집기에서 스키마 탭을 클릭합니다.

2 편집 아이콘( )을 클릭하여 편집할 요소를 선택합니다.

요소의 속성이 나열된 대화 상자가 표시됩니다.

3 정보 탭을 클릭합니다.

4 이름 텍스트 상자에 스키마 요소의 이름을 제공합니다.

이 이름은 워크플로 스키마 다이어그램의 스키마 요소에 표시됩니다.

VMware vRealize Orchestrator를 사용한 개발

28 VMware, Inc.

Page 29: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 상호 작용 드롭다운 메뉴에서 설명을 선택합니다.

상호 작용 속성을 통해 이 요소가 워크플로 외부 개체와 상호 작용하는 방식에 대한 표준 설명을 선택할 수 있습니다. 이 속성은 정보 제공을 위한 용도로만 제공됩니다.

6 (선택 사항) 비즈니스 상태 텍스트 상자에 비즈니스 상태 설명을 제공합니다.

비즈니스 상태 속성은 이 요소가 수행하는 작업에 대한 간략한 설명입니다. 워크플로가 실행될 때 워크플로 토큰에 각 요소의 비즈니스 상태가 표시됩니다. 이 기능은 워크플로 상태를 추적하는 데 유용합니다.

7 (선택 사항) 설명 텍스트 상자에 스키마 요소의 설명을 입력합니다.

스키마 요소 속성 탭

워크플로 스키마로 끌어온 요소를 클릭해 스키마 요소의 속성에 액세스합니다. 요소의 속성은 워크플로편집기 맨 아래에 있는 탭에 나타납니다.

서로 다른 스키마 요소는 서로 다른 속성 탭을 가집니다.

표 1‑4. 스키마 요소에 따른 속성 탭

스키마 요소 속성 탭 설명 스키마 요소 유형에 적용

특성 요소가 사용자, 이벤트 또는 타이머 등의 외부 소스에서 요구하는 특성입니다. 특성은 시간초과 제한, 시간 및 날짜, 트리거 또는 사용자 자격 증명이 될수 있습니다.

n 사용자 상호 작용n 대기 이벤트n 대기 타이머

의사 결정 의사 결정 구문을 정의합니다.의사 결정 요소가 수신하는 입력 매개 변수는 의사 결정 구문과 일치하거나 일치하지 않으며 가능한 작업 과정은 두 가지입니다.

의사 결정

종료 워크플로 워크플로가 완료되었거나 오류가 발생해 예외를 반환했으므로 워크플로를 중지합니다.

n 종료n 예외

예외 예외가 발생할 경우 이 스키마요소가 동작하는 방식입니다.

n 작업n 비동기 워크플로n 예외n 중첩된 워크플로n 미리 정의된 작업n 스케줄 워크플로n 스크립팅 가능한 작업n 사용자 상호 작용n 대기 이벤트n 대기 타이머n 워크플로

외부 입력 워크플로 실행 중 사용자가 특정 순간에 입력해야 하는 입력매개 변수입니다.

사용자 상호 작용

입력 이 요소에 대한 입력 바인딩.입력 바인딩은 스키마 요소가워크플로에서 앞선 요소의 입력을 수신하는 방법을 정의합니다.

n 작업n 비동기 워크플로n 사용자 지정 의사 결정n 미리 정의된 작업n 스케줄 워크플로n 스크립팅 가능한 작업n 워크플로

1장 워크플로 개발

VMware, Inc. 29

Page 30: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑4. 스키마 요소에 따른 속성 탭 (계속)

스키마 요소 속성 탭 설명 스키마 요소 유형에 적용

정보 스키마 요소의 일반 속성과 설명입니다. 정보 탭에 표시되는정보는 스키마 요소의 유형에따라 다릅니다.

n 작업n 비동기 워크플로n 사용자 지정 의사 결정n 의사 결정n 중첩된 워크플로n 참고n 미리 정의된 작업n 스케줄 워크플로n 스크립팅 가능한 작업n 사용자 상호 작용n 대기 이벤트n 대기 타이머n 워크플로

출력 이 요소에 대한 출력 바인딩.출력 바인딩은 스키마 요소가출력 매개 변수를 워크플로 특성에 또는 워크플로 출력 매개변수에 바인딩하는 방식을 정의합니다.

n 작업n 비동기 워크플로n 미리 정의된 작업n 스케줄 워크플로n 스크립팅 가능한 작업n 워크플로

프레젠테이션 워크플로 실행 중 사용자의 입력이 필요한 경우 사용자에게표시되는 입력 매개 변수 대화상자의 레이아웃을 정의합니다.

사용자 상호 작용

스크립팅 이 스키마 요소의 동작을 정의하는 JavaScript 함수를 표시합니다. 비동기 워크플로, 스케줄 워크플로 및 작업 요소에서이 스크립팅은 읽기 전용입니다. 스크립팅 가능한 작업과 사용자 지정 의사 결정 요소의 경우 이 탭에서 JavaScript를편집합니다.

n 작업n 비동기 워크플로n 사용자 지정 의사 결정n 미리 정의된 작업n 스케줄 워크플로n 스크립팅 가능한 작업

시각적 바인딩 이 스키마 요소의 매개 변수와특성이 워크플로에서 그 전후에 오는 요소의 매개 변수와 특성에 바인딩되는 방법을 시각적으로 보여줍니다. 요소의 입력 및 출력 바인딩의 또 다른표현입니다.

n 작업n 비동기 워크플로n 미리 정의된 작업n 스케줄 워크플로n 스크립팅 가능한 작업n 워크플로

워크플로 중첩할 워크플로를 선택합니다.

중첩된 워크플로

링크 및 바인딩

요소 간 링크는 워크플로의 논리적 흐름을 결정합니다. 바인딩은 입력 및 출력 매개 변수를 워크플로 특성에 바인딩하여 다른 요소의 데이터로 요소를 채웁니다.

링크와 바인딩을 이해하려면 워크플로의 논리적 흐름과 워크플로의 데이터 흐름 사이의 차이를 이해해야합니다.

VMware vRealize Orchestrator를 사용한 개발

30 VMware, Inc.

Page 31: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로의 논리적 흐름

워크플로의 논리적 흐름은 워크플로가 실행됨에 따라 워크플로가 스키마의 한 요소에서 다음 요소로 진행되는 것입니다. 스키마에서 요소를 연결해 워크플로의 논리적 흐름을 정의합니다.

표준 경로는 모든 요소가 예상대로 실행될 경우 워크플로가 통과하는 논리적 흐름의 경로입니다. 예외 경로는 한 요소가 예상대로 실행되지 않을 경우 워크플로가 통과하는 논리적 흐름의 경로입니다.

워크플로 스키마에 있는 다양한 스타일의 화살표는 워크플로가 그 논리적 흐름에서 통과할 수 있는 다양한 경로를 표시합니다.

n 파란색 화살표는 워크플로가 한 요소에서 다음 요소로 이동하는 표준 경로를 표시합니다.

n 녹색 화살표는 부울 의사 결정 요소가 true를 반환하는 경우 워크플로가 이동하는 경로를 표시합니다.

n 빨간색 점선 화살표는 부울 의사 결정 요소가 false를 반환하는 경우 워크플로가 이동하는 경로를 표시합니다.

n 빨간색 점선 화살표는 워크플로 요소가 올바르게 실행되지 않을 경우 워크플로가 이동하는 예외 경로를 표시합니다.

다음 그림은 워크플로가 이동할 수 있는 다양한 경로를 보여주는 워크플로 스키마의 예입니다.

그림 1‑1. 워크플로의 논리적 흐름을 통과하는 다양한 워크플로 경로

이 워크플로 예는 논리적 흐름을 통과해 다음 경로로 이동할 수 있습니다.

n 표준 경로, true 의사 결정 결과, 예외 없음.

a 의사 결정 요소는 true를 반환합니다.

b SnapVMsInResourcePool 워크플로가 성공적으로 실행됩니다.

c sendHtmlEmail 작업이 성공적으로 실행됩니다.

d 워크플로는 completed 상태에서 성공적으로 종료됩니다.

1장 워크플로 개발

VMware, Inc. 31

Page 32: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 표준 경로, false 의사 결정 결과, 예외 없음.

a 의사 결정 요소는 false를 반환합니다.

b 스크립트 가능한 작업 요소가 정의하는 작업이 성공적으로 실행됩니다.

c sendHtmlEmail 작업이 성공적으로 실행됩니다.

d 워크플로는 completed 상태에서 성공적으로 종료됩니다.

n true 의사 결정 결과, 예외.

a 의사 결정 요소는 true를 반환합니다.

b SnapVMsInResourcePool 워크플로에 오류가 발생합니다.

c 워크플로는 예외를 반환하고 failed 상태에서 멈춥니다.

n false 의사 결정 결과, 예외.

a 의사 결정 요소는 false를 반환합니다.

b 스크립트 가능한 작업 요소가 정의하는 작업에서 오류가 발생합니다.

c 워크플로는 예외를 반환하고 failed 상태에서 멈춥니다.

요소 링크

링크는 스키마 요소를 연결하고 요소 간의 논리적 워크플로 흐름을 정의합니다.

일반적으로 요소는 워크플로의 다른 요소로 나가는 링크 하나와 요소의 예외 동작을 정의하는 예외 링크하나만 설정할 수 있습니다. 나가는 링크는 워크플로의 표준 경로를 정의하고, 예외 링크는 워크플로의 예외 경로를 정의합니다. 대부분의 경우 단일 스키마 요소는 여러 요소에서 들어오는 표준 경로 링크를 수신할 수 있습니다.

다음 요소는 위 문에 대한 예외입니다.

n 시작 워크플로 요소는 들어오는 링크를 수신할 수 없으며 예외 링크가 없습니다.

n 예외 요소는 여러 개의 들어오는 예외 링크를 수신할 수 있으며, 나가는 링크 또는 예외 링크가 없습니다.

n 의사 결정 요소에는 의사 결정의 true 또는 false 결과에 따라 워크플로 경로를 정의하는 두 개의 나가는 링크가 있습니다. 의사 결정에는 예외 링크가 없습니다.

n 종료 워크플로 요소에는 나가는 링크 또는 예외 링크가 있을 수 없습니다.

표준 경로 링크 생성

표준 경로 링크는 정상적인 워크플로 실행을 결정합니다.

요소를 서로 연결할 때 항상 워크플로에서 실행되는 순서대로 연결합니다. 처음에 실행되는 요소에서 시작하여 두 요소 간의 링크를 생성해야 합니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 워크플로 편집기의 스키마 탭에 요소가 있는지 확인합니다.

프로시저

1 다른 요소에 연결할 요소 위에 포인터를 놓습니다.

파란색 및 빨간색 화살표가 요소의 오른쪽에 표시됩니다.

2 파란색 화살표 위에 포인터를 놓습니다.

파란색 화살표가 확대됩니다.

VMware vRealize Orchestrator를 사용한 개발

32 VMware, Inc.

Page 33: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

3 파란색 화살표를 클릭하고 마우스 왼쪽 버튼을 누른 채 대상 요소로 포인터를 이동합니다.

두 요소 사이에 파란색 화살표가 표시되고 대상 요소 주위에 녹색 사각형이 표시됩니다.

4 마우스 왼쪽 버튼을 놓습니다.

파란색 화살표가 두 요소 사이에 그대로 유지됩니다.

이제 표준 경로가 요소를 연결합니다.

후속 작업

요소가 결합되었지만 데이터 흐름을 정의하지 않았습니다. 입력 및 출력 바인딩을 정의하여 수신 및 송신데이터를 워크플로 특성에 바인딩해야 합니다.

워크플로의 데이터 흐름

워크플로의 데이터 흐름은 워크플로의 각 요소가 실행될 때 워크플로 요소 입력 및 출력 매개 변수가 워크플로 특성에 바인딩되는 방식입니다. 스키마 요소 바인딩을 사용하여 워크플로의 데이터 흐름을 정의할수 있습니다.

워크플로 스키마의 요소가 실행될 때 입력 매개 변수 형식의 데이터가 필요합니다. 워크플로를 생성할 때사용자가 설정한 워크플로 특성에 바인딩하거나 워크플로가 실행될 때 워크플로의 이전 요소에서 설정한특성에 바인딩하여 입력 매개 변수에 대한 데이터를 가져옵니다.

요소는 데이터를 처리하고 변환할 수 있으며, 출력 매개 변수 형식으로 실행 결과를 생성합니다. 요소는해당 결과 출력 매개 변수를 새로 생성한 워크플로 특성에 바인딩합니다. 스키마의 다른 요소는 이러한 새워크플로 특성에 입력 매개 변수로 바인딩될 수 있습니다. 워크플로는 실행이 완료될 때 출력 매개 변수로특성을 생성할 수 있습니다.

다음 그림에서는 매우 간단한 워크플로를 보여 줍니다. 파란색 화살표는 워크플로의 논리적 흐름과 요소연결을 나타냅니다. 빨간색 선은 워크플로의 데이터 흐름을 표시합니다.

그림 1‑2. 워크플로 데이터 흐름 예제

입력 매개 변수 A

스크립팅 가능한 작업

워크플로 특성 C

워크플로 특성 E

스크립팅 가능한 작업

입력 매개 변수 B

스크립팅 가능한 작업

워크플로 특성 D

출력 매개 변수F

스크립팅 가능한 작업

워크플로 데이터 흐름은 다음과 같습니다.

1 입력 매개 변수 a 및 b로 워크플로가 시작됩니다.

2 첫 번째 요소가 매개 변수 a를 처리하고 처리 결과를 워크플로 특성 c에 바인딩합니다.

3 첫 번째 요소가 매개 변수 b를 처리하고 처리 결과를 워크플로 특성 d에 바인딩합니다.

4 두 번째 요소가 워크플로 특성 c를 입력 매개 변수로 가져와 처리하고 결과 출력 매개 변수를 워크플로 특성 e에 바인딩합니다.

1장 워크플로 개발

VMware, Inc. 33

Page 34: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 두 번째 요소가 워크플로 특성 d를 입력 매개 변수로 가져와 처리하고 출력 매개 변수 f를 생성합니다.

6 워크플로가 종료되고 실행 결과로 워크플로 특성 f를 출력 매개 변수로 생성합니다.

요소 바인딩

모든 워크플로 요소 입력 및 출력 매개 변수를 워크플로 특성에 바인딩해야 합니다. 바인딩은 요소의 데이터를 설정하고, 요소의 출력 및 예외 동작을 정의합니다. 링크는 워크플로의 논리적 흐름을 정의하는 반면, 바인딩은 데이터 흐름을 정의합니다.

요소의 데이터를 설정하고, 처리 후 요소에서 출력 매개 변수를 생성하고, 요소가 실행될 때 발생할 수 있는 오류를 처리하려면 요소 바인딩을 설정해야 합니다.

IN 바인딩 스키마 요소의 수신 데이터를 설정합니다. 요소의 로컬 입력 매개 변수를소스 워크플로 특성에 바인딩합니다. 입력 탭의 로컬 매개 변수 열에 요소의 입력 매개 변수가 나열되고, 입력 탭의 소스 매개 변수 열에 로컬 매개변수가 바인딩되는 워크플로 특성이 나열됩니다. 또한 매개 변수 유형 및매개 변수 설명도 이 탭에 표시됩니다.

OUT 바인딩 워크플로 특성을 변경하고, 요소 실행이 완료된 경우 출력 매개 변수를 생성합니다. 출력 탭의 로컬 매개 변수 열에 요소의 출력 매개 변수가 나열되고, 출력 탭의 소스 매개 변수 열에 로컬 매개 변수가 바인딩되는 워크플로특성이 나열됩니다. 또한 매개 변수 유형 및 매개 변수 설명도 이 탭에 표시됩니다.

예외 바인딩 요소가 실행될 때 예외가 발생한 경우 예외 처리기에 연결합니다.

IN 바인딩은 바인딩된 소스 매개 변수에서 값을 읽고, OUT 바인딩은 바인딩된 소스 매개 변수에 값을 씁니다.

스키마 요소에서 사용하는 모든 특성 또는 입력 매개 변수를 워크플로 특성에 바인딩하려면 IN 바인딩을사용해야 합니다. 요소가 실행될 때 수신되는 입력 매개 변수의 값이 변경된 경우 OUT 바인딩을 사용하여워크플로 특성에 바인딩해야 합니다. 요소의 출력 매개 변수를 워크플로 요소에 바인딩하면 워크플로 스키마의 다른 후속 요소가 이러한 출력 매개 변수를 입력 매개 변수로 사용할 수 있습니다.

워크플로를 생성할 때 출력 매개 변수 값을 바인딩하지 않아 요소에서 적용한 워크플로 특성 변경 내용이반영되지 않는 실수를 저지르는 경우가 종종 있습니다.

중요 워크플로에서 이미 정의한 유형의 입력 및 출력 매개 변수가 필요한 요소를 추가하는 경우에는Orchestrator가 이러한 매개 변수에 대한 바인딩을 설정합니다. 요소에서 바인딩할 수 있는 동일한 유형의 여러 매개 변수가 워크플로에 정의된 경우 Orchestrator가 바인딩한 매개 변수가 올바른지 확인해야 합니다.

요소 바인딩 정의

요소를 연결하여 워크플로의 논리적 흐름을 생성한 후에는 요소 바인딩을 정의하여 각 요소가 수신하고생성한 데이터를 처리하는 방식을 정의합니다.

필수 조건

워크플로 편집기의 스키마 탭에 워크플로 스키마가 있고 요소 간에 링크를 생성했는지 확인합니다.

프로시저

1 바인딩을 설정할 요소의 편집 아이콘( )을 클릭합니다.

요소의 속성이 나열된 대화 상자가 표시됩니다.

VMware vRealize Orchestrator를 사용한 개발

34 VMware, Inc.

Page 35: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

2 입력 탭을 클릭합니다.

입력 탭의 내용은 선택한 요소 유형에 따라 다릅니다.

n 미리 정의된 작업, 워크플로 또는 작업 요소를 선택한 경우 해당 요소 유형의 가능한 로컬 입력매개 변수가 입력 탭에 나열되지만 바인딩은 설정되지 않습니다.

n 다른 유형의 요소를 선택한 경우 입력 탭에서 마우스 오른쪽 버튼을 클릭하고 워크플로 매개 변수/특성에 바인딩을 선택하여 워크플로에 대해 이미 정의한 입력 매개 변수 및 특성 목록에서 선택할 수 있습니다.

n 필요한 특성이 아직 없는 경우 입력 탭에서 마우스 오른쪽 버튼을 클릭하고 워크플로 매개 변수/특성에 바인딩 > 워크플로에서 매개 변수/특성 생성을 선택하여 생성할 수 있습니다.

3 적절한 매개 변수가 있는 경우 바인딩할 입력 매개 변수를 선택하고 소스 매개 변수 텍스트 상자에서설정 안 함 버튼을 클릭합니다.

바인딩할 수 있는 소스 매개 변수 및 특성 목록이 표시됩니다.

4 제시된 목록에서 로컬 입력 매개 변수에 바인딩할 소스 매개 변수를 선택합니다.

5 (선택 사항) 바인딩할 소스 매개 변수를 정의하지 않은 경우 매개 변수 선택 대화 상자에서 워크플로에서 특성/매개 변수 생성 링크를 클릭하여 생성할 수 있습니다.

6 출력 탭을 클릭합니다.

출력 탭의 내용은 선택한 요소 유형에 따라 다릅니다.

n 미리 정의된 작업, 워크플로 또는 작업 요소를 선택한 경우 해당 요소 유형의 가능한 로컬 출력매개 변수가 출력 탭에 나열되지만 바인딩은 설정되지 않습니다.

n 다른 유형의 요소를 선택한 경우 출력 탭에서 마우스 오른쪽 버튼을 클릭하고 워크플로 매개 변수/특성에 바인딩을 선택하여 워크플로에 대해 이미 정의한 출력 매개 변수 및 특성 목록에서 선택할 수 있습니다.

n 필요한 특성이 아직 없는 경우 입력 탭에서 마우스 오른쪽 버튼을 클릭하고 워크플로 매개 변수/특성에 바인딩 > 워크플로에서 매개 변수/특성 생성을 선택하여 생성할 수 있습니다.

7 바인딩할 매개 변수를 선택합니다.

8 소스 매개 변수 > 설정 안 함 버튼을 클릭합니다.

9 입력 매개 변수에 바인딩할 소스 매개 변수를 선택합니다.

10 (선택 사항) 바인딩할 매개 변수를 정의하지 않은 경우 매개 변수 선택 대화 상자에서 워크플로에서특성/매개 변수 생성 버튼을 클릭하여 생성할 수 있습니다.

요소에서 수신하는 입력 매개 변수와 요소에서 생성하는 출력 매개 변수를 정의하고 워크플로 특성 및 매개 변수에 바인딩했습니다.

후속 작업

의사 결정을 정의하여 워크플로 경로에서 분기를 생성할 수 있습니다.

의사 결정

워크플로는 부울 true 또는 false 문에 따라 작업의 여러 과정을 정의하는 의사 결정 함수를 구현할 수 있습니다.

의사 결정은 워크플로의 분기입니다. 워크플로 의사 결정은 사용자, 다른 워크플로, 애플리케이션 또는 워크플로가 실행되는 환경에서 제공된 입력에 따라 이루어집니다. 의사 결정 요소가 받은 입력 매개 변수 값에 따라 워크플로 분기의 분기가 결정됩니다. 예를 들어 워크플로 의사 결정에서 지정된 가상 시스템의 전원 상태를 입력으로 받을 수 있습니다. 가상 시스템의 전원이 켜진 경우 워크플로는 논리적 흐름의 특정경로를 따릅니다. 가상 시스템의 전원이 꺼진 경우 워크플로는 다른 경로를 따릅니다.

1장 워크플로 개발

VMware, Inc. 35

Page 36: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

의사 결정은 항상 부울 함수입니다. 각 의사 결정에 대한 가능한 결과는 true 또는 false뿐입니다.

사용자 지정 의사 결정

사용자 지정 의사 결정은 스크립트로 의사 결정 문을 정의한다는 점에서 표준 의사 결정과 다릅니다. 사용자 지정 의사 결정은 다음 예제와 같이 정의한 문에 따라 true 또는 false를 반환합니다.

if (decision_statement){

return true;

}else{

return false;

}

의사 결정 요소 링크 생성

의사 결정 요소는 워크플로의 다른 요소와 다릅니다. 의사 결정 요소에는 true 또는 false 출력 매개 변수만 있으며, 예외 링크가 없습니다.

필수 조건

워크플로 편집기의 스키마 탭에 요소(다른 요소와 연결되지 않은 하나 이상의 의사 결정 요소 포함)가 있는지 확인합니다.

프로시저

1 의사 결정 요소 위에 마우스 포인터를 놓고 워크플로에서 가능한 두 분기를 정의하는 다른 두 요소에연결합니다.

파란색 화살표와 빨간색 화살표가 요소의 오른쪽에 표시됩니다.

2 파란색 화살표 위에 포인터를 놓고 마우스 왼쪽 버튼을 누른 채 대상 요소로 포인터를 이동합니다.

두 요소 사이에 녹색 화살표가 표시되고 대상 요소가 녹색으로 바뀝니다. 녹색 화살표는 의사 결정 요소에 수신된 입력 매개 변수 또는 특성이 의사 결정 문과 일치하는 경우 워크플로에 적용되는 true 경로를 나타냅니다.

3 마우스 왼쪽 버튼을 놓습니다.

녹색 화살표가 두 요소 사이에 그대로 유지됩니다. 의사 결정 요소에 예상된 값이 수신된 경우 워크플로에 적용되는 경로를 정의했습니다.

4 의사 결정 요소 위에 포인터를 놓고 마우스 왼쪽 버튼을 누른 채 대상 요소로 포인터를 이동합니다.

두 요소 사이에 빨간색 점선 화살표가 표시되고 대상 요소가 녹색으로 바뀝니다. 빨간색 화살표는 의사 결정 요소에 수신된 입력 매개 변수 또는 특성이 의사 결정 문과 일치하지 않는 경우 워크플로에적용되는 false 경로를 나타냅니다.

5 마우스 왼쪽 버튼을 놓습니다.

빨간색 점선 화살표가 두 요소 사이에 그대로 유지됩니다. 의사 결정 요소에 예상치 못한 입력이 수신된 경우 워크플로에 적용되는 경로를 정의했습니다.

의사 결정 요소에 수신된 입력 매개 변수 또는 특성에 따라 워크플로에 적용되는 가능한 true 또는 false경로를 정의했습니다.

후속 작업

의사 결정 문을 정의합니다. “의사 결정을 사용하여 워크플로 분기 생성,”(37 페이지) 항목을 참조하십시오.

VMware vRealize Orchestrator를 사용한 개발

36 VMware, Inc.

Page 37: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

연결된 의사 결정 요소 삭제

워크플로 스키마에서 연결된 의사 결정 요소를 삭제하는 경우 삭제할 워크플로 경로를 지정해야 합니다.

필수 조건

워크플로 편집기의 스키마 탭에 요소(true 및 false 경로가 있는 하나 이상의 의사 결정 요소 포함)가 있는지 확인합니다.

프로시저

1 의사 결정 요소를 선택하고 삭제를 누릅니다.

사용 가능한 옵션이 있는 대화 상자가 나타납니다.

2 삭제할 의사 결정 분기를 선택합니다.

옵션 설명

성공 분기 의사 결정 요소와 true 의사 결정 경로를 따르는 모든 요소가 워크플로스키마에서 삭제됩니다.

실패 분기 의사 결정 요소와 false 의사 결정 경로를 따르는 모든 요소가 워크플로스키마에서 삭제됩니다.

두 분기 모두 의사 결정 요소와 두 의사 결정 경로를 따르는 모든 요소가 워크플로 스키마에서 삭제됩니다.

없음 의사 결정 요소와 해당 링크만 워크플로 스키마에서 삭제됩니다. 두 의사결정 경로를 따르는 모든 요소는 워크플로 스키마에 그대로 유지됩니다.

3 확인을 클릭합니다.

의사 결정을 사용하여 워크플로 분기 생성

의사 결정 요소는 워크플로에서 분기를 생성하는 데 사용되는 간단한 부울 함수입니다. 의사 결정 요소는수신된 입력이 사용자가 설정한 의사 결정 문과 일치하는지 확인합니다. 이 의사 결정에 따라 워크플로는가능한 두 경로 중 하나로 진행됩니다.

필수 조건

의사 결정을 정의하기 전에 워크플로 편집기에서 스키마의 다른 두 요소에 연결된 의사 결정 요소가 있는지 확인합니다.

프로시저

1 의사 결정 요소의 편집 아이콘( )을 클릭합니다.

의사 결정 요소의 속성이 나열된 대화 상자가 표시됩니다.

2 대화 상자에서 의사 결정 탭을 클릭합니다.

3 설정 안 함(NULL) 링크를 클릭하여 이 의사 결정에 대한 소스 입력 매개 변수를 선택합니다.

이 워크플로에 정의된 모든 특성 및 입력 매개 변수가 나열된 대화 상자가 표시됩니다.

4 목록에서 두 번 클릭하여 입력 매개 변수를 선택합니다.

5 바인딩할 소스 매개 변수를 정의하지 않은 경우 매개 변수 선택 대화 상자에서 워크플로에서 특성/매개 변수 생성 링크를 클릭하여 생성합니다.

6 드롭다운 메뉴에서 의사 결정 문을 선택합니다.

메뉴에 제시되는 문은 상황에 맞는 문이며, 선택한 입력 매개 변수의 유형에 따라 달라집니다.

1장 워크플로 개발

VMware, Inc. 37

Page 38: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

7 의사 결정 문을 일치시킬 값을 추가합니다.

선택한 입력 유형 및 문에 따라 설정 안 함(NULL) 링크가 값 텍스트 상자에 표시될 수도 있습니다.이 링크를 클릭하면 미리 정의된 값 항목이 제공됩니다. 그렇지 않으면 직접 값을 제공하는 문자열과같은 텍스트 상자가 표시됩니다.

의사 결정 요소에 대한 문을 정의했습니다. 입력 매개 변수를 수신한 경우 의사 결정 요소는 입력 매개 변수 값을 문의 값과 비교하여 해당 문이 참인지, 거짓인지 확인합니다.

후속 작업

워크플로에서 예외를 처리하는 방식을 설정해야 합니다.

예외 처리

예외 처리는 스키마 요소가 실행될 때 발생한 오류를 인식합니다. 또한 오류가 발생한 경우 스키마 요소의동작 방식을 정의합니다.

의사 결정 및 시작/끝 요소를 제외한 모든 요소는 예외 처리에만 사용되는 특정 출력 매개 변수 유형을 포함합니다. 요소가 실행되는 동안 오류가 발생한 경우 해당 요소는 예외 처리기로 오류 신호를 보낼 수 있습니다. 예외 처리기는 오류를 인식하고 받은 오류에 따라 반응합니다. 정의한 오류 처리기가 특정 오류를처리할 수 없는 경우 요소의 예외 출력 매개 변수를 Exception 요소에 바인딩할 수 있습니다. 그러면 실패 상태로 워크플로 실행이 종료됩니다.

예외는 워크플로 요소 내에서 try 및 catch 시퀀스로 작동합니다. 요소에서 지정된 예외를 처리할 필요가없는 경우 해당 요소의 예외 출력 매개 변수를 바인딩하지 않아도 됩니다.

예외에 대한 출력 매개 변수 유형은 항상 errorCode 개체입니다.

예외 바인딩 생성

요소에서 오류가 발생한 경우의 워크플로 동작 방식을 정의하는 바인딩을 설정할 수 있습니다.

필수 조건

워크플로 편집기의 스키마 탭에 요소가 있는지 확인합니다.

프로시저

1 예외 바인딩을 정의할 요소 위에 포인터를 놓습니다.

빨간색 화살표가 요소의 오른쪽에 표시됩니다.

2 확대될 때까지 빨간색 화살표 위에 포인터를 놓고 마우스 왼쪽 버튼을 누른 채 대상 요소로 빨간색 화살표를 끕니다.

빨간색 파선 화살표가 두 요소를 연결합니다. 대상 요소는 연결된 요소에서 오류가 발생한 경우의 워크플로 동작을 정의합니다.

3 예외 처리 요소에 연결된 요소의 편집 아이콘( )을 클릭합니다.

4 스키마 요소 속성 탭에서 예외 탭을 클릭합니다.

5 출력 예외 바인딩 값을 설정하려면 설정 안 함을 클릭합니다.

n 예외 특성 바인딩 대화 상자에서 예외 출력 매개 변수에 바인딩할 매개 변수를 선택하고 선택을클릭합니다.

n 워크플로에서 매개 변수/특성 생성을 클릭하여 예외 출력 매개 변수를 생성합니다.

6 예외 처리 동작을 정의하는 대상 요소를 클릭합니다.

7 스키마 요소 속성 탭에서 입력 탭을 클릭합니다.

VMware vRealize Orchestrator를 사용한 개발

38 VMware, Inc.

Page 39: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

8 워크플로 매개 변수/특성에 바인딩 아이콘( )을 클릭합니다.

입력 매개 변수를 선택하는 대화 상자가 나타납니다.

9 예외 출력 매개 변수를 선택하고 선택을 클릭합니다.

10 스키마 요소 속성 탭에서 예외 처리 요소에 대한 출력 탭을 클릭합니다.

11 예외 처리 요소의 동작을 정의합니다.

n 워크플로 매개 변수/특성에 바인딩 아이콘( )을 클릭하여 생성할 예외 처리 요소에 대한 출력매개 변수를 선택합니다.

n 스크립팅 탭을 클릭하고 JavaScript를 사용하여 예외 처리 요소의 동작을 정의합니다.

요소에서 예외를 처리하는 방식을 정의했습니다.

후속 작업

워크플로를 실행할 때 사용자로부터 입력 매개 변수를 가져오는 방법을 정의해야 합니다.

오류 처리기 사용

표준 오류 처리기를 사용하여 특정 워크플로 스키마 요소에서 오류가 발생한 경우의 동작을 정의할 수 있습니다. 전역 오류 처리기를 사용하여 표준 오류 처리기에서 발견하지 못한 오류가 발생한 경우의 동작을정의할 수 있습니다.

워크플로에 오류 처리기 추가

워크플로 요소에 오류 처리기를 추가하여 워크플로를 실행하는 동안 특정 워크플로 요소의 오류가 처리되는 방식을 정의할 수 있습니다. 지정된 오류 경로가 없는 워크플로 요소에만 오류 처리기를 추가할 수 있습니다.

중요 오류 처리 요소가 포함된 워크플로는 Orchestrator 5.5.x 이하와 호환되지 않습니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 오류 처리 요소를 워크플로 스키마의 적절한 요소로 끌어옵니다.

대화 상자가 나타납니다.

2 대화 상자의 드롭다운 메뉴에서 오류 처리 방식을 선택합니다.

옵션 설명

예외 발생 오류가 발생한 경우 예외가 발생합니다. 예외 바인딩을 수정할 수 있습니다.

워크플로 호출 오류가 발생한 경우 선택한 워크플로가 실행됩니다.

사용자 지정 스크립트 오류가 발생한 경우 사용자 지정 스크립트가 실행됩니다.

3 선택을 클릭합니다.

워크플로에 오류 처리기를 추가했습니다. 워크플로가 이 요소에 도달하면 선택한 작업을 수행한 후 실행이 종료됩니다.

1장 워크플로 개발

VMware, Inc. 39

Page 40: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로에 전역 오류 처리기 추가

워크플로 스키마에 전역 오류 처리기를 추가하여 워크플로를 실행하는 동안 표준 오류 처리기로 발견되지않는 오류가 처리되는 방식을 정의할 수 있습니다. 워크플로 스키마에 하나의 전역 오류 처리기를 추가할수 있습니다.

중요 기본 오류 처리기 요소가 포함된 워크플로는 Orchestrator 5.5.x 이하와 호환되지 않습니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 기본 오류 처리기 요소를 워크플로 스키마로 끌어옵니다.

2 (선택 사항) 기본 오류 처리기 요소와 예외 발생 요소 사이에 스키마 요소를 추가하여 전역 워크플로오류가 처리되는 방식을 지정합니다.

워크플로에 전역 오류 처리기를 추가했습니다. 워크플로를 실행하는 동안 표준 오류 처리기로 발견되지않는 오류가 발생한 경우 전역 오류 처리기가 지정된 작업을 수행한 후 워크플로 실행이 종료됩니다.

Foreach 요소 및 복합 유형

개발한 워크플로에 Foreach 요소를 삽입하여 매개 변수 또는 특성의 어레이에서 반복되는 하위 워크플로를 실행할 수 있습니다. 워크플로의 이해도 및 가독성을 개선하기 위해 복합 유형이라는 단일 유형에서논리적으로 연결된 여러 유형의 워크플로 매개 변수를 그룹화할 수 있습니다.

Foreach 요소 사용

Foreach 요소는 입력 매개 변수 또는 특성의 어레이에서 하위 워크플로를 반복적으로 실행합니다. 하위워크플로를 실행할 어레이를 선택하고, 워크플로를 실행할 때 해당 어레이의 요소 값을 전달할 수 있습니다. 하위 워크플로는 어레이에 정의한 요소 수에 해당하는 횟수만큼 실행됩니다.

특성 어레이가 포함된 구성 요소가 있는 경우 Foreach 요소에서 이러한 특성에 대해 반복되는 워크플로를 실행할 수 있습니다.

예를 들어 폴더에 이름을 변경할 가상 시스템이 10개가 있다고 가정해 보겠습니다. 이러한 가상 시스템의이름을 변경하려면 워크플로에 Foreach 요소를 삽입하고 가상 시스템 이름 변경 워크플로를 해당 요소의 하위 워크플로로 정의해야 합니다. 가상 시스템 이름 변경 워크플로에는 두 개의 입력 매개 변수(가상시스템과 가상 시스템의 새 이름)가 사용됩니다. 이러한 매개 변수를 현재 워크플로의 입력으로 승격할수 있습니다. 그러면 해당 매개 변수는 가상 시스템 이름 변경 워크플로를 반복할 어레이가 됩니다. 워크플로를 실행할 때 폴더에서 10개의 가상 시스템과 새 이름을 지정할 수 있습니다. 워크플로가 실행될 때마다 가상 시스템 어레이와 가상 시스템의 새 이름 어레이에서 각각 요소를 가져옵니다.

복합 유형 사용

복합 유형은 논리적으로 연결되어 있지만 유형이 서로 다른 둘 이상의 입력 매개 변수 또는 특성 그룹입니다. Foreach 요소에서 매개 변수 그룹을 복합 값으로 바인딩할 수 있습니다. 그러면 Foreach 요소는워크플로의 모든 후속 실행에서 그룹화된 매개 변수 값을 한 번에 가져옵니다.

VMware vRealize Orchestrator를 사용한 개발

40 VMware, Inc.

Page 41: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

예를 들어 가상 시스템의 이름을 변경하려는 경우를 가정해 보겠습니다. 이 경우 가상 시스템 개체와 해당개체의 새 이름이 필요합니다. 여러 가상 시스템의 이름을 변경해야 하는 경우에는 가상 시스템과 해당 이름에 각각 하나씩 두 개의 어레이가 필요합니다. 이 두 어레이는 명시적으로 연결되지 않습니다. 복합 유형을 사용하면 하나의 어레이에서 각 요소에 가상 시스템과 새 이름을 둘 다 포함할 수 있습니다. 그러면여러 값이 있는 경우 이 두 매개 변수 간의 연결이 워크플로 스키마에 의해 묵시적으로 지정되는 것이 아니라 명시적으로 지정됩니다.

참고 vSphere Web Client에서는 복합 유형이 포함된 워크플로를 실행할 수 없습니다.

Foreach 요소 정의

모든 후속 실행에서 매번 다른 매개 변수 또는 특성 값을 전달하여 하위 워크플로를 여러 번 실행하려는경우 상위 워크플로에 Foreach 요소를 삽입할 수 있습니다.

Foreach 요소를 삽입한 경우 Foreach 요소가 반복되는 어레이를 하나 이상 선택해야 합니다. 후속 워크플로 실행마다 어레이 요소 값이 다를 수 있습니다.

하위 워크플로에 출력 매개 변수가 있는 경우 해당 매개 변수에서도 하위 워크플로가 반복될 수 있도록 워크플로 출력을 누적할 Foreach 요소의 출력 매개 변수를 선택해야 합니다.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 스키마 탭을 선택합니다.

2 일반 메뉴에서 워크플로 스키마의 Foreach 요소를 끌어옵니다.

3 선택 대화 상자에서 워크플로를 선택합니다.

스키마 창 상단에 다음 알림이 표시됩니다.

작업의 매개 변수를 현재 워크플로에 입력/출력으로 추가하시겠습니까?

4 알림에서 설정을 클릭합니다.

사용 가능한 옵션이 포함된 팝업 창이 표시됩니다.

5 각 입력 매개 변수의 매핑 유형을 선택합니다.

옵션 설명

입력 인수가 입력 워크플로 매개 변수에 매핑됩니다.

건너뛰기 인수가 NULL 값에 매핑됩니다.

값 인수가 값 열에서 설정할 수 있는 값을 가진 특성에 매핑됩니다.

6 각 출력 매개 변수의 매핑 유형을 선택합니다.

옵션 설명

출력 인수가 출력 워크플로 매개 변수에 매핑됩니다.

건너뛰기 인수가 NULL 값에 매핑됩니다.

로컬 변수 인수가 특성에 매핑됩니다.

7 승격을 클릭합니다.

8 Foreach 요소를 마우스 오른쪽 버튼으로 클릭하고 동기화 > 프레젠테이션 동기화를 선택합니다.

확인 대화상자가 나타납니다.

1장 워크플로 개발

VMware, Inc. 41

Page 42: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

9 확인을 클릭하여 Foreach 요소의 프레젠테이션을 현재 워크플로로 전파합니다.

작업 결과에 대한 정보가 대화 상자에 표시됩니다.

10 입력 탭에서 하위 워크플로의 매개 변수가 어레이 유형의 요소로 추가되었는지 확인합니다.

11 출력 탭에서 하위 워크플로의 매개 변수가 어레이 유형의 요소로 추가되었는지 확인합니다.

워크플로에서 Foreach 요소를 정의했습니다. Foreach 요소는 사용자가 정의한 매개 변수 또는 특성의어레이에서 모든 요소를 매개 변수로 가져오는 워크플로를 실행합니다.

어레이로 정의되지 않은 매개 변수 또는 특성의 경우 워크플로는 모든 후속 실행에서 동일한 값을 가져옵니다.

예: Foreach 요소를 사용하여 가상 시스템 이름 변경

Foreach 요소를 사용하여 여러 가상 시스템의 이름을 한 번에 변경할 수 있습니다. 워크플로에Foreach 요소를 삽입하고 vm 및 newName 매개 변수를 현재 워크플로의 입력으로 승격해야 합니다. 이러한 방식으로 워크플로를 실행하는 경우 이름을 변경할 가상 시스템과 해당 가상 시스템의 새 이름을 지정합니다. 가상 시스템은 vm 매개 변수에 대해 만든 어레이에 요소로 포함되고, 가상 시스템의 새 이름은newName 매개 변수에 대해 만든 어레이에 포함됩니다.

Foreach 요소에서 복합 유형 정의

논리적으로 연결된 여러 워크플로 매개 변수를 복합 유형이라는 새로운 유형으로 그룹화할 수 있습니다.Foreach 요소를 통해 매개 변수 그룹을 복합 값으로 바인딩하여 여러 어레이의 매개 변수를 단일 어레이로 연결할 수 있습니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 워크플로에 Foreach 요소가 있는지 확인합니다.

프로시저

1 Foreach 요소의 IN 또는 OUT 탭을 선택합니다.

2 다른 로컬 매개 변수와 복합 유형으로 그룹화할 로컬 매개 변수를 선택합니다.

3 IN 또는 OUT 탭 상단에서 매개 변수 그룹을 복합 값으로 바인딩을 클릭합니다.

4 바인딩 창에서 복합 유형으로 그룹화할 매개 변수를 선택합니다.

5 반복기로 바인딩을 선택합니다.

복합 유형 어레이에서 반복할 Foreach 요소를 설정했습니다.

6 적용을 클릭합니다.

복합 유형을 정의하고 워크플로가 이 복합 유형 어레이에서 반복되는지 확인했습니다. 복합 유형으로 그룹화된 매개 변수는 이름이 composite_type_name.parameter_name으로 지정됩니다. 예를 들어snapshots 복합 유형을 만든 경우 이 유형으로 그룹화되는 매개 변수는 snapshots.vm[in-parameter] 또는snapshots.name[in-parameter]일 수 있습니다. 복합 유형 어레이의 모든 요소는 복합 유형으로 그룹화한 모든 매개 변수의 단일 인스턴스를 포함합니다.

예: 가상 시스템 이름 변경

가상 시스템 10개의 이름을 한 번에 변경하려는 경우를 가정해 보겠습니다. 이 경우 워크플로에Foreach 요소를 삽입하고 해당 요소에서 가상 시스템 이름 변경 워크플로를 선택합니다. vm 및 newName매개 변수에 명시적으로 연결할 복합 유형을 만듭니다. 복합 유형을 반복기로 바인딩하여 vm 및 newName 매개 변수를 둘 다 포함하는 단일 어레이를 만듭니다.

VMware vRealize Orchestrator를 사용한 개발

42 VMware, Inc.

Page 43: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로에 스위치 작업 추가

워크플로 특성 또는 매개 변수를 기반으로 스위치 케이스를 정의하는 기본 스위치 작업을 워크플로 스키마에 추가할 수 있습니다.

모든 스위치 작업에는 여러 스위치 케이스가 있을 수 있습니다. 모든 스위치 케이스는 특성 또는 매개 변수와 관련된 조건에 의해 정의됩니다. 조건이 충족된 경우 워크플로는 사용자가 정의한 해당 워크플로 요소로의 전환을 실행합니다. 지정된 조건이 충족되지 않은 경우 워크플로는 사용자가 정의한 기본 워크플로 요소로의 전환을 실행합니다.

중요 스위치 요소가 포함된 워크플로는 Orchestrator 5.5.x 이하와 호환되지 않습니다.

필수 조건

워크플로 편집기의 스키마 탭에 요소가 있는지 확인합니다.

프로시저

1 스위치 요소를 워크플로 스키마의 적절한 요소로 끌어옵니다.

2 스위치 요소의 편집 아이콘( )을 클릭합니다.

3 케이스 탭에서 스위치 케이스를 추가하거나 삭제합니다.

스위치 케이스의 우선 순위를 변경할 수 있습니다.

4 각 스위치 케이스에 대한 조건을 정의합니다.

5 각 스위치 케이스의 해당 워크플로 요소를 선택합니다.

6 전환할 기본 워크플로 요소를 선택합니다.

7 닫기를 클릭합니다.

8 저장을 클릭합니다.

스위치 케이스 조건 및 워크플로 경로를 정의했습니다.

플러그인 개발Orchestrator는 개방형 플러그인 아키텍처를 통해 관리 및 운영 솔루션과의 통합을 지원합니다.Orchestrator 클라이언트를 사용하여 플러그인 워크플로를 실행 및 생성하고 플러그인 API에 액세스할수 있습니다.

플러그인 개요

Orchestrator 플러그인은 표준 구성 요소 집합을 포함하며 표준 아키텍처를 준수해야 합니다. 이러한방식을 통해 다양한 외부 기술에서 광범위하게 가능한 플러그인을 만들 수 있습니다.

n Orchestrator 플러그인의 구조(44 페이지)

Orchestrator 플러그인에는 특정 기능을 구현하는 여러 유형의 계층으로 구성된 공통 구조가 있습니다.

n Orchestrator에 외부 API 노출(45 페이지)

Orchestrator 플러그인을 만들어 외부 제품의 API를 Orchestrator 플랫폼에 노출할 수 있습니다. Orchestrator에서 사용 가능한 JavaScript 개체에 매핑할 수 있는 API를 노출하는 모든 기술에 대한 플러그인을 만들 수 있습니다.

n 플러그인의 구성 요소(46 페이지)

플러그인은 플러그인된 기술의 개체를 Orchestrator 플랫폼에 노출하는 구성 요소의 표준 집합으로 구성됩니다.

1장 워크플로 개발

VMware, Inc. 43

Page 44: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n vso.xml 파일의 역할(47 페이지)

vso.xml 파일을 사용하여 플러그인된 기술의 개체, 클래스, 메서드 및 특성을 Orchestrator 인벤토리 개체, 스크립팅 유형, 스크립팅 클래스, 스크립팅 메서드 및 특성에 매핑할 수 있습니다. 또한vso.xml 파일은 플러그인의 구성 및 시작 동작을 정의합니다.

n 플러그인 어댑터의 역할(47 페이지)

플러그인 어댑터는 플러그인이 Orchestrator 서버로 향하는 진입접입니다. 플러그인 어댑터는Orchestrator 서버에서 플러그인된 기술의 데이터스토어 역할을 하며 플러그인 팩토리를 만들고플러그인된 기술에서 발생하는 이벤트를 관리합니다.

n 플러그인 팩토리의 역할(48 페이지)

플러그인 팩토리는 플러그인된 기술에서 Orchestrator가 개체를 찾아 개체에 대한 작업을 수행하는 방법을 정의합니다.

n 찾기 개체의 역할(49 페이지)

찾기 개체는 플러그인된 기술에서 관리 개체 유형의 특정 인스턴스를 식별하고 찾습니다.Orchestrator는 찾기 개체에 대한 워크플로를 실행하여 플러그인된 기술에서 발견한 개체를 수정하고 상호 작용할 수 있습니다.

n 스크립팅 개체의 역할(49 페이지)

스크립팅 개체는 플러그인된 기술의 개체에 대한 JavaScript 표현입니다. 플러그인의 스크립팅 개체는 Orchestrator Javascript API에 표시되며, 워크플로 및 작업의 스크립팅된 요소에서 이를사용할 수 있습니다.

n 이벤트 처리기의 역할(50 페이지)

이벤트는 Orchestrator가 플러그인된 기술에서 찾은 개체의 상태 또는 특성 변경입니다.Orchestrator는 이벤트 처리기를 구현하여 이벤트를 모니터링합니다.

Orchestrator 플러그인의 구조

Orchestrator 플러그인에는 특정 기능을 구현하는 여러 유형의 계층으로 구성된 공통 구조가 있습니다.

Orchestrator 플러그인의 세 가지 하위 계층(인프라 클래스, 래핑 클래스 및 스크립팅 개체)은 플러그인된 기술과 Orchestrator 간의 연결을 구현합니다.

Orchestrator 플러그인의 사용자 표시 부분은 작업, 빌딩 블록 및 상위 수준 워크플로로 구성된 세 가지상위 계층입니다.

VMware vRealize Orchestrator를 사용한 개발

44 VMware, Inc.

Page 45: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

그림 1‑3. Orchestrator 플러그인의 구조

상위 수준 워크플로

빌딩 블록 워크플로

작업

스크립팅 개체

래핑 클래스

인프라 클래스

인프라 클래스 플러그인된 기술과 Orchestrator 간의 연결을 제공하는 클래스 집합입니다. 인프라 클래스에는 플러그인 팩토리, 플러그인 어댑터 등 플러그인 정의에 따라 구현할 클래스가 포함됩니다. 또한 도우미, 캐싱, 인벤토리 등 일반적인 작업 및 개체에 대한 기능을 제공하는 클래스가 포함됩니다.

래핑 클래스 플러그인된 기술의 개체 모델을 Orchestrator 내에 노출할 개체 모델에맞게 조정하는 클래스 집합입니다.

스크립팅 개체 플러그인된 기술의 래핑 클래스, 메서드 및 특성에 대한 액세스를 제공하는JavaScript 개체 유형입니다. vso.xml 파일에서 Orchestrator에 노출할플러그인된 기술의 래핑 클래스, 특성 및 메서드를 정의할 수 있습니다.

작업 워크플로 및 스크립팅 작업에서 직접 사용할 수 있는 JavaScript 함수 집합입니다. 여러 입력 매개 변수를 사용하고 단일 반환 값을 제공할 수 있습니다.

빌딩 블록 워크플로 플러그인과 함께 제공하려는 모든 일반 기능을 포함하는 워크플로 집합입니다. 일반적으로 빌딩 블록 워크플로는 오케스트레이션된 기술의 사용자 인터페이스에서 수행되는 작업을 나타냅니다. 빌딩 블록 워크플로는 직접 사용되거나 상위 수준 워크플로 내에 포함될 수 있습니다.

상위 수준 워크플로 플러그인의 특정 기능을 포함하는 워크플로 집합입니다. 상위 수준 워크플로를 제공하여 구체적인 요구 사항을 충족하거나 복잡한 플러그인 사용 예를 보여 줄 수 있습니다.

Orchestrator에 외부 API 노출

Orchestrator 플러그인을 만들어 외부 제품의 API를 Orchestrator 플랫폼에 노출할 수 있습니다.Orchestrator에서 사용 가능한 JavaScript 개체에 매핑할 수 있는 API를 노출하는 모든 기술에 대한플러그인을 만들 수 있습니다.

플러그인은 Orchestrator 스크립팅 API에 추가한 JavaScript 개체에 Java 개체 및 메서드를 매핑합니다. 외부 기술이 Java API를 노출하는 경우 Orchestrator용 JavaScript에 API를 직접 매핑하여워크플로 및 작업에서 사용할 수 있습니다.

1장 워크플로 개발

VMware, Inc. 45

Page 46: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

WSDL(웹 서비스 정의 언어), REST(Representational State Transfer) 또는 메시징 서비스를 사용하여 노출된 API를 Java 개체와 통합하는 방식으로 Java가 아닌 다른 언어로 API를 노출하는 애플리케이션의 플러그인을 만들 수 있습니다. 그런 다음 사용할 Orchestrator용 JavaScript에 통합된Java 개체를 매핑합니다.

플러그인된 기술은 Orchestrator에 독립적입니다. 소스 코드 대신 Java 압축 파일(JAR 파일)과 같은이진 코드에만 액세스할 수 있는 경우에도 외부 제품용 Orchestrator 플러그인을 만들 수 있습니다.

플러그인의 구성 요소

플러그인은 플러그인된 기술의 개체를 Orchestrator 플랫폼에 노출하는 구성 요소의 표준 집합으로 구성됩니다.

플러그인의 기본 구성 요소는 플러그인 어댑터, 팩토리 및 이벤트 구현입니다. 사용자는 어댑터, 팩토리및 이벤트 구현에 정의된 개체와 작업을 vso.xml이라는 XML 정의 파일의 Orchestrator 개체에 매핑합니다. vso.xml 파일은 플러그인된 기술의 개체와 함수를 Orchestrator JavaScript API에 나타나는JavaScript 스크립팅 개체에 매핑합니다. vso.xml 파일은 또한 플러그인된 기술의 개체 유형을Orchestrator 인벤토리 탭에 나타나는 찾기에 매핑합니다.

플러그인은 다음 구성 요소로 구성됩니다.

플러그인 모듈 Java 클래스 집합, vso.xml 파일 및 플러그인을 통해 액세스하는 개체와 상호 작용하는 워크플로와 작업의 패키지에 의해 정의된 플러그인 자체. 플러그인 모듈은 필수 항목입니다.

플러그인 어댑터 플러그인된 기술과 Orchestrator 서버 간의 인터페이스를 정의합니다. 어댑터는 플러그인이 Orchestrator 플랫폼으로 향하는 진입점입니다. 어댑터는 플러그인 팩토리를 만들고 플러그인의 로드와 언로드를 관리하며 플러그인된 기술의 개체에서 발생하는 이벤트를 관리합니다. 플러그인 어댑터는필수 항목입니다.

플러그인 팩토리 플러그인된 기술에서 Orchestrator가 개체를 찾아 작업을 수행하는 방법을 정의합니다. 어댑터는 Orchestrator와 플러그인된 기술 간에 열리는클라이언트 세션을 위해 팩토리를 생성합니다. 팩토리를 사용하여 모든 클라이언트 연결 간 세션을 공유하거나 클라이언트 연결마다 하나의 세션을열 수 있습니다. 플러그인 팩토리는 필수 항목입니다.

구성 Orchestrator는 플러그인이 그 구성을 저장할 표준 방식을 정의하지 않습니다. Windows 레지스트리, 정적 구성 파일을 사용하고, 데이터베이스또는 XML 파일에 정보를 저장해 구성 정보를 저장할 수 있습니다.Orchestrator 플러그인은 Orchestrator 클라이언트에서 구성 워크플로를 실행해 구성할 수 있습니다.

찾기 Orchestrator가 플러그인된 기술에서 개체를 찾고 나타내는 방법을 정의하는 상호 작용 규칙입니다. 찾기는 플러그인된 기술이 Orchestrator에노출한 개체 집합에서 개체를 검색합니다. vso.xml 파일에 개체 간의 관계를정의해 개체 네트워크를 탐색할 수 있습니다. Orchestrator는 인벤토리탭에 플러그인된 기술의 개체 모델을 나타냅니다. 플러그인된 기술의 개체를 Orchestrator에 노출하려면 찾기는 필수 항목입니다.

스크립팅 개체 플러그인된 기술의 개체, 작업 및 특성에 대한 액세스를 제공하는JavaScript 개체 유형입니다. 스크립팅 개체는 Orchestrator가JavaScript를 통해 플러그인된 기술의 개체 모델에 액세스하는 방법을 정의합니다. 사용자는 플러그인된 기술의 클래스와 메서드를 vso.xml 파일의JavaScript 개체에 매핑합니다. Orchestrator 스크립팅 API의JavaScript 개체에 액세스해 이를 Orchestrator 스크립팅 작업(task,action) 및 워크플로에 통합할 수 있습니다. 스크립팅 유형, 클래스 및 메서드를 Orchestrator JavaScript API에 추가하려면 스크립팅 개체는필수 항목입니다.

VMware vRealize Orchestrator를 사용한 개발

46 VMware, Inc.

Page 47: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

인벤토리 Orchestrator 클라이언트의 인벤토리 보기에 나타나는 찾기를 사용해Orchestrator가 찾는 플러그인된 기술의 개체 인스턴스입니다. 인벤토리에서 워크플로를 실행해 인벤토리의 개체에서 작업을 수행할 수 있습니다.인벤토리는 선택 사항입니다. 사용자는 Orchestrator JavaScript API에 스크립팅 유형과 클래스만 추가하고 인벤토리의 개체 인스턴스는 노출하지 않는 플러그인을 만들 수 있습니다.

이벤트 플러그인된 기술에서 개체 상태의 변경입니다. Orchestrator는 플러그인된 기술에서 발생하는 이벤트를 수동으로 수신할 수 있습니다.Orchestrator는 또한 플러그인된 기술에서 이벤트를 능동적으로 트리거할 수도 있습니다. 이벤트는 선택 사항입니다.

vso.xml 파일의 역할

vso.xml 파일을 사용하여 플러그인된 기술의 개체, 클래스, 메서드 및 특성을 Orchestrator 인벤토리 개체, 스크립팅 유형, 스크립팅 클래스, 스크립팅 메서드 및 특성에 매핑할 수 있습니다. 또한 vso.xml 파일은 플러그인의 구성 및 시작 동작을 정의합니다.

vso.xml 파일은 다음과 같은 주요 역할을 수행합니다.

시작 및 구성 동작 플러그인이 정의한 구성 구현을 시작하고 찾는 방식을 정의합니다. 플러그인 어댑터를 로드합니다.

인벤토리 개체 플러그인이 플러그인된 기술에서 액세스하는 개체의 유형을 정의합니다. 플러그인 팩토리 구현의 찾기 메서드는 이러한 개체의 인스턴스를 찾아Orchestrator 인벤토리에 표시합니다.

스크립팅 유형 인벤토리의 다양한 개체 유형을 표현하는 데 사용할 수 있는 스크립팅 유형을 Orchestrator JavaScript API에 추가합니다. 이러한 스크립팅 유형을 워크플로의 입력 매개 변수로 사용할 수 있습니다.

스크립팅 클래스 워크플로, 작업, 정책 등의 스크립팅된 요소에서 사용할 수 있는 클래스를Orchestrator JavaScript API에 추가합니다.

스크립팅 메서드 워크플로, 작업, 정책 등의 스크립팅된 요소에서 사용할 수 있는 메서드를Orchestrator JavaScript API에 추가합니다.

스크립팅 특성 워크플로, 작업, 정책 등의 스크립팅된 요소에서 사용할 수 있는 플러그인된 기술의 개체 특성을 Orchestrator JavaScript API에 추가합니다.

플러그인 어댑터의 역할

플러그인 어댑터는 플러그인이 Orchestrator 서버로 향하는 진입접입니다. 플러그인 어댑터는Orchestrator 서버에서 플러그인된 기술의 데이터스토어 역할을 하며 플러그인 팩토리를 만들고 플러그인된 기술에서 발생하는 이벤트를 관리합니다.

플러그인 어댑터를 만들려면 IPluginAdaptor 인터페이스를 구현하는 Java 클래스를 만듭니다.

사용자가 만든 플러그인 어댑터 클래스는 플러그인된 기술에서 플러그인 팩토리, 이벤트 및 트리거를 관리합니다. IPluginAdaptor 인터페이스는 이러한 작업을 수행하기 위해 사용하는 메서드를 제공합니다.

1장 워크플로 개발

VMware, Inc. 47

Page 48: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

플러그인 어댑터는 다음과 같은 주요 역할을 수행합니다.

팩토리 생성 플러그인 어댑터의 가장 중요한 역할은 모든 연결에 대해 하나의 플러그인팩토리 인스턴스를 Orchestrator에서 플러그인된 기술로 로드 및 언로드하는 것입니다. 플러그인 어댑터 클래스는IPluginAdaptor.createPluginFactory() 메서드를 호출해 IPluginFactory 인터페이스를 구현하는 클래스의 인스턴스를 생성합니다.

이벤트 관리 플러그인 어댑터는 Orchestrator 서버와 플러그인된 기술 간의 인터페이스입니다. 플러그인 어댑터는 플러그인된 기술에서 Orchestrator가 개체에 대해 수행하거나 감시하는 이벤트를 관리합니다. 어댑터는 이벤트 게시자를 통해 이벤트를 관리합니다. 이벤트 게시자는 어댑터가IPluginAdaptor.registerEventPublisher() 메서드를 호출해 생성하는IPluginEventPublisher 인터페이스의 인스턴스입니다. 이벤트 게시자는 플러그인된 기술에서 개체에 대한 트리거와 게이지를 설정해 개체에서 특정 이벤트가 발생하거나 개체의 값이 특정 임계값을 초과하면 Orchestrator가정의된 작업을 실행하도록 합니다. 마찬가지로 장기 실행 워크플로에서 대기 이벤트 요소가 기다리는 이벤트를 정의하는 PluginTrigger 및PluginWatcher 인스턴스를 정의할 수 있습니다.

플러그인 이름 설정 vso.xml 파일에서 플러그인의 이름을 제공합니다. 플러그인 어댑터는vso.xml 파일에서 이 이름을 가져와 Orchestrator 클라이언트 인벤토리 보기에 이를 게시합니다.

라이센스 설치 플러그인된 기술이 어댑터를 구현할 때 필요한 라이센스 파일을 설치하기위해 메서드를 호출할 수 있습니다.

IPluginAdaptor 인터페이스, 포함된 모든 메서드 및 플러그인 API의 기타 모든 클래스에 대한 자세한 내용은 “Orchestrator 플러그인 API 참조,”(54 페이지) 항목을 참조하십시오.

플러그인 팩토리의 역할

플러그인 팩토리는 플러그인된 기술에서 Orchestrator가 개체를 찾아 개체에 대한 작업을 수행하는 방법을 정의합니다.

플러그인 팩토리를 만들려면 Orchestrator 플러그인 API에서 IPluginFactory 인터페이스를 구현 및 확장해야 합니다. 사용자가 생성한 플러그인 팩토리 클래스는 Orchestrator가 플러그인된 기술의 개체에 액세스하기 위해 사용하는 finder 함수를 정의합니다. 팩토리를 사용하면 Orchestrator 서버가 개체의ID, 다른 개체와의 관계 또는 쿼리 문자열을 검색해 개체를 찾을 수 있습니다.

플러그인 팩토리는 다음과 같은 주요 작업을 수행합니다.

개체 찾기 개체의 이름과 유형에 따라 개체를 찾는 함수를 만들 수 있습니다.IPluginFactory.find() 메서드를 사용해 이름과 유형을 기준으로 개체를 찾습니다.

다른 개체와 관련된 개체찾기

주어진 관계 유형에 따라 주어진 개체와 관련된 개체를 찾는 함수를 만들수 있습니다. vso.xml 파일에 관계를 정의합니다. 또한 찾기를 생성해 주어진 관계 유형을 기준으로 모든 상위 개체와 관련된 종속 하위 개체를 찾을수 있습니다. IPluginFactory.findRelation() 메서드를 구현해 주어진 관계 유형을 기준으로 주어진 상위 개체와 관련된 모든 개체를 찾습니다.IPluginFactory.hasChildrenInRelation() 메서드를 구현해 상위 인스턴스에 대해 하나 이상의 하위 개체가 존재하는지 검색합니다.

자체 기준에 따라 개체를찾는 쿼리 정의

정의한 쿼리 규칙을 구현하는 개체 찾기를 만들 수 있습니다.IPluginFactory.findAll() 메서드를 구현해 팩토리가 메서드를 호출할 때 정의한 쿼리 규칙을 만족하는 모든 개체를 찾습니다. 정의한 쿼리 규칙과 일치하는 발견된 모든 개체의 목록을 포함하는 QueryResult 개체에서 findAll()메서드의 결과를 가져옵니다.

VMware vRealize Orchestrator를 사용한 개발

48 VMware, Inc.

Page 49: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

IPluginFactory 인터페이스, 포함된 모든 메서드 및 플러그인 API의 기타 모든 클래스에 대한 자세한 내용은 “Orchestrator 플러그인 API 참조,”(54 페이지) 항목을 참조하십시오.

찾기 개체의 역할

찾기 개체는 플러그인된 기술에서 관리 개체 유형의 특정 인스턴스를 식별하고 찾습니다. Orchestrator는 찾기 개체에 대한 워크플로를 실행하여 플러그인된 기술에서 발견한 개체를 수정하고 상호 작용할 수있습니다.

플러그인된 기술의 지정된 관리 개체 유형에 대한 모든 인스턴스에는 Orchestrator 찾기 개체가 찾을수 있도록 고유 식별자가 있습니다. 플러그인된 기술에서는 개체 인스턴스에 대한 고유 식별자를 문자열로 제공합니다. 워크플로가 실행되면 Orchestrator는 발견한 개체의 고유 식별자를 워크플로 특성 값으로 설정합니다. 지정된 유형의 개체가 입력 매개 변수로 필요한 워크플로는 해당 개체 유형의 특정 인스턴스에서 실행됩니다.

플러그인에서 Orchestrator JavaScript API에 추가한 찾기 개체에는 플러그인 이름이 접두사로 사용됩니다. 예를 들어 vCenter Server API의 VirtualMachine 관리 개체 유형은 Orchestrator에VC:VirtualMachine JavaScript 유형으로 표시됩니다.

또한 Orchestrator는 가상 시스템의 id 특성을 고유 식별자로 사용하는 찾기 개체를 구현하여 vCenterServer 플러그인을 통해 특정 VC:VirtualMachine 인스턴스에 액세스합니다. 이 개체 인스턴스를 워크플로요소에 특성 값으로 전달할 수 있습니다.

Orchestrator 플러그인은 플러그인된 기술의 개체를 vso.xml 파일의 <finder> 요소 내 해당Orchestrator 찾기 개체에 매핑합니다. <finder> 요소는 플러그인된 기술에서 개체의 특정 인스턴스에대한 고유 식별자를 가져오는 메서드 또는 함수를 식별합니다. 또한 <finder> 요소는 개체 간의 관계를 정의하여 다른 개체에 관련된 방식을 기준으로 개체를 찾습니다.

찾기 개체는 Orchestrator 인벤토리 탭에서 해당 개체가 속해 있는 플러그인 아래에 표시됩니다.

스크립팅 개체의 역할

스크립팅 개체는 플러그인된 기술의 개체에 대한 JavaScript 표현입니다. 플러그인의 스크립팅 개체는Orchestrator Javascript API에 표시되며, 워크플로 및 작업의 스크립팅된 요소에서 이를 사용할 수있습니다.

플러그인의 스크립팅 개체는 Orchestrator JavaScript API에 JavaScript 모듈, 유형 및 클래스로표시됩니다. 대부분의 찾기 개체에는 스크립팅 개체 표현이 있습니다. JavaScript 클래스는 플러그인된기술의 API에서 개체에 대한 메서드 및 특성을 나타내는 메서드 및 특성을 Orchestrator JavaScriptAPI에 추가할 수 있습니다. 플러그인된 기술은 Orchestrator에 독립적으로 개체, 유형, 클래스, 특성및 메서드 구현을 제공합니다. 예를 들어 vCenter Server 플러그인은 vCenter Server API에서 정의하는 모든 클래스, 메서드 및 특성에 대한 JavaScript 표현과 함께 vCenter Server API의 모든 개체를 Orchestrator JavaScript API에서 JavaScript 개체로 표현합니다. vCenter Server 스크립팅클래스와 해당 클래스가 정의하는 메서드 및 특성을 Orchestrator 스크립팅 함수에서 사용할 수 있습니다.

예를 들어 vCenter Server API의 VirtualMachine 관리 개체 유형은 VC:VirtualMachine 찾기를 통해 검색되며, Orchestrator JavaScript API에 VcVirtualMachine JavaScript 클래스로 표시됩니다.Orchestrator JavaScript API의 VcVirtualMachine JavaScript 클래스는 동일한 모든 메서드 및 특성을 vCenter Server API의 VirtualMachine 관리 개체로 정의합니다.

Orchestrator 플러그인은 플러그인된 기술의 개체, 유형, 클래스, 특성 및 메서드를 vso.xml 파일의<scripting-objects> 요소 내 해당 Orchestrator JavaScript 개체, 유형, 클래스, 특성 및 메서드에 매핑합니다.

1장 워크플로 개발

VMware, Inc. 49

Page 50: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

이벤트 처리기의 역할

이벤트는 Orchestrator가 플러그인된 기술에서 찾은 개체의 상태 또는 특성 변경입니다.Orchestrator는 이벤트 처리기를 구현하여 이벤트를 모니터링합니다.

Orchestrator 플러그인은 플러그인된 기술에서 이벤트를 모니터링할 수 있는 여러 가지 방법을 제공합니다. Orchestrator 플러그인 API를 사용하면 다음과 같은 유형의 이벤트 처리기를 만들어 플러그인된기술에서 이벤트를 모니터링할 수 있습니다.

수신기 플러그인된 기술에서 개체의 상태 변경을 소극적으로 모니터링합니다. 플러그인된 기술 또는 플러그인 구현에서는 수신기가 모니터링하는 이벤트를 정의합니다. 수신기는 이벤트를 시작하는 것이 아니라 이벤트가 발생한 경우Orchestrator에 알립니다. 수신기는 플러그인된 기술을 폴링하거나 플러그인된 기술에서 알림을 수신하여 이벤트를 감지합니다. 이벤트가 발생하면해당 이벤트를 대기 중인 Orchestrator 정책 또는 워크플로가Orchestrator 서버에서 작업을 시작하여 반응할 수 있습니다. 수신기 구성 요소는 선택 사항입니다.

정책 플러그인된 기술에서 특정 이벤트를 모니터링하고, 이벤트가 발생한 경우Orchestrator 서버에서 작업을 시작합니다. 정책은 정책 트리거 및 정책게이지를 모니터링할 수 있습니다. 정책 트리거는 플러그인된 기술에서 이벤트를 정의합니다. 이러한 이벤트가 발생한 경우 실행 중인 정책이Orchestrator 서버에서 작업(예: 워크플로 실행)을 시작하게 됩니다. 정책 게이지는 플러그인된 기술에서 개체의 특성 값 범위를 정의합니다. 이러한 범위를 초과한 경우 Orchestrator에서 작업을 시작하게 됩니다. 정책은 선택 사항입니다.

워크플로 트리거 실행 중인 워크플로에 이벤트 대기 요소가 포함된 경우 이 요소에 도달하면워크플로가 실행을 일시 중단하고 플러그인된 기술에서 이벤트가 발생할 때까지 대기합니다. 워크플로 트리거는 플러그인된 기술에서 워크플로의 이벤트 대기 요소가 기다리는 이벤트를 정의합니다. 감시자에 워크플로 트리거를 등록합니다. 워크플로 트리거는 선택 사항입니다.

감시자 워크플로의 이벤트 대기 요소를 대신해 플러그인된 기술에서 특정 이벤트에대한 워크플로 트리거를 감시합니다. 이벤트가 발생한 경우 감시자는 해당이벤트를 대기 중인 모든 워크플로에 알립니다. 감시자는 선택 사항입니다.

플러그인 내용 및 구조

Orchestrator 플러그인은 표준 구성 요소 집합을 포함하고, 표준 파일 구조를 준수해야 합니다. 플러그인이 표준 파일 구조를 준수하려면 특정 폴더 및 파일을 포함해야 합니다.

Orchestrator 플러그인을 만들려면 Orchestrator에서 플러그인된 기술의 개체에 액세스하고 상호 작용하는 방법을 정의합니다. 또한 vso.xml 파일에서 플러그인된 기술의 모든 개체 및 함수를Orchestrator 개체 및 함수에 매핑합니다.

vso.xml 파일은 모든 유형의 개체에 대한 참조 또는 Orchestrator에 노출할 작업을 포함해야 합니다. 플러그인된 기술에서 플러그인이 찾는 모든 개체에는 사용자가 제공한 고유 식별자가 있어야 합니다.vso.xml 파일에서 finder 요소와 개체 요소에 개체 이름을 정의합니다.

플러그인을 표준 Java 보관 파일(JAR) 또는 ZIP 파일로 제공할 수 있지만 어느 경우든 파일 이름을 .dar 확장명으로 변경해야 합니다.

참고 Orchestrator 제어 센터를 사용하여 DAR 파일을 Orchestrator 서버로 가져올 수 있습니다.

n vso.xml 파일에서 애플리케이션 매핑 정의(51 페이지)

vso.xml 파일에 포함한 개체는 Orchestrator 스크립팅 API에 스크립팅 개체로 표시되거나Orchestrator 인벤토리 탭에 찾기 개체로 표시됩니다.

VMware vRealize Orchestrator를 사용한 개발

50 VMware, Inc.

Page 51: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n vso.xml 플러그인 정의 파일의 형식(51 페이지)

vso.xml 파일은 Orchestrator 서버가 플러그인된 기술과 상호 작용하는 방식을 정의합니다. 모든유형의 개체에 대한 참조 또는 Orchestrator에 노출할 작업을 vso.xml 파일에 포함해야 합니다.

n 플러그인 개체 이름 지정(52 페이지)

플러그인된 기술에서 플러그인이 찾는 모든 개체에는 고유한 식별자를 제공해야 합니다. 개체 이름은 vso.xml파일의 <finder> 요소와 <object> 요소에 정의합니다.

n 플러그인 개체 명명 규칙(53 페이지)

플러그인의 모든 개체에 대한 이름을 지정할 때 Java 클래스 명명 규칙을 따라야 합니다.

n 플러그인의 파일 구조(53 페이지)

플러그인은 표준 파일 구조를 준수해야 하며 특정 폴더 및 파일을 포함해야 합니다. 플러그인은 표준 Java 아카이브(JAR) 또는 ZIP 파일로 제공하며 .dar 확장명으로 이름을 바꿔야 합니다.

vso.xml 파일에서 애플리케이션 매핑 정의

vso.xml 파일에 포함한 개체는 Orchestrator 스크립팅 API에 스크립팅 개체로 표시되거나Orchestrator 인벤토리 탭에 찾기 개체로 표시됩니다.

vso.xml 파일은 Orchestrator 서버에 다음 정보를 제공합니다.

n 플러그인의 버전, 이름 및 설명

n 플러그인된 기술의 클래스 및 연결된 플러그인 어댑터에 대한 참조

n Orchestrator 서버가 시작되면 플러그인 초기화

n 플러그인된 기술의 개체 유형을 나타내는 스크립팅 유형

n Orchestrator 인벤토리에 개체가 표시되는 방식을 정의하는 개체 유형 간의 관계

n 플러그인된 기술의 개체 및 작업을 Orchestrator JavaScript API의 함수 및 개체 유형에 매핑하는 스크립팅 클래스

n 특정 유형의 모든 개체에 적용되는 상수 값 목록을 정의하는 열거형

n Orchestrator가 플러그인된 기술에서 모니터링하는 이벤트

vso.xml 파일은 Orchestrator 플러그인의 XML 스키마 정의를 준수해야 합니다. VMware 지원 사이트에서 스키마 정의에 액세스할 수 있습니다.

http://www.vmware.com/support/orchestrator/plugin-4-1.xsd

vso.xml 파일의 모든 요소에 대한 설명은 “vso.xml 플러그인 정의 파일의 요소,”(63 페이지) 항목을참조하십시오.

vso.xml 플러그인 정의 파일의 형식

vso.xml 파일은 Orchestrator 서버가 플러그인된 기술과 상호 작용하는 방식을 정의합니다. 모든 유형의개체에 대한 참조 또는 Orchestrator에 노출할 작업을 vso.xml 파일에 포함해야 합니다.

vso.xml 파일에 포함한 개체는 Orchestrator 스크립팅 API에 스크립팅 개체로 표시되거나Orchestrator 인벤토리 탭에 찾기 개체로 표시됩니다.

플러그인의 표준화된 구현 및 개방형 아키텍처의 일부인 vso.xml 파일은 표준 형식을 준수해야 합니다.

다음 다이어그램에서는 요소가 서로 중첩되는 방식 및 vso.xml 플러그인 정의 파일의 형식을 보여 줍니다.

1장 워크플로 개발

VMware, Inc. 51

Page 52: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

그림 1‑4. vso.xml 플러그인 정의 파일의 형식

플러그인 개체 이름 지정

플러그인된 기술에서 플러그인이 찾는 모든 개체에는 고유한 식별자를 제공해야 합니다. 개체 이름은vso.xml파일의 <finder> 요소와 <object> 요소에 정의합니다.

팩토리 구현에서 정의한 찾기 작업은 플러그인된 기술에서 개체를 찾습니다. 플러그인이 개체를 찾으면Orchestrator 워크플로에서 이를 사용하여 한 워크플로 요소에서 다른 요소로 전달할 수 있습니다. 개체에 제공한 고유 식별자를 사용해 워크플로에서 요소 간에 전달할 수 있습니다.

Orchestrator 서버는 처리하는 각 개체의 유형과 식별자만 저장하며 Orchestrator가 개체를 가져온위치나 방법에 대한 정보는 저장하지 않습니다. 플러그인에서 가져온 개체를 추적할 수 있도록 플러그인구현에서 개체 이름을 일관되게 지정해야 합니다.

워크플로 실행 중 Orchestrator 서버가 중지된 경우 서버를 다시 시작하면 서버가 중지되었을 때 실행중이었던 워크플로 요소에서 워크플로가 재개됩니다. 워크플로는 서버가 중지되었을 때 요소가 처리 중이었던 개체를 검색하기 위해 식별자를 사용합니다.

VMware vRealize Orchestrator를 사용한 개발

52 VMware, Inc.

Page 53: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

플러그인 개체 명명 규칙

플러그인의 모든 개체에 대한 이름을 지정할 때 Java 클래스 명명 규칙을 따라야 합니다.

중요 워크플로 엔진이 데이터 직렬화를 수행하는 방식으로 인해 개체 이름에 다음 문자열 시퀀스를 사용해서는 안 됩니다. 개체 식별자에 이러한 문자 시퀀스를 사용하면 워크플로 엔진이 워크플로 구문을 잘못분석하여 워크플로를 실행할 때 예기치 않은 동작이 발생할 수 있습니다.

n #;#

n #,#

n #=#

플러그인의 개체 이름을 지정할 때 다음 지침을 사용하십시오.

n 이름의 각 단어에 대한 첫 글자에는 대문자를 사용합니다.

n 공백을 사용하여 단어를 구분하지 마십시오.

n 문자의 경우 표준 문자 A~Z 및 a~z만 사용합니다.

n 악센트와 같은 특수 문자를 사용하지 마십시오.

n 이름의 첫 글자로 숫자를 사용하지 마십시오.

n 가급적 10자 미만을 사용합니다.

표 1‑5에는 개별 개체 유형에 적용되는 규칙이 나와 있습니다.

표 1‑5. 플러그인 개체 명명 규칙

개체 유형 명명 규칙

플러그인 n vso.xml 파일의 <module> 요소에 정의됩니다.n Java 클래스 명명 규칙을 준수해야 합니다.n 고유해야 합니다. 하나의 Orchestrator 서버에서 이름이 같은 플러그인 두 개를 실행할 수 없습니다.

찾기 개체 n vso.xml 파일의 <finder> 요소에 정의됩니다.n Java 클래스 명명 규칙을 준수해야 합니다.n 플러그인에서 고유해야 합니다.

Orchestrator는 Orchestrator 스크립팅 API의 찾기 개체 유형에 사용되는 찾기 개체 이름에 플러그인 이름과 콜론을 추가합니다. 예를 들어 vCenter Server 플러그인의VirtualMachine 개체 유형은 Orchestrator 스크립팅 API에 VC:VirtualMachine으로 표시됩니다.

스크립팅 개체 n vso.xml 파일의 <scripting-object> 요소에 정의됩니다.n Java 클래스 명명 규칙을 준수해야 합니다.n Orchestrator 서버에서 고유해야 합니다.n 스크립팅 개체가 같은 이름의 찾기 개체 또는 다른 플러그인의 스크립팅 개체와 혼동되는 것을 방지하기 위해 항상 플러그인 이름을 스크립팅 개체 이름의 접두사로 사용합니다(이때 콜론은 추가하지 않음). 예를 들어 vCenter Server 플러그인의VirtualMachine 클래스는 Orchestrator 스크립팅 API에 VcVirtualMachine 클래스로표시됩니다.

플러그인의 파일 구조

플러그인은 표준 파일 구조를 준수해야 하며 특정 폴더 및 파일을 포함해야 합니다. 플러그인은 표준Java 아카이브(JAR) 또는 ZIP 파일로 제공하며 .dar 확장명으로 이름을 바꿔야 합니다.

DAR 아카이브의 내용은 다음 폴더 구조 및 이름 지정 규칙을 사용해야 합니다.

1장 워크플로 개발

VMware, Inc. 53

Page 54: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑6. DAR 아카이브의 구조

폴더 설명

플러그인_이름\VSO-INF\ 플러그인된 기술의 개체를 Orchestrator 개체로 매핑하는 내용을 정의하는 vso.xml 파일을 포함합니다.

VSO-INF 폴더와 vso.xml 파일은 필수 항목입니다.

플러그인_이름\lib\ 플러그인된 기술의 바이너리를 포함하는 JAR 파일을 포함하고 있습니다. 또한 플러그인의 어댑터, 팩토리, 알림처리기 및 기타 인터페이스 구현을 포함한 JAR 파일도포함하고 있습니다.

lib 폴더와 JAR 파일은 필수 항목입니다.

플러그인_이름\resources\ 플러그인에 필요한 리소스 파일을 포함하고 있습니다.resources 폴더는 다음 요소 유형을 포함할 수 있습니다.n 플러그인의 개체를 Orchestrator 인벤토리 탭에 표시하는 이미지 파일입니다.

n 플러그인을 시작할 때 초기화 동작을 정의하는 스크립트입니다.

n 플러그인을 사용해 액세스하는 개체와 상호 작용하는사용자 지정 워크플로, 작업 및 기타 리소스를 포함할수 있는 Orchestrator 패키지입니다.

리소스를 하위 폴더에 구성할 수 있습니다. 예를 들어resources\images\, resources\scripts\ 또는resources\packages\와 같이 합니다.

resources 폴더는 선택 사항입니다.

Orchestrator 제어 센터를 사용하여 DAR 파일을 Orchestrator 서버로 가져옵니다.

Orchestrator 플러그인 API 참조

Orchestrator 플러그인 API는 플러그인을 생성할 IPluginAdaptor 및 IPluginFactory 구현을 개발할 때 구현 및 확장할 Java 인터페이스와 클래스를 정의합니다.

모든 클래스는 달리 명시되지 않는 한 ch.dunes.vso.sdk.api 패키지에 포함되어 있습니다.

IAop 인터페이스

IAop 인터페이스는 플러그인된 기술의 개체를 가져오고 속성을 설정하는 메서드를 제공합니다.

public interface IAop

IAop 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

get(java.lang.String propertyName,java.lang.Object object,java.lang.Object sdkObject)

java.lang.Object 플러그인의 지정된 개체에서 속성을가져옵니다.

set(java.lang.String propertyName,java.lang.String propertyValue,java.lang.Object object)

Void 플러그인의 지정된 개체에 대한 속성을 설정합니다.

IDynamicFinder 인터페이스

IDynamicFinder 인터페이스는 vso.xml 파일의 ID와 속성을 정의하는 대신 찾기의 ID와 속성을 프로그래밍방식으로 반환합니다.

IDynamicFinder 인터페이스는 다음 메서드를 정의합니다.

VMware vRealize Orchestrator를 사용한 개발

54 VMware, Inc.

Page 55: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 반환 설명

getIdAccessor(java.lang.Stringtype)

java.lang.String 개체 ID를 프로그래밍 방식으로 가져오기 위한 OGNL 표현식을 제공합니다.

getProperties(java.lang.Stringtype)

java.util.List<SDKFinderProperty> 개체 속성 목록을 프로그래밍 방식으로 제공합니다.

IPluginAdaptor 인터페이스

플러그인 팩토리, 이벤트 및 감시자를 관리하기 위해 IPluginAdaptor 인터페이스를 구현합니다.IPluginAdaptor 인터페이스는 플러그인과 Orchestrator 서버 간 어댑터를 정의합니다.

IPluginAdaptor 인스턴스는 세션 관리를 담당합니다. IPluginAdaptor 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

addWatcher(PluginWatcher watcher) Void 특정 이벤트를 모니터링할 감시자 추가

createPluginFactory(java.lang.String sessionID, java.lang.Stringusername, java.lang.Stringpassword,IPluginNotificationHandlernotificationHandler)

IPluginFactory IPluginFactory 인스턴스를 생성합니다. Orchestrator 서버는 ID, 다른개체와의 관계 등을 기준으로 플러그인된 기술에서 개체를 가져오기 위해팩토리를 사용합니다.

세션 ID를 사용하면 실행 중인 세션을식별할 수 있습니다. 예를 들어 사용자가 두 개의 서로 다른Orchestrator 클라이언트에 로그인해 동시에 두 개의 세션을 실행할 수있습니다.

마찬가지로 워크플로를 시작하면 워크플로가 시작된 클라이언트와 독립적인세션이 생성됩니다. 워크플로는Orchestrator 클라이언트를 종료해도 계속 실행됩니다.

installLicenses(PluginLicense[]licenses)

Void VMware가 제공하는 표준 플러그인의 라이센스 정보 설치

registerEventPublisher(java.lang.String type, java.lang.String id,IPluginEventPublisher publisher)

Void 인벤토리의 요소에 트리거와 게이지설정

removeWatcher(java.lang.StringwatcherId)

Void 감시자 제거

setPluginName(java.lang.StringpluginName)

Void vso.xml 파일에서 플러그인 이름을 가져옴

setPluginPublisher(IPluginPublisher pluginPublisher)

Void 플러그인의 게시자 설정

uninstallPluginFactory(IPluginFactory plugin)

Void 플러그인 팩토리 제거

unregisterEventPublisher(java.lang.String type, java.lang.String id,IPluginEventPublisher publisher)

Void 인벤토리의 요소에서 트리거와 게이지제거

1장 워크플로 개발

VMware, Inc. 55

Page 56: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

IPluginEventPublisher 인터페이스

IPluginEventPublisher 인터페이스는 Orchestrator 정책이 모니터링할 이벤트 알림 버스에서 게이지와 트리거를 게시합니다.

플러그인 어댑터 구현에서 직접 IPluginEventPublisher 인스턴스를 생성하거나 별도 이벤트 생성기 클래스에서 생성할 수 있습니다.

IPluginEventPublisher 인터페이스를 구현하여 플러그인된 기술의 이벤트를 Orchestrator 정책 엔진에 게시할 수 있습니다. 플러그인된 기술의 개체에 대한 정책 트리거 및 게이지를 설정하는 메서드와 이러한 개체에서 이벤트를 수신하는 이벤트 수신기를 만들 수 있습니다.

정책은 플러그인된 기술의 개체를 모니터링할 게이지 또는 트리거를 구현할 수 있습니다. 정책 게이지는개체의 특성을 모니터링하여 개체 값이 특정 제한을 초과하는 경우 Orchestrator 서버에 이벤트를 푸시합니다. 정책 트리거는 개체를 모니터링하여 해당 개체에서 정의된 이벤트가 발생한 경우 Orchestrator서버에 이벤트를 푸시합니다. Orchestrator 정책에서 모니터링할 수 있도록 정책 게이지 및 트리거를IPluginEventPublisher 인스턴스에 등록합니다.

IPluginEventPublisher 인터페이스는 다음 메서드를 정의합니다.

유형 반환 설명

pushGauge(java.lang.String type,java.lang.String id,java.lang.String gaugeName,java.lang.String deviceName,java.lang.Double gaugeValue)

Void 모니터링할 정책의 게이지를 게시합니다. 다음 매개 변수를 사용합니다.n type: 모니터링할 개체의 유형.n id: 모니터링할 개체의 식별자.n gaugeName: 이 게이지의 이름.n deviceName: 게이지가 모니터하는특성의 유형에 대한 이름.

n gaugeValue: 게이지가 개체를 모니터하는 값.

pushTrigger(java.lang.String type,java.lang.String id,java.lang.String triggerName,java.util.PropertiesadditionalProperties)

Void 모니터링할 정책의 트리거를 게시합니다. 다음 매개 변수를 사용합니다.n type: 모니터링할 개체의 유형.n id: 모니터링할 개체의 식별자.n triggerName: 이 트리거의 이름.n additionalProperties: 모니터링할 트리거의 추가 속성.

IPluginFactory 인터페이스

IPluginAdaptor는 IPluginFactory 인스턴스를 반환합니다. IPluginFactory 인스턴스는 플러그인된 애플리케이션에서 명령을 실행하고 Orchestrator 작업을 수행할 개체를 찾습니다.

IPluginFactory 인터페이스는 다음 필드를 정의합니다.

static final java.lang.String RELATION_CHILDREN

IPluginFactory 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

executePluginCommand(java.lang.String cmd)

Void 명령을 실행하려면 이 플러그인을 사용합니다. 이 메서드를 사용하지 않는것이 좋습니다.

find(java.lang.String type,java.lang.String id)

java.lang.Object 개체를 찾으려면 이 플러그인을 사용합니다. ID와 유형으로 개체를 식별합니다.

VMware vRealize Orchestrator를 사용한 개발

56 VMware, Inc.

Page 57: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 반환 설명

findAll(java.lang.String type,java.lang.String query)

QueryResult 특정 유형이며 쿼리 문자열과 일치하는 개체를 찾으려면 이 플러그인을 사용합니다. 이 플러그인의IPluginFactory 구현에서 쿼리의 구문을 정의합니다. 쿼리 구문을 정의하지않으면 findAll()는 지정된 유형의 모든 개체를 반환합니다.

findRelation(java.lang.StringparentType, java.lang.StringparentId, java.lang.StringrelationName)

java.util.List 개체에 하위 항목이 있는지 확인합니다.

hasChildrenInRelation(java.lang.String parentType, java.lang.StringparentId, java.lang.StringrelationName)

HasChildrenResult 특정 관계를 기준으로 주어진 상위 항목과 관련된 모든 하위 항목을 찾습니다.

invalidate(java.lang.String type,java.lang.String id)

Void 유형과 ID로 개체를 무효화합니다.

void invalidateAll() Void 캐시의 모든 개체를 무효화합니다.

IPluginNotificationHandler 인터페이스

IPluginNotificationHandler는 Orchestrator가 플러그인을 통해 액세스하는 개체에서 발생하는 다양한 이벤트 종류에 대해 Orchestrator에 알리는 메서드를 정의합니다.

IPluginNotificationHandler 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

getSessionID() java.lang.String 현재 세션 ID를 반환

notifyElementDeleted(java.lang.String type, java.lang.String id)

Void 주어진 유형과 ID를 가진 개체가 삭제되었음을 시스템에 알림

notifyElementInvalidate(java.lang.String type, java.lang.String id)

Void 개체의 관계가 변경되었음을 시스템에알림. notifyElementInvalidate() 메서드를 사용해 개체를 무효화하는 관계 변경뿐만 아니라 개체 간의 모든관계 변경을 Orchestrator에 알릴수 있습니다. 예를 들어 상위 개체에하위 개체를 추가하면 두 개체 간 관계가 변경됩니다.

notifyElementUpdated(java.lang.String type, java.lang.String id)

Void 시스템에 개체 특성이 수정되었음을알림

notifyMessage(ch.dunes.vso.sdk.api.ErrorLevel severity,java.lang.String type,java.lang.String id,java.lang.String message)

Void 현재 모듈과 관련된 오류 메시지 게시

IPluginPublisher 인터페이스

IPluginPublisher 인터페이스는 모니터링할 장기 실행 워크플로 이벤트 대기 요소에 대한 이벤트 알림 버스의 감시자 이벤트를 게시합니다.

워크플로 트리거가 플러그인된 기술의 이벤트를 시작하면 해당 트리거를 감시하고 IPluginPublisher 인스턴스에 등록된 플러그인 감시자는 대기 중인 모든 워크플로에 이벤트가 발생했음을 알립니다.

IPluginPublisher 인터페이스는 다음 메서드를 정의합니다.

1장 워크플로 개발

VMware, Inc. 57

Page 58: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Type 값 설명

pushWatcherEvent(java.lang.Stringid, java.util.Propertiesproperties)

Void 이벤트 알림 버스의 감시자 이벤트 게시

WebConfigurationAdaptor 인터페이스

WebConfigurationAdaptor 인터페이스는 IConfigurationAdaptor를 구현하고 플러그인의 구성 탭에서 웹 애플리케이션을 찾아서 설치할 메서드를 정의합니다.

참고 WebConfigurationAdaptor 인터페이스는 Orchestrator 4.1부터 사용되지 않습니다. 웹 애플리케이션을 구성에 추가하려면 IConfigurationAdaptor를 구현하고 vso.xml 파일에서 configuration-war 특성을 사용하여 웹 애플리케이션을 식별합니다.

WebConfigurationAdaptor 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

getWebAppContext() 문자열 구성 탭에 대한 웹 애플리케이션의WAR 파일을 찾습니다. DAR 파일에서 /webapps 디렉토리의 WAR 파일에대한 이름 및 경로를 문자열로 제공합니다.

setWebConfiguration(booleanwebConfiguration)

부울 구성 탭의 컨텐츠가 웹 애플리케이션에 의해 정의되는지 여부를 결정합니다.

PluginTrigger 클래스

PluginTrigger 클래스는 워크플로의 대기 이벤트 요소를 대신해 플러그인된 기술에서 모니터링할 개체와이벤트에 대한 정보를 가져오는 트리거 모듈을 생성합니다.

PluginTrigger 클래스는 모니터링할 개체의 유형 및 이름, 이벤트의 속성 및 시간 초과 기간을 가져오거나설정하는 메서드를 정의합니다.

워크플로의 대기 이벤트 요소에서 배타적으로 사용할 PluginTrigger 클래스의 구현을 만들 수 있습니다. 이벤트를 정의하고 IPluginEventPublisher.pushTrigger() 메서드를 구현하는 클래스에서 Orchestrator 정책에 대한 정책 트리거를 정의합니다.

public class PluginTrigger

extends java.lang.Object

implements java.io.Serializable

PluginTrigger 클래스는 다음 메서드를 정의합니다.

메서드 반환 설명

getModuleName() java.lang.String 트리거 모듈의 이름을 가져옵니다.

getProperties() java.util.Properties 트리거의 속성 목록을 가져옵니다.

getSdkId() java.lang.String 플러그인된 기술에서 모니터링할 개체의 ID를 가져옵니다.

getSdkType() java.lang.String 플러그인된 기술에서 모니터링할 개체의 유형을 가져옵니다.

getTimeout() Long 트리거 시간 초과 기간을 가져옵니다.

setModuleName(java.lang.StringmoduleName)

Void 트리거 모듈의 이름을 설정합니다.

VMware vRealize Orchestrator를 사용한 개발

58 VMware, Inc.

Page 59: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 반환 설명

setProperties(java.util.Propertiesproperties)

Void 트리거의 속성 목록을 설정합니다.

setSdkId(java.lang.String sdkId) Void 플러그인된 기술에서 모니터링할 개체의 ID를 설정합니다.

setSdkType(java.lang.StringsdkType)

Void 플러그인된 기술에서 모니터링할 개체의 유형을 설정합니다.

setTimeout(long timeout) Void 시간 초과 기간을 초 단위로 설정합니다. 음수 값은 시간 초과를 비활성화합니다.

생성자

n PluginTrigger()

n PluginTrigger(java.lang.String moduleName, long timeout, java.lang.String sdkType, java.lang.String

sdkId)

PluginWatcher 클래스

PluginWatcher 클래스는 장기 실행 워크플로 대기 이벤트 요소를 대신해 플러그인된 기술의 정의된 이벤트에 대해 트리거 모듈을 감시합니다.

PluginWatcher 클래스는 플러그인 감시자 인스턴스를 만드는 데 사용할 수 있는 생성자를 정의합니다.PluginWatcher 클래스는 감시할 워크플로 트리거의 이름 및 시간 초과 기간을 가져오거나 설정하는 메서드를 정의합니다.

public class PluginWatcher

extends java.lang.Object

implements java.io.Serializable

PluginWatcher 클래스는 다음 메서드를 정의합니다.

메서드 반환 설명

getId() java.lang.String 트리거의 ID를 가져옵니다

getModuleName() java.lang.String 트리거 모듈의 이름을 가져옵니다

getTimeoutDate() Long 트리거 시간 초과 날짜를 가져옵니다

getTrigger() Void 트리거를 가져옵니다

setId(java.lang.String id) Void 트리거의 ID를 설정합니다

setTimeoutDate() Void 트리거 시간 초과 날짜를 설정합니다

생성자

PluginWatcher(PluginTrigger trigger)

QueryResult 클래스

QueryResult 클래스는 Orchestrator가 플러그인을 통해 액세스한 개체에서 만든 find 쿼리의 결과를 포함하고 있습니다.

public class QueryResult

extends java.lang.Object

implements java.io.Serializable

1장 워크플로 개발

VMware, Inc. 59

Page 60: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

검색된 결과의 총 개수가 쿼리가 반환하는 결과의 개수를 초과하는 경우 totalCount 값은 QueryResult가 반환하는 요소의 개수보다 클 수 있습니다. 쿼리가 반환하는 결과의 개수는 vso.xml 파일의 쿼리 구문에 정의되어 있습니다.

QueryResult 클래스는 다음 메서드를 정의합니다.

메서드 반환 설명

addElement(java.lang.Objectelement)

Void QueryResult에 요소를 추가합니다

addElements(java.util.Listelements)

Void QueryResult에 요소의 목록을 추가합니다

getElements() java.util.List 플러그인된 애플리케이션에서 요소를가져옵니다

getTotalCount() Long 플러그인된 기술에서 사용 가능한 모든 요소의 개수를 가져옵니다

isPartialResult() 부울 가져온 결과가 완전한지 확인합니다

removeElement(java.lang.Objectelement)

Void 플러그인된 기술에서 요소를 제거합니다

setElements(java.util.Listelements)

Void 플러그인된 기술에서 요소를 설정합니다

setTotalCount(long totalCount) Void 플러그인된 기술에서 사용 가능한 요소의 총 개수를 설정합니다

생성자

n QueryResult()

n QueryResult(java.util.List ret)

n QueryResult(java.util.List elements, long totalCount)

SDKFinderProperty 클래스

SDKFinderProperty 클래스는 Orchestrator 찾기 개체가 플러그인된 기술에서 찾은 개체의 속성을 가져오고 설정하기 위한 메서드를 정의합니다. IDynanmicFinder.getProperties 메서드는 SDKFinderProperty 개체를반환합니다.

public class SDKFinderProperty

extends java.lang.Object

SDKFinderProperty 클래스는 다음 메서드를 정의합니다.

메서드 반환 설명

getAttributeName() java.lang.String 개체 특성 이름을 가져옵니다

getBeanProperty() java.lang.String Java bean 속성을 가져옵니다

getDescription() java.lang.String 개체 설명을 가져옵니다

getDisplayName() java.lang.String 개체 표시 이름을 가져옵니다

getPossibleResultType() java.lang.String 찾기가 반환하는 결과로 가능한 유형을 가져옵니다

getPropertyAccessor() java.lang.String 개체 속성 접근자를 가져옵니다

getPropertyAccessorTree() java.lang.Object 개체 속성 접근자 트리를 가져옵니다

isHidden() 부울 개체를 표시하거나 숨깁니다

VMware vRealize Orchestrator를 사용한 개발

60 VMware, Inc.

Page 61: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 반환 설명

isShowInColumn() 부울 데이터베이스 열에서 개체를 표시하거나 숨깁니다

isShowInDescription() 부울 개체 설명을 표시하거나 숨깁니다

setAttributeName(java.lang.StringattributeName)

Void 개체 특성 이름을 설정합니다

setBeanProperty(java.lang.StringbeanProperty)

Void Java bean에서 속성을 설정합니다

setDescription(java.lang.Stringdescription)

Void 개체 설명을 설정합니다

setDisplayName(java.lang.StringdisplayName)

Void 개체 표시 이름을 설정합니다

setHidden(boolean hidden) Void 개체를 표시하거나 숨깁니다

setPossibleResultType(java.lang.String possibleResultType)

Void 찾기가 반환하는 결과로 가능한 유형을 설정합니다

setPropertyAccessor(java.lang.String propertyAccessor)

Void 개체 속성 접근자를 설정합니다

setPropertyAccessorTree(java.lang.Object propertyAccessorTree)

Void 개체 속성 접근자 트리를 설정합니다

setShowInColumn(booleanshowInTable)

Void 데이터베이스 열에서 개체를 표시하거나 숨깁니다

setShowInDescription(booleanshowInDescription)

Void 개체 설명을 표시하거나 숨깁니다

생성자

SDKFinderProperty(java.lang.String attributeName, java.lang.String displayName, java.lang.String

beanProperty, java.lang.String propertyAccessor)

PluginExecutionException 클래스

PluginExecutionException 클래스는 플러그인이 작업을 실행할 때 예외가 발생하면 오류 메시지를 반환합니다.

public class PluginExecutionException

extends java.lang.Exception

implements java.io.Serializable

PluginExecutionException 클래스는 다음 메서드를 class java.lang.Throwable에서 상속합니다.

fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace,printStackTrace, printStackTrace, setStackTrace, toStringfillInStackTrace, getCause, getLocalizedMessage,getMessage, getStackTrace, initCause, printStackTrace

생성자

PluginExecutionException(java.lang.String message)

PluginOperationException 클래스

PluginOperationException 클래스는 플러그인 작업 중 발생한 오류를 처리합니다.

public class PluginOperationException

extends java.lang.RuntimeException

implements java.io.Serializable

1장 워크플로 개발

VMware, Inc. 61

Page 62: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

PluginOperationException 클래스는 다음 메서드를 class java.lang.Throwable에서 상속합니다.

fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace,printStackTrace, printStackTrace, setStackTrace, toString

생성자

PluginOperationException(java.lang.String message)

HasChildrenResult 열거형

HasChildrenResult 열거형은 지정된 상위 항목에 하위 항목이 있는지 여부를 선언합니다.IPluginFactory.hasChildrenInRelation 메서드는 HasChildrenResult 개체를 반환합니다.

public enum HasChildrenResult

extends java.lang.Enum<HasChildrenResult>

implements java.io.Serializable

HasChildrenResult 열거형은 다음 상수를 정의합니다.

n public static final HasChildrenResult Yes

n public static final HasChildrenResult No

n public static final HasChildrenResult Unknown

HasChildrenResult 열거형은 다음 메서드를 정의합니다.

메서드 반환 설명

getValue() int 다음 값 중 하나를 반환합니다.

1 상위 항목에 하위 항목있음

-1 상위 항목에 하위 항목없음

0 알 수 없거나 잘못된 매개 변수

valueOf(java.lang.String name) static HasChildrenResult 지정된 이름을 가진 이 유형의 열거형상수를 반환합니다. 이 유형의 열거형상수를 선언하는 데 사용된 식별자와문자열이 정확히 일치해야 합니다. 공백 문자는 열거형 이름에 사용할 수없습니다.

values() static HasChildrenResult[] 이 열거형 유형의 상수가 포함된 어레이를 선언된 순서대로 반환됩니다. 이메서드는 다음과 같이 상수에서 반복될 수 있습니다.

for (HasChildrenResult c :HasChildrenResult.values()) System.out.println(c);

HasChildrenResult 열거형은 class java.lang.Enum에서 다음 메서드를 상속합니다.

clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf

VMware vRealize Orchestrator를 사용한 개발

62 VMware, Inc.

Page 63: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

ScriptingAttribute 주석 유형

ScriptingAttribute 주석 유형은 플러그인된 기술에서 스크립팅의 속성으로 사용할 개체의 특성을 주석으로답니다.

@Retention(value=RUNTIME)

@Target(value={METHOD,FIELD})

public @interface ScriptingAttribute

ScriptingAttribute 주석 유형은 다음 값을 가집니다.

public abstract java.lang.String value

ScriptingFunction 주석 유형

ScriptingFunction 주석 유형은 스크립팅에서 속성으로 사용할 메서드를 주석으로 답니다.

@Retention(value=RUNTIME)

@Target(value={METHOD,CONSTRUCTOR})

public @interface ScriptingFunction

ScriptingFunction 주석 유형은 다음 값을 가집니다.

public abstract java.lang.String value

ScriptingParameter 주석 유형

ScriptingParameter 주석 유형은 스크립팅에서 속성으로 사용할 매개 변수를 주석으로 답니다.

@Retention(value=RUNTIME)

@Target(value=PARAMETER)

public @interface ScriptingParameter

ScriptingParameter 주석 유형은 다음 값을 가집니다.

public abstract java.lang.String value

vso.xml 플러그인 정의 파일의 요소

vso.xml 파일에는 표준 요소 집합이 포함되어 있습니다. 여기에는 필수 요소와 선택적 요소가 있습니다.각 요소에는 Orchestrator 개체 및 작업에 매핑되는 값을 정의하는 특성이 있습니다.

또한 요소에는 하위 요소가 없을 수도 있고 여러 개가 있을 수도 있습니다. 하위 요소는 상위 요소를 추가로 정의합니다. 동일한 하위 요소가 여러 상위 요소에 표시될 수 있습니다. 예를 들어 description 요소는하위 요소가 없지만 module, example, trigger, gauge, finder, constructor, method, object, enumeration 등의여러 상위 요소에 대한 하위 요소로 표시됩니다.

다음 각 요소 정의는 해당 특성, 상위 요소 및 하위 요소를 나열합니다.

모듈 요소

모듈은 Orchestrator에서 사용할 수 있도록 플러그인 개체 집합을 설명합니다.

모듈은 플러그인된 기술의 데이터가 Java 클래스에 매핑되는 방법, 버전 관리, 모듈을 배포하는 방법 그리고 플러그인이 Orchestrator 인벤토리에 표시되는 방법에 대한 정보를 포함하고 있습니다.

<module> 요소는 선택 사항입니다. <module> 요소에는 다음과 같은 특성이 있습니다.

1장 워크플로 개발

VMware, Inc. 63

Page 64: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

특성 값 설명

name 문자열 플러그인에 있는 모든 <finder> 요소의 유형을 정의합니다. 필수 특성입니다.

version 숫자 플러그인 버전 번호로 새 플러그인 버전에서 패키지를 다시 로드할 때 사용합니다. 필수 특성입니다.

build-number 숫자 플러그인 빌드 번호로 새 플러그인 버전에서 패키지를 다시 로드할 때 사용합니다. 필수 특성입니다.

image 이미지 파일 Orchestrator 인벤토리에 표시할 아이콘입니다. 필수 특성입니다.

display-name 문자열 Orchestrator 인벤토리에 나타나는이름입니다. 선택적 특성입니다.

interface-mapping-allowed true 또는 false 인터페이스 매핑을 사용하면 안 됩니다. 선택적 특성입니다.

표 1‑7. 요소 계층

상위 요소 하위 요소

없음 n <description>

n <installation>

n <configuration>

n <finder-datasources>

n <inventory>

n <finders>

n <scripting-objects>

n <enumerations>

description 요소

<description> 요소는 API 탐색기 설명서에 표시되는 플러그인 요소에 대한 설명을 제공합니다.

API 탐색기 설명서에서 <description> 태그와 </description> 태그 사이에 표시되는 텍스트를 추가합니다.

<description> 요소는 선택 사항입니다. <description> 요소에는 특성이 없습니다.

표 1‑8. 요소 계층

상위 요소 하위 요소

n <module>

n <example>

n <trigger>

n <gauge>

n <finder>

n <constructor>

n <method>

n <object>

n <enumeration>

없음

VMware vRealize Orchestrator를 사용한 개발

64 VMware, Inc.

Page 65: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

deprecated 요소

<deprecated> 요소는 API 탐색기 설명서에서 사용되지 않는 개체 및 메서드를 표시합니다.

API 탐색기 설명서에서 <deprecated> 태그와 </deprecated> 태그 사이에 표시되는 텍스트를 추가합니다.

<deprecated> 요소는 선택 사항입니다. <deprecated> 요소에는 특성이 없습니다.

표 1‑9. 요소 계층

상위 요소 하위 요소

n <method>

n <object>

없음

url 요소

<url> 요소는 개체 또는 열거형에 대한 외부 문서를 가리키는 URL을 제공합니다.

사용자가 <url> 및 </url> 태그 사이에 URL을 제공합니다.

<url> 요소는 선택 사항입니다. <url> 요소에는 특성이 없습니다.

표 1‑10. 요소 계층

상위 요소 하위 요소

n <enumeration>

n <object>

없음

설치 요소

<installation> 요소를 사용하면 패키지를 설치하거나 서버가 시작될 때 스크립트를 실행할 수 있습니다.

<installation> 요소는 선택 사항입니다. <installation> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

mode always, never 또는 version Orchestrator 서버가 시작될 때 다음 동작의 mode 값 결과를 설정합니다.n 작업 always 실행n 작업 never 실행n 서버가 새 플러그인 버전을 감지했을 때 작업 실행

필수 특성입니다.

표 1‑11. 요소 계층

상위 요소 하위 요소

<module> <action>

action 요소

<action> 요소는 Orchestrator 서버가 시작될 때 실행되는 작업을 지정합니다.

<action> 요소 특성은 플러그인의 시작 시 동작을 정의하는 Orchestrator 패키지 또는 스크립트의 경로를 제공합니다.

<action> 요소는 선택 사항입니다. 플러그인의 <action> 요소 수에는 제한이 없습니다. <action> 요소에는다음과 같은 특성이 있습니다.

1장 워크플로 개발

VMware, Inc. 65

Page 66: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

특성 값 설명

resource 문자열 dar 파일 루트의 Java 패키지 또는스크립트 경로입니다. 필수 특성입니다.

type install-package 또는 execute-script

지정된 Orchestrator 패키지를Orchestrator 서버에 설치하거나 지정된 스크립트를 실행합니다. 필수 특성입니다.

표 1‑12. 요소 계층

상위 요소 하위 요소

<installation> 없음

finder-datasources 요소

<finder-datasources> 요소는 <finder-datasource> 요소의 컨테이너입니다.

<finder-datasources> 요소는 선택 사항입니다. <finder-datasources> 요소에는 특성이 없습니다.

표 1‑13. 요소 계층

상위 요소 하위 요소

<module> <finder-datasource>

finder-datasource 요소

<finder-datasource> 요소는 플러그인에 대해 만든 IPluginAdaptor 구현의 Java 클래스 파일을 가리킵니다.

<finder-datasource> 요소에서 Orchestrator가 플러그인된 기술의 개체에 액세스하는 방법을 설정할 수있습니다. <finder-datasource> 요소는 사용자가 만든 플러그인 어댑터의 Java 클래스를 식별합니다. 플러그인 어댑터 클래스는 사용자가 만든 플러그인 팩토리를 인스턴스화합니다. 플러그인 팩토리는 플러그인된 기술의 개체를 찾는 메서드를 정의합니다. <finder-datasource> 요소에서 팩토리가 수행하는 finder 메서드 호출에 대한 시간 초과를 설정할 수 있습니다. IPluginFactory 인터페이스의 다양한 finder 메서드에서로 다른 시간 초과가 적용됩니다.

<finder-datasource> 요소는 선택 사항입니다. 플러그인의 <finder-datasources> 요소 수에는 제한이 없습니다. <finder-datasource> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

name 문자열 <finder> 요소 datasource 특성에서데이터 소스를 식별합니다. XML id에 해당합니다. 필수 특성입니다.

adaptor-class Java 클래스 플러그인 어댑터를 만들기 위해 정의한 IPluginAdaptor 구현(예:com.vmware.plugins.sample.Adaptor)을 가리킵니다. 필수 특성입니다.

concurrent-call true(기본값) 또는 false 여러 사용자가 동시에 어댑터에 액세스하도록 허용합니다. 플러그인이 동시 호출을 지원하지 않으면concurrent-call을 false로 설정해야합니다. 선택적 특성입니다.

VMware vRealize Orchestrator를 사용한 개발

66 VMware, Inc.

Page 67: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

특성 값 설명

invoker-mode direct(기본값) 또는 timeout finder 함수에 대한 시간 초과를 설정합니다. direct로 설정하면 finder 함수 호출이 시간 초과되지 않습니다.timeout으로 설정하면 Orchestrator서버에서 finder 메서드에 해당하는시간 초과 기간을 적용합니다. 선택적특성입니다.

anonymous-login-mode never(기본값) 또는 always 사용자의 사용자 이름 및 암호를 플러그인으로 전달하거나 전달하지 않습니다. 선택적 특성입니다.

timeout-fetch-relation 숫자(기본값: 30초) findRelation()에서의 호출에 적용됩니다. 선택적 특성입니다.

timeout-find-all 숫자(기본값: 60초) findAll()에서의 호출에 적용됩니다.선택적 특성입니다.

timeout-find 숫자(기본값: 60초) find()에서의 호출에 적용됩니다. 선택적 특성입니다.

timeout-has-children-in-relation 숫자(기본값: 2초) findChildrenInRelation()에서의 호출에 적용됩니다. 선택적 특성입니다.

timeout-execute-plugin-command 숫자(기본값: 30초) executePluginCommand()에서의 호출에 적용됩니다. 선택적 특성입니다.

표 1‑14. 요소 계층

상위 요소 하위 요소

<finder-datasources> 없음

인벤토리 요소

<inventory> 요소는 Orchestrator 클라이언트 인벤토리 보기 및 개체 선택 대화상자에 나타나는 플러그인의 계층형 목록 중 루트를 정의합니다.

<inventory> 요소는 플러그인 애플리케이션의 개체를 나타내는 것이 아니라 Orchestrator 스크립팅 API의 개체로서 플러그인 자체를 나타냅니다.

<inventory> 요소는 선택 사항입니다. <inventory> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

type Orchestrator 개체 유형 개체의 계층에서 루트를 나타내는<finder> 요소의 유형. 필수 특성입니다.

표 1‑15. 요소 계층

상위 요소 하위 요소

<module> 없음

finders 요소

<finders> 요소는 모든 <finder> 요소의 컨테이너입니다.

<finders> 요소는 선택 사항입니다. <finders> 요소에는 특성이 없습니다.

1장 워크플로 개발

VMware, Inc. 67

Page 68: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑16. 요소 계층

상위 요소 하위 요소

<module> <finder>

finder 요소

<finder> 요소는 Orchestrator 클라이언트에서 플러그인을 통해 찾을 수 있는 개체 유형을 나타냅니다.

<finder> 요소는 개체 찾기가 나타내는 개체를 정의하는 Java 클래스를 식별합니다. <finder> 요소는Orchestrator 클라이언트 인터페이스에 개체가 표시되는 방식을 정의합니다. 또한 Orchestrator 스크립팅 API가 이 개체를 나타내기 위해 정의하는 스크립팅 개체를 식별합니다.

찾기는 여러 유형의 플러그인된 기술에 사용되는 개체 형식 간의 인터페이스 역할을 합니다.

<finder> 요소는 선택 사항입니다. 플러그인의 <finder> 요소 수에는 제한이 없습니다. <finder> 요소는 다음과 같은 특성을 정의합니다.

특성 값 설명

type Orchestrator 개체 유형 찾기가 나타내는 개체 유형입니다. 필수 특성입니다.

datasource <finder-datasource name> 특성 refid 데이터 소스를 사용하여 개체를정의하는 Java 클래스를 식별합니다.필수 특성입니다.

dynamic-finder Java 메서드 vso.xml 파일에서 정의하는 대신IDynamicFinder 인스턴스에서 찾기의ID 및 속성을 프로그래밍 방식으로 반환하도록 구현한 사용자 지정 finder메서드를 정의합니다. 선택적 특성입니다.

hidden true 또는 false(기본값) true인 경우 Orchestrator 클라이언트에서 찾기를 숨깁니다. 선택적 특성입니다.

image 그래픽 파일의 경로 Orchestrator 클라이언트의 계층 목록에서 찾기를 나타내는 16x16 아이콘입니다. 선택적 특성입니다.

java-class Java 클래스의 이름 찾기에서 찾아서 스크립팅 개체에 매핑하는 개체를 정의하는 Java 클래스입니다. 선택적 특성입니다.

script-object <scripting-object type> 특성 이 찾기를 매핑할 <scripting-object>유형입니다(있는 경우). 선택적 특성입니다.

표 1‑17. 요소 계층

상위 요소 하위 요소

<finders> n <id>

n <description>

n <properties>

n <default-sorting>

n <inventory-children>

n <relations>

n <inventory-tabs>

n <events>

VMware vRealize Orchestrator를 사용한 개발

68 VMware, Inc.

Page 69: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

속성 요소

<properties> 요소는 <finder><property> 요소의 컨테이너입니다.

<properties> 요소는 선택 사항입니다. <properties> 요소에는 특성이 없습니다.

표 1‑18. 요소 계층

상위 요소 하위 요소

<finder> <property>

속성 요소

<property> 요소는 발견한 개체의 속성을 Java 속성 또는 메서드 호출에 매핑합니다.

사용자는 처리할 플러그인 팩토리 구현의 속성을 가져오기 위해 플러그인 팩토리를 구현할 때SDKFinderProperty 클래스의 메서드에서 호출할 수 있습니다.

Orchestrator 클라이언트의 보기에서 개체 속성을 표시하거나 숨길 수 있습니다. 개체 속성을 정의하기위해 열거형을 사용할 수도 있습니다.

<property> 요소는 선택 사항입니다. 플러그인의 <property> 요소 수에는 제한이 없습니다. <property> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

name 찾기 이름 요소를 저장하기 위해 FinderResult가사용하는 이름. 필수 특성입니다.

display-name 찾기 이름 표시된 속성 이름. 선택적 특성입니다.

bean-property 속성 이름 get 및 set 작업을 사용해 가져올 속성을 식별하기 위해 bean-property 특성을 사용합니다. 이름이 MyProperty인 속성을 식별하면 플러그인은getMyProperty 및 setMyProperty 작업을 정의합니다.

bean-property 또는 property-accessor 중 하나를 설정하며 둘 다는할 수 없습니다. 선택적 특성입니다.

property-accessor 개체에서 속성 값을 가져오는 메서드 property-accessor 특성을 사용하면개체의 속성을 검증할 OGNL 표현식을 정의할 수 있습니다.

bean-property 또는 property-accessor 중 하나를 설정하며 둘 다는할 수 없습니다. 선택적 특성입니다.

show-in-column true(기본값) 또는 false true이면 이 속성이 Orchestrator클라이언트 결과 표에 표시됩니다. 선택적 특성입니다.

show-in-description true(기본값) 또는 false true이면 이 속성이 개체 설명에 표시됩니다. 선택적 특성입니다.

hidden true 또는 false(기본값) true이면 이 속성이 항상 숨겨집니다.선택적 특성입니다.

linked-enumeration 열거형 이름 찾기 속성을 열거형에 연결합니다. 선택적 특성입니다.

1장 워크플로 개발

VMware, Inc. 69

Page 70: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑19. 요소 계층

상위 요소 하위 요소

<properties> 하위 요소

관계 요소

<relations> 요소는 <finder><relation> 요소의 컨테이너입니다.

<relations> 요소는 선택 사항입니다. <relations> 요소에는 특성이 없습니다.

표 1‑20. 요소 계층

상위 요소 하위 요소

<finder> <relation>

관계 요소

<relation> 요소는 개체가 다른 개체와 관계를 맺는 방법을 정의합니다.

<relation> 요소에 관계 이름을 정의합니다.

<relation> 요소는 선택 사항입니다. 플러그인의 <relation> 요소 수에는 제한이 없습니다. <relation> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

name 관계 이름 이 관계의 이름입니다. 필수 특성입니다.

type Orchestrator 개체 유형 이 관계에 의해 다른 개체와 관련된개체의 유형입니다. 필수 특성입니다.

cardinality to-one 또는 to-many 개체 간의 관계를 일대일 또는 일대다로 정의합니다. 선택적 특성입니다.

표 1‑21. 요소 계층

상위 요소 하위 요소

<relations> 없음

id 요소

<id> 요소는 찾기가 식별하는 개체의 고유 ID를 가져오기 위한 메서드를 정의합니다.

<id> 요소는 선택 사항입니다. <id> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

accessor 메서드 이름 accessor 특성을 사용하면 개체의 속성을 검증할 OGNL 표현식을 정의할수 있습니다. 필수 특성입니다.

표 1‑22. 요소 계층

상위 요소 하위 요소

<finder> 없음

VMware vRealize Orchestrator를 사용한 개발

70 VMware, Inc.

Page 71: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

인벤토리-하위 항목 요소

<inventory-children> 요소는 Orchestrator 클라이언트 인벤토리 보기 및 개체 선택 상자에서 개체를 표시하는 목록의 계층을 정의합니다.

<inventory-children> 요소는 선택 사항입니다. <inventory-children> 요소에는 특성이 없습니다.

표 1‑23. 요소 계층

상위 요소 하위 요소

<finder> <relation-link>

관계-링크 요소

<relation-link> 요소는 인벤토리 탭의 상위 개체와 하위 개체 간 계층 구조를 정의합니다.

<relation-link> 요소는 선택 사항입니다. 플러그인의 <relation-link> 요소 수에는 제한이 없습니다.<relation-link> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 관계 이름 관계 이름에 대한 refid입니다. 필수특성입니다.

표 1‑24. 요소 계층

상위 요소 하위 요소

<inventory-children> 없음

events 요소

<events> 요소는 <trigger> 및 <gauge> 요소의 컨테이너입니다.

<events> 요소는 트리거 또는 게이지를 무제한으로 포함할 수 있습니다.

<events> 요소는 선택 사항입니다. <events> 요소에는 특성이 없습니다.

표 1‑25. 요소 계층

상위 요소 하위 요소

<finder> n <trigger>

n <gauge>

trigger 요소

<trigger> 요소는 이 찾기에 사용할 수 있는 트리거를 선언합니다. 트리거를 설정하려면 IPluginAdaptor의registerEventPublisher() 및 unregisterEventPublisher() 메서드를 구현해야 합니다.

<trigger> 요소는 선택 사항입니다. <trigger> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 트리거 이름 이 트리거의 이름입니다. 필수 특성입니다.

1장 워크플로 개발

VMware, Inc. 71

Page 72: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑26. 요소 계층

상위 요소 하위 요소

<events> n <description>

n <trigger-properties>

trigger-properties 요소

<trigger-properties> 요소는 <trigger-property> 요소의 컨테이너입니다.

<trigger-properties> 요소는 선택 사항입니다. <trigger-properties> 요소에는 특성이 없습니다.

표 1‑27. 요소 계층

상위 요소 하위 요소

<trigger> <trigger-property>

trigger-properties 요소

<trigger-property> 요소는 트리거 개체를 식별하는 속성을 정의합니다.

<trigger-property> 요소는 선택 사항입니다. 플러그인의 <trigger-property> 요소 수에는 제한이 없습니다.<trigger-property> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 트리거 이름 트리거의 이름. 선택적 특성입니다.

display-name 트리거 이름 Orchestrator 클라이언트에 표시되는 이름입니다. 선택적 특성입니다.

type 트리거 유형 트리거를 정의하는 개체 유형입니다.필수 특성입니다.

표 1‑28. 요소 계층

상위 요소 하위 요소

<trigger-properties> 없음

gauge 요소

<gauge> 요소는 이 찾기에 사용할 수 있는 게이지를 정의합니다. 게이지를 설정하려면 IPluginAdaptor의registerEventPublisher() 및 unregisterEventPublisher() 메서드를 구현해야 합니다.

<gauge> 요소는 선택 사항입니다. 플러그인의 <gauge> 요소 수에는 제한이 없습니다. <gauge> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 게이지 이름 게이지의 이름입니다. 필수 특성입니다.

min-value 숫자 최소 임계값입니다. 선택적 특성입니다.

max-value 숫자 최대 임계값입니다. 선택적 특성입니다.

unit 개체 유형 게이지를 정의하는 개체 유형입니다.필수 특성입니다.

format 문자열 모니터링되는 값의 형식입니다. 선택적 특성입니다.

VMware vRealize Orchestrator를 사용한 개발

72 VMware, Inc.

Page 73: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑29. 요소 계층

상위 요소 하위 요소

<events> <description>

scripting-objects 요소

<scripting-objects> 요소는 <object> 요소의 컨테이너입니다.

<scripting-objects> 요소는 선택 사항입니다. <scripting-objects> 요소에는 특성이 없습니다.

표 1‑30. 요소 계층

상위 요소 하위 요소

<module> <object>

개체 요소

<object> 요소는 플러그인된 기술의 생성자, 특성 및 메서드를 Orchestrator 스크립팅 API가 노출하는JavaScript 개체 유형에 매핑합니다.

개체 이름 지정 규칙은 “플러그인 개체 이름 지정,”(52 페이지) 항목을 참조하십시오.

<object> 요소는 선택 사항입니다. 플러그인의 <object> 요소 수에는 제한이 없습니다. <object> 요소에는다음과 같은 특성이 있습니다.

Type 값 설명

script-name JavaScript 이름 클래스의 스크립팅 이름. 전체에서 고유해야 합니다. 필수 특성입니다.

java-class Java 클래스 이 JavaScript 클래스가 래핑한Java 클래스. 필수 특성입니다.

create true(기본값) 또는 false true이면 이 클래스의 새 인스턴스를생성할 수 있습니다. 선택적 특성입니다.

strict true 또는 false(기본값) true이면 vso.xml 파일에 주석을 달거나 선언한 메서드만 호출할 수 있습니다. 선택적 특성입니다.

is-deprecated true 또는 false(기본값) true이면 개체가 사용되지 않는 Java클래스를 매핑합니다. 선택적 특성입니다.

since-version 문자열 Java 클래스를 사용하지 않게 된 후의 버전. 선택적 특성입니다.

표 1‑31. 요소 계층

상위 요소 하위 요소

<scripting-objects> n <description>

n <deprecated>

n <url>

n <constructors>

n <attributes>

n <methods>

n <singleton>

1장 워크플로 개발

VMware, Inc. 73

Page 74: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

constructors 요소

<constructors> 요소는 <object><constructor> 요소의 컨테이너입니다.

<constructors> 요소는 선택 사항입니다. <constructors> 요소에는 특성이 없습니다.

표 1‑32. 요소 계층

상위 요소 하위 요소

<object> <constructor>

constructor 요소

<constructor> 요소는 생성자 메서드를 정의합니다. <constructor> 메서드는 API 탐색기에서 설명서를 생성합니다.

<constructor> 요소는 선택 사항입니다. 플러그인의 <constructor> 요소 수에는 제한이 없습니다.<constructor> 요소에는 특성이 없습니다.

표 1‑33. 요소 계층

상위 요소 하위 요소

<constructors> n <description>

n <parameters>

생성자 parameters 요소

<parameters> 요소는 <constructor><parameter> 요소의 컨테이너입니다.

<parameters> 요소는 선택 사항입니다. <parameters> 요소에는 특성이 없습니다.

표 1‑34. 요소 계층

상위 요소 하위 요소

<constructor> <parameter>

생성자 parameter 요소

<parameter> 요소는 생성자의 매개 변수를 정의합니다.

<parameter> 요소는 선택 사항입니다. 플러그인의 <parameter> 요소 수에는 제한이 없습니다. <parameter> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 문자열 API 설명서에서 사용할 매개 변수 이름입니다. 필수 특성입니다.

type Orchestrator 매개 변수 유형 API 설명서에서 사용할 매개 변수 유형입니다. 필수 특성입니다.

is-optional true 또는 false true이면 값이 null일 수 있습니다.선택적 특성입니다.

since-version 문자열 메서드 버전입니다. 선택적 특성입니다.

VMware vRealize Orchestrator를 사용한 개발

74 VMware, Inc.

Page 75: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑35. 요소 계층

상위 요소 하위 요소

<parameters> 없음

attributes 요소

<attributes> 요소는 <object><attribute> 요소의 컨테이너입니다.

<attributes> 요소는 선택 사항입니다. <attributes> 요소에는 특성이 없습니다.

표 1‑36. 요소 계층

상위 요소 하위 요소

<object> <attribute>

attribute 요소

<attribute> 요소는 플러그인된 기술의 Java 클래스 특성을 Orchestrator JavaScript 엔진을 통해 사용할 수 있는 JavaScript 특성에 매핑합니다.

<attribute> 요소는 선택 사항입니다. 플러그인의 <attribute> 요소 수에는 제한이 없습니다. <attribute> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

java-name Java 특성 Java 특성의 이름입니다. 필수 특성입니다.

script-name JavaScript 개체 해당하는 JavaScript 개체의 이름입니다. 필수 특성입니다.

return-type 문자열 이 특성이 반환하는 개체의 유형입니다. API 탐색기 설명서에 나타납니다.선택적 특성입니다.

참고 JavaScript 반환 유형이Properties이면 지원되는 기본 Java구현은 java.util.HashMap 및java.util.Hashtable입니다.

read-only true 또는 false true이면 이 특성을 수정할 수 없습니다. 선택적 특성입니다.

is-optional true 또는 false true이면 이 필드는 null일 수 있습니다. 선택적 특성입니다.

show-in-api true 또는 false false이면 이 특성이 API 설명서에 나타나지 않습니다. 선택적 특성입니다.

is-deprecated true 또는 false true이면 개체가 사용되지 않는 특성을 매핑합니다. 선택적 특성입니다.

since-version 숫자 특성이 사용되지 않게 된 버전입니다.선택적 특성입니다.

표 1‑37. 요소 계층

상위 요소 하위 요소

<attributes> 없음

1장 워크플로 개발

VMware, Inc. 75

Page 76: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 요소

<methods> 요소는 <object><method> 요소의 컨테이너입니다.

<methods> 요소는 선택 사항입니다. <methods> 요소에는 특성이 없습니다.

표 1‑38. 요소 계층

상위 요소 하위 요소

<object> <method>

메서드 요소

<method> 요소는 플러그인된 기술의 Java 메서드를 Orchestrator JavaScript 엔진이 노출하는JavaScript 메서드로 매핑합니다.

<method> 요소는 선택 사항입니다. 플러그인의 <method> 요소 수에는 제한이 없습니다. <method> 요소에는다음과 같은 특성이 있습니다.

Type 값 설명

java-name Java 메서드 예를 들어 getVms(DataStore)와 같이괄호로 묶인 인수 유형을 포함하는Java 메서드 서명의 이름. 필수 특성입니다.

script-name JavaScript 메서드 해당하는 JavaScript 메서드의 이름입니다. 필수 특성입니다.

return-type Java 개체 유형 이 메서드가 가져오는 유형입니다. 선택적 특성입니다.

참고 JavaScript 반환 유형이Properties이면 지원되는 기본 Java구현은 java.util.HashMap 및java.util.Hashtable입니다.

static true 또는 false true이면 이 메서드는 정적입니다. 선택적 특성입니다.

show-in-api true 또는 false false이면 이 메서드가 API 설명서에나타나지 않습니다. 선택적 특성입니다.

is-deprecated true 또는 false true이면 개체가 사용되지 않는 메서드를 매핑합니다. 선택적 특성입니다.

since-version 숫자 메서드가 사용되지 않게 된 버전입니다. 선택적 특성입니다.

표 1‑39. 요소 계층

상위 요소 하위 요소

<methods> n <deprecated>

n <description>

n <example>

n <parameters>

VMware vRealize Orchestrator를 사용한 개발

76 VMware, Inc.

Page 77: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

example 요소

<example> 요소를 사용하여 API 탐색기 설명서에 표시되는 Javascript 메서드에 코드 예제를 추가할 수있습니다.

<example> 요소는 선택 사항입니다. <example> 요소에는 특성이 없습니다.

표 1‑40. 요소 계층

상위 요소 하위 요소

<method> n <code>

n <description>

code 요소

<code> 요소는 API 탐색기 설명서에 표시되는 예제 코드를 제공합니다.

<code> 태그와 </code> 태그 사이에 코드 예제를 제공합니다. <code> 요소는 선택 사항입니다. <code> 요소에는 특성이 없습니다.

표 1‑41. 요소 계층

상위 요소 하위 요소

<example> 없음

메서드 매개 변수 요소

<parameters> 요소는 <method><parameter> 요소의 컨테이너입니다.

<parameters> 요소는 선택 사항입니다. <parameters> 요소에는 특성이 없습니다.

표 1‑42.

상위 요소 하위 요소

<method> <parameter>

메서드 parameter 요소

<parameter> 요소는 메서드의 입력 매개 변수를 정의합니다.

<parameter> 요소는 선택 사항입니다. 플러그인의 <parameter> 요소 수에는 제한이 없습니다. <parameter> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 문자열 매개 변수 이름. 필수 특성입니다.

type Orchestrator 매개 변수 유형 매개 변수 유형. 필수 특성입니다.

is-optional true 또는 false true이면 값이 null일 수 있습니다.선택적 특성입니다.

since-version 문자열 메서드 버전입니다. 선택적 특성입니다.

표 1‑43. 요소 계층

상위 요소 하위 요소

<parameters> 없음

1장 워크플로 개발

VMware, Inc. 77

Page 78: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

singleton 요소

<singleton> 요소는 Singleton 인스턴스로 JavaScript 스크립팅 개체를 생성합니다.

Singleton 개체는 정적 Java 클래스와 동일한 방식으로 동작합니다. Singleton 개체는Orchestrator가 플러그인된 기술에서 액세스하는 개체의 특정 인스턴스를 정의하는 것이 아니라 플러그인에서 사용할 수 있는 일반 개체를 정의합니다. 예를 들어 Singleton 개체를 사용하여 플러그인된 기술에 대한 연결을 설정할 수 있습니다.

<singleton> 요소는 선택 사항입니다. <singleton> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

script-name JavaScript 개체 해당하는 JavaScript 개체의 이름입니다. 필수 특성입니다.

datasource Java 개체 이 JavaScript 개체의 소스 Java 개체입니다. 필수 특성입니다.

표 1‑44. 요소 계층

상위 요소 하위 요소

<object> 없음

enumerations 요소

<enumerations> 요소는 <enumeration> 요소의 컨테이너입니다.

<enumerations> 요소는 선택 사항입니다. <enumerations> 요소에는 특성이 없습니다.

표 1‑45. 요소 계층

상위 요소 하위 요소

<module> <enumeration>

enumeration 요소

<enumeration> 요소는 특정 유형의 모든 개체에 적용되는 공통 값을 정의합니다.

특정 유형의 모든 개체에 특정 특성이 필요하고 해당 특성의 값 범위가 제한된 경우 여러 값을 열거형 항목으로 정의할 수 있습니다. 예를 들어 개체 유형에 color 특성이 필요하고 빨간색, 파란색 및 녹색만 사용할 수 있는 경우 이 세 가지 색 값을 정의하는 세 가지 열거형 항목을 정의할 수 있습니다. 항목을 열거형 요소의 하위 요소로 정의합니다.

<enumeration> 요소는 선택 사항입니다. 플러그인의 <enumeration> 요소 수에는 제한이 없습니다.<enumeration> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

type Orchestrator 개체 유형 열거형 유형입니다. 필수 특성입니다.

표 1‑46. 요소 계층

상위 요소 하위 요소

<enumerations> n <url>

n <description>

n <entries>

VMware vRealize Orchestrator를 사용한 개발

78 VMware, Inc.

Page 79: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

entries 요소

<entries> 요소는 <enumeration><entry> 요소의 컨테이너입니다.

<entries> 요소는 선택 사항입니다. <entries> 요소에는 특성이 없습니다.

표 1‑47. 요소 계층

상위 요소 하위 요소

<enumeration> <entry>

entry 요소

<entry> 요소는 열거형 특성의 값을 제공합니다.

<entry> 요소는 선택 사항입니다. 플러그인의 <entry> 요소 수에는 제한이 없습니다. <entry> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

id 텍스트 개체에서 열거형 항목을 특성으로 설정하는 데 사용하는 식별자입니다. 필수 특성입니다.

name 텍스트 항목 이름입니다. 필수 특성입니다.

표 1‑48. 요소 계층

상위 요소 하위 요소

<entries> 없음

Orchestrator 플러그인 개발에 대한 모범 사례

플러그인의 구조 및 내용과 함께 특정 문제를 방지하는 방법을 이해하면 개발하는 Orchestrator 플러그인의 특정 측면을 개선할 수 있습니다.

n Orchestrator 플러그인 빌드 방법(80 페이지)

다양한 방법으로 Orchestrator 플러그인을 빌드할 수 있습니다. 플러그인 빌드를 계층별로 시작하거나 플러그인의 모든 계층에서 동시에 시작할 수 있습니다.

n Orchestrator 플러그인 유형(81 페이지)

플러그인을 사용하여 XML 또는 SSH와 같은 범용 라이브러리 또는 유틸리티뿐 아니라 vCloudDirector와 같은 전체 시스템을 Orchestrator와 통합할 수 있습니다. Orchestrator와 통합한기술에 따라 플러그인을 서비스용 플러그인, 범용 플러그인 및 시스템용 플러그인으로 분류할 수 있습니다.

n 플러그인 구현(84 페이지)

플러그인을 구성하고, 필요한 Java 클래스 및 JavaScript 개체를 구현하고, 플러그인 워크플로및 작업을 개발하고, 워크플로 프레젠테이션을 제공할 때 유용한 특정 방식 및 기술을 사용할 수 있습니다.

n Orchestrator 플러그인 개발에 대한 권장 사항(88 페이지)

Orchestrator 플러그인의 여러 구성 요소를 개발할 때 특정 작업 방식을 따르면 플러그인의 품질을 개선하는 데 도움이 됩니다.

n 플러그인 사용자 인터페이스 문자열 및 API 설명서 작성(90 페이지)

Orchestrator 플러그인 및 관련 API 설명서에 대한 UI(사용자 인터페이스) 문자열을 작성하는 경우 허용되는 스타일 및 형식 규칙을 따라야 합니다.

1장 워크플로 개발

VMware, Inc. 79

Page 80: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Orchestrator 플러그인 빌드 방법

다양한 방법으로 Orchestrator 플러그인을 빌드할 수 있습니다. 플러그인 빌드를 계층별로 시작하거나플러그인의 모든 계층에서 동시에 시작할 수 있습니다.

플러그인 계층에 대한 자세한 내용은 “Orchestrator 플러그인의 구조,”(44 페이지) 항목을 참조하십시오.

상향식 플러그인 개발

상향식 개발 방법을 사용하여 계층별로 플러그인을 빌드할 수 있습니다.

상향식 개발 방법은 하위 수준 계층에서 시작하여 상위 수준 계층으로 이어지는 계층별 플러그인을 빌드합니다. 이 방법을 대화형 및 반복형 개발 방법과 함께 사용하면 각 반복에 대해 부분 또는 전체 계층이제공됩니다. N회 반복이 끝나면 플러그인이 완전히 완료됩니다.

그림 1‑5. 상향식 플러그인 개발

상위 수준 워크플로반복 n

반복 1

빌딩 블록 워크플로

작업

스크립팅 개체

래핑 클래스

인프라 클래스

상향식 플러그인 개발 방법의 장점은 한 번에 하나의 계층에 중점을 둔다는 점입니다.

상향식 플러그인 개발 방법에서 고려할 단점은 다음과 같습니다.

n 일부 삽입을 완료할 때까지 플러그인 개발 진행률을 표시하기 어렵습니다.

n Agile 개발 방법에는 그다지 적합하지 않습니다.

상향식 개발 프로세스는 래핑 클래스, 스크립팅 개체, 작업 또는 워크플로 집합이 없거나 줄어든 소규모플러그인에 적합한 것으로 간주됩니다.

하향식 플러그인 개발

하향식 개발 방법을 통해 하향식 기능으로 분할하여 플러그인을 빌드할 수 있습니다.

하향식 방법을 Agile 개발 프로세스와 함께 사용하는 경우 각 반복에 대해 새로운 기능이 제공됩니다. 따라서 N회 반복이 끝나면 플러그인이 완전히 구현됩니다.

VMware vRealize Orchestrator를 사용한 개발

80 VMware, Inc.

Page 81: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

그림 1‑6. 하향식 플러그인 개발

상위 수준 워크플로

반복 n반복 1

빌딩 블록 워크플로

작업

스크립팅 개체

래핑 클래스

인프라 클래스

하향식 플러그인 개발 방법은 다음과 같은 이점이 있습니다.

n 새로운 기능이 각 반복에 대해 완료되고 모든 반복 후 플러그인을 릴리스 및 사용할 수 있으므로 첫번째 반복에서 플러그인 개발 진행 상황을 쉽게 확인할 수 있습니다.

n 기능의 수직 분할을 완료하면 수행된 작업의 성공 기준 및 정의가 매우 명확하게 정의될 뿐만 아니라개발자, 제품 관리 및 QA(품질 보증) 엔지니어 간의 소통이 보다 원활해집니다.

n QA 엔지니어가 개발 프로세스 초기에 테스트 및 자동화를 시작할 수 있습니다. 따라서 소중한 피드백을 받을 수 있으며, 전체 프로젝트 이행 기간이 단축됩니다.

하향식 플러그인 개발 방법의 단점은 동시에 여러 계층에서 개발이 진행된다는 점입니다.

대부분의 플러그인에 하향식 플러그인 개발 프로세스를 적용해야 합니다. 동적 요구 사항이 있는 플러그인에 적합합니다.

Orchestrator 플러그인 유형

플러그인을 사용하여 XML 또는 SSH와 같은 범용 라이브러리 또는 유틸리티뿐 아니라 vCloudDirector와 같은 전체 시스템을 Orchestrator와 통합할 수 있습니다. Orchestrator와 통합한 기술에따라 플러그인을 서비스용 플러그인, 범용 플러그인 및 시스템용 플러그인으로 분류할 수 있습니다.

서비스용 플러그인

서비스용 플러그인 또는 범용 플러그인은 Orchestrator 내에서 서비스로 간주될 수 있는 기능을 제공합니다.

그림 1‑7. 서비스용 플러그인의 아키텍처

Orchestrator 어댑터 시스템

서비스 플러그인

1장 워크플로 개발

VMware, Inc. 81

Page 82: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

서비스용 플러그인은 XML, SSH 또는 SOAP와 같은 범용 라이브러리 또는 유틸리티를 Orchestrator에 노출합니다. 예를 들어 Orchestrator에서 사용할 수 있는 서비스용 플러그인은 다음과 같습니다.

JDBC 플러그인 워크플로 내에서 모든 데이터베이스를 사용할 수 있도록 해줍니다.

메일 플러그인 워크플로 내에서 이메일을 보낼 수 있도록 해줍니다.

SSH 플러그인 워크플로 내에서 SSH 연결을 열고 명령을 실행할 수 있도록 해줍니다.

XML 플러그인 워크플로 내에서 XML 문서를 관리할 수 있도록 해줍니다.

서비스용 플러그인의 특징은 다음과 같습니다.

복잡성 서비스용 플러그인의 복잡성은 하위 내지 중간 수준입니다. 서비스용 플러그인은 구체적인 기능을 제공하기 위해 Orchestrator 내에 특정 라이브러리 또는 라이브러리의 일부를 노출합니다. 예를 들어 XML 플러그인은DOM(문서 개체 모델) XML 구문 분석기 구현을 OrchestratorJavaScript API에 추가합니다.

크기 서비스용 플러그인은 크기가 비교적 작습니다. 서비스용 플러그인에는 모든플러그인용과 동일한 기본 클래스 집합이 필요하며 그 밖에도 새 기능을 추가할 수 있도록 새 스크립팅 개체를 제공하는 다른 클래스가 필요합니다.

인벤토리 서비스용 플러그인은 소규모 개체 인벤토리만 있어도 작동하며, 인벤토리가필요 없는 경우도 있습니다. 서비스용 플러그인의 개체 모델은 작고 일반적이므로 Orchestrator 인벤토리 내에 이 모델을 표시하지 않아도 됩니다.

시스템용 플러그인

시스템용 플러그인은 외부 시스템을 오케스트레이션할 수 있도록 Orchestrator 워크플로 엔진을 외부시스템에 연결합니다.

다음은 시스템용 플러그인의 예입니다.

vCenter Server 플러그인

워크플로를 사용하여 vCenter Server 인스턴스를 관리할 수 있도록 해줍니다.

vCloud Director 플러그인

워크플로 내에서 vCloud Director 설치와 상호 작용할 수 있도록 해줍니다.

Cisco UCSM 플러그인 워크플로 내에서 Cisco 엔티티와 상호 작용할 수 있도록 해줍니다.

다음은 시스템용 플러그인의 주요 특징입니다.

복잡성 시스템용 플러그인은 노출하는 기술이 비교적 복잡하기 때문에 범용 플러그인보다 복잡성 수준이 높습니다. 시스템용 플러그인은 외부 시스템과 상호작용하고 Orchestrator에서 해당 기능을 제공하기 위해 Orchestrator내에 외부 시스템의 모든 요소를 표시해야 합니다. 외부 시스템이 통합 메

VMware vRealize Orchestrator를 사용한 개발

82 VMware, Inc.

Page 83: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

커니즘을 제공하는 경우 이 메커니즘을 사용하여 Orchestrator에서 시스템의 기능을 보다 쉽게 노출할 수 있습니다. 그러나 Orchestrator에서 외부 시스템의 요소를 표시하는 것 외에 뛰어난 확장성 및 캐싱 메커니즘을제공하고 이벤트와 알림을 처리하는 등의 기능이 필요할 수도 있습니다.

크기 시스템용 플러그인은 크기가 크거나 중간 정도입니다. 시스템용 플러그인은많은 스크립팅 개체를 제공하기 때문에 기본 클래스 집합과 별도로 많은 클래스가 필요합니다. 또한 상호 작용할 몇 가지 다른 도우미 및 보조 클래스가 필요할 수도 있습니다.

인벤토리 일반적으로 시스템용 플러그인에는 개체가 많으므로 Orchestrator에서쉽게 찾아서 사용할 수 있도록 이러한 개체를 인벤토리에 적절히 노출해야합니다. 시스템용 플러그인이 노출해야 하는 많은 개체로 인해 가능한 한많은 플러그인용 코드를 자동으로 생성할 보조 도구 또는 프로세스를 구축해야 합니다. 예를 들어 vCenter Server 플러그인은 이러한 도구를 제공합니다.

개체 지향 시스템용 플러그인

개체 지향 시스템은 개체 및 RPC를 기반으로 하는 상호 작용 메커니즘을 제공합니다.

개체 지향 시스템의 가장 일반적인 모델은 SOAP를 사용하는 웹 서비스 모델입니다. 이 모델 내의 개체는 개체 상태와 관련된 특성 집합이 있으며, 대상 시스템 쪽에서 호출되는 원격 메서드 집합을 제공합니다.

그림 1‑8. 개체 지향 시스템용 플러그인

Orchestrator 어댑터 시스템

개체 지향 시스템 플러그인

예:WSDL

생성

개체 지향 시스템용 플러그인을 구현할 때 고려할 수 있는 사항은 다음과 같습니다.

n SOAP를 사용하는 경우 WSDL 파일을 사용하여 개체 모델과 통신 메커니즘을 결합하는 클래스 집합을 생성할 수 있습니다.

n 이 개체 모델은 Orchestrator 내에서 노출해야 하는 거의 모든 것입니다.

리소스 지향 시스템용 플러그인

리소스 지향 시스템은 HTTP 메서드를 사용하는 간단한 작업 및 리소스를 기반으로 하는 상호 작용 메커니즘을 제공합니다.

리소스 지향 시스템의 대표적인 모델은 XML 등과 결합된 REST 모델입니다. 이 모델 내의 개체에는 해당 상태와 관련된 특성 집합이 있습니다. 대상 시스템에서 메서드를 호출(통신 메커니즘)하려면 GET,POST, PUT 등의 표준 HTTP 메서드를 사용하고 몇 가지 규칙을 따라야 합니다.

1장 워크플로 개발

VMware, Inc. 83

Page 84: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

그림 1‑9. 리소스 지향 시스템용 플러그인

시스템

리소스 지향 시스템 플러그인

예:XSD

생성

Orchestrator

리소스 지향 시스템용 플러그인을 개발할 때 고려할 수 있는 사항은 다음과 같습니다.

n REST를 사용하거나 HTTP와 XML만 사용하는 경우 메시지를 읽고 쓰려면 하나 이상의 XML 스키마 파일을 가져와야 합니다. 이러한 스키마에서 개체 모델을 정의하는 클래스 집합을 생성할 수 있습니다. 이 클래스 집합은 개체 상태만 정의합니다. 작업이 HTTP 메서드를 통해 암시적으로 정의(예:vCloud Director 플러그인)되거나, 몇 가지 특정 XML 메시지를 통해 명시적으로 정의(예: CiscoUCSM 플러그인)되기 때문입니다.

n 다른 클래스 집합에서 통신 메커니즘을 구현해야 합니다. 이 클래스 집합은 원래 개체 모델과 상호 작용하는 새 개체 모델을 정의합니다. 통신 메커니즘용 개체 모델은 개체와 메서드로만 구성됩니다.

n 원래 개체 모델과 통신 메커니즘용 개체 모델을 모두 Orchestrator 내에 노출할 수 있습니다. 이 경우 두 개체 모델이 노출되는 방식 및 양쪽에서 관련 개체를 병합할지(개체 지향 시스템을 시뮬레이션하기 위해) 또는 별도로 유지할지 여부에 따라 어느 정도 복잡성이 가중될 수 있습니다.

플러그인 구현

플러그인을 구성하고, 필요한 Java 클래스 및 JavaScript 개체를 구현하고, 플러그인 워크플로 및 작업을 개발하고, 워크플로 프레젠테이션을 제공할 때 유용한 특정 방식 및 기술을 사용할 수 있습니다.

n 프로젝트 구조(84 페이지)

Orchestrator 플러그인의 프로젝트에 표준 구조를 적용할 수 있습니다.

n 프로젝트 내부 구조(85 페이지)

플러그인을 구현할 때 개체를 캐시하거나, 백그라운드에서 가져오거나, 복제하는 등 특정 방법을 적용할 수 있습니다. 이러한 방법을 따르면 플러그인의 성능을 개선하고, 동시 실행 문제를 방지하고,Orchestrator 클라이언트의 응답성을 높일 수 있습니다.

n 워크플로 내부 구조(86 페이지)

Orchestrator 플러그인에서 수행하는 장기 작업을 모니터링할 워크플로를 구현할 수 있습니다.

n 워크플로 및 작업(86 페이지)

워크플로를 보다 쉽게 개발하고 사용하기 위해 특정 모범 사례를 사용할 수 있습니다.

n 워크플로 프레젠테이션(87 페이지)

워크플로 프레젠테이션을 만드는 경우 특정 구조 및 규칙을 적용해야 합니다.

프로젝트 구조

Orchestrator 플러그인의 프로젝트에 표준 구조를 적용할 수 있습니다.

플러그인 프로젝트에 대한 모듈과 함께 표준 Maven 구조를 사용하여 모든 기능이 있는 위치를 명확하게나타낼 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

84 VMware, Inc.

Page 85: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑49. 플러그인 프로젝트의 구조

모듈 설명

/myAwesomePlugin-plugin 플러그인 프로젝트의 루트입니다.

/o11nplugin-myAwesomePlugin 최종 플러그인 DAR 파일을 작성하는 모듈입니다.

/o11nplugin-myAwesomePlugin-config 플러그인 구성 웹 애플리케이션을 포함하는 모듈입니다.표준 WAR 파일을 생성합니다.

/o11nplugin-myAwesomePlugin-core 표준 Orchestrator 플러그인 인터페이스를 구현하는 모든 클래스와 해당 인터페이스에 사용되는 다른 보조 클래스를 포함하는 모듈입니다. 표준 JAR 파일을 생성합니다.

/o11nplugin-myAwesomePlugin-model 플러그인을 통해 타사 기술을 Orchestrator와 통합하도록 도와주는 모든 클래스를 포함하는 모듈입니다. 이 클래스는 표준 Orchestrator 플러그인 API에 대한 직접 참조를 포함할 수 없습니다.

/o11nplugin-myAwesomePlugin-package 작업 및 워크플로가 포함된 외부 Orchestrator 패키지파일을 가져와 최종 플러그인 DAR 파일 내에 포함하는모듈입니다. 이 모듈은 선택 사항입니다.

프로젝트 내부 구조

플러그인을 구현할 때 개체를 캐시하거나, 백그라운드에서 가져오거나, 복제하는 등 특정 방법을 적용할수 있습니다. 이러한 방법을 따르면 플러그인의 성능을 개선하고, 동시 실행 문제를 방지하고,Orchestrator 클라이언트의 응답성을 높일 수 있습니다.

개체 캐시

플러그인은 원격 서비스와 상호 작용할 수 있으며, 이러한 상호 작용은 서비스 쪽의 원격 개체를 나타내는로컬 개체에 의해 제공됩니다. 플러그인의 성능 및 Orchestrator UI의 응답성을 높이려면 원격 서비스에서 매번 가져오는 대신 로컬 개체를 캐시하면 됩니다. 이 경우 모든 플러그인 클라이언트에 하나의 캐시를 사용하거나, 플러그인 사용자당 하나의 캐시를 사용하거나, 타사 서비스 사용자당 하나의 캐시를 사용하는 등 캐시 범위를 고려할 수 있습니다. 구현된 캐싱 메커니즘은 개체를 찾아서 무효화하기 위해 플러그인 인터페이스에 통합됩니다.

백그라운드에서 개체 가져오기

플러그인 인벤토리에 대용량 개체 목록을 표시해야 하지만 이러한 개체를 신속하게 검색할 방법이 없는경우 백그라운드에서 개체를 가져올 수 있습니다. 예를 들어 fake 및 loaded의 두 가지 상태로 개체를 유지하여 백그라운드에서 개체를 가져올 수 있습니다. fake 개체는 생성하기가 매우 쉽고 인벤토리에 표시해야하는 최소한의 정보(예: 이름 및 ID)를 제공한다고 가정해 보겠습니다. 이 경우 항상 fake 개체를 반환할수 있으며, 실제로 모든 정보(실제 개체)가 필요한 경우 사용 중인 엔티티 또는 플러그인에서 load 메서드를 자동으로 호출하여 실제 개체를 가져올 수 있습니다. 사용 중인 엔티티의 작업을 예측하기 위해 fake개체가 반환된 후 자동으로 시작하도록 개체 로드 프로세스를 구성할 수도 있습니다.

동시 실행 문제를 방지하기 위해 개체 복제

플러그인에 캐시를 사용하는 경우 개체를 복제해야 합니다. 요청하는 모든 엔티티에 항상 동일한 개체 인스턴스를 반환하는 캐시를 사용할 경우 원치 않는 결과가 발생할 수 있습니다. 예를 들어 엔티티 A는 개체 O를 요청하여 해당 특성과 함께 인벤토리에 개체를 표시합니다. 이와 동시에 엔티티 B는 개체 O를 요청하고 엔티티 A는 개체 O의 특성을 변경하는 워크플로를 실행합니다. 이 실행이 끝나면 워크플로에서개체의 update 메서드를 호출하여 서버 쪽의 개체를 업데이트합니다. 엔티티 A와 엔티티 B가 개체 O의동일한 인스턴스를 가져온 경우 엔티티 A는 변경 내용이 서버 쪽에 커밋되기 이전에도 엔티티 B가 수행한 모든 변경 내용을 인벤토리에 표시합니다. 정상적으로 실행되면 문제가 없지만 실행에 실패한 경우 엔티티 A에 대한 개체 O의 특성이 되돌려지지 않습니다. 이 경우 캐시(플러그인의 find 작업)에서 항상 동일한 인스턴스 대신 개체의 복제본을 반환한다면 사용 중인 각 엔티티에서 자체 복사본을 표시하고 수정하므로 적어도 Orchestrator 내에서의 동시 실행 문제를 방지할 수 있습니다.

1장 워크플로 개발

VMware, Inc. 85

Page 86: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

다른 엔티티에 변경 내용 알림

캐시와 개체 복제를 동시에 사용하는 경우 문제가 발생할 수 있습니다. 가장 큰 문제는, 사용 중인 엔티티에서 표시하는 개체가 해당 개체에 사용 가능한 최신 버전이 아닐 수 있다는 점입니다. 예를 들어 엔티티에서 인벤토리를 표시하고 개체가 한 번 로드되었지만 이와 동시에 다른 엔티티가 일부 개체를 변경 중인경우 첫 번째 엔티티에는 변경 내용이 표시되지 않습니다. 이 문제를 방지하기 위해 Orchestrator 플러그인 API에서 PluginWatcher 및 IPluginPublisher 메서드를 사용하여 Orchestrator 클라이언트의 다른 인스턴스에서 변경 내용을 볼 수 있도록 일부 항목이 변경되었음을 알릴 수 있습니다. 이는 Orchestrator클라이언트의 고유한 인스턴스, 즉 인벤토리 내 한 개체의 변경 내용이 인벤토리의 다른 개체에 영향을 주고 이러한 개체에 알림을 제공해야 하는 경우에도 적용됩니다. 알림을 주로 사용하는 작업으로는, 개체 또는 개체의 일부 속성이 인벤토리에 표시될 때 이러한 개체를 추가, 업데이트 및 삭제하는 작업이 포함됩니다.

언제든지 모든 개체를 찾을 수 있도록 설정

유형 및 ID만으로 개체를 찾을 수 있도록 IPluginFactory 인터페이스의 find 메서드를 구현해야 합니다.find 메서드는 Orchestrator를 다시 시작하고 워크플로를 재개하는 즉시 호출될 수 있습니다.

쿼리 서비스 시뮬레이션(없는 경우)

Orchestrator 클라이언트에서 특정한 경우 일부 개체를 쿼리하거나, 해당 개체를 트리 대신 목록 또는테이블 등으로 표시해야 할 수 있습니다. 이는 플러그인에서 언제든지 일부 개체 집합을 쿼리할 수 있어야함을 의미합니다. 타사 기술에서 쿼리 서비스를 제공하는 경우 이 서비스를 적용하고 사용해야 합니다. 그렇지 않으면 복잡성이 커지거나 솔루션 성능이 저하됨에도 불구하고 쿼리 서비스를 시뮬레이션할 수 있어야 합니다.

메서드 찾기에서 런타임 예외를 반환해서는 안 됨

플러그인 내에 검색을 구현하는 IPluginFactory 인터페이스의 메서드는 제어되거나 제어되지 않는 런타임예외를 발생시켜서는 안 됩니다. 이는 워크플로가 실행 중일 때 비정상적인 유효성 검사 오류 실패를 초래할 수 있습니다. 예를 들어 워크플로의 두 노드 사이에서 첫 번째 노드의 출력이 두 번째 노드의 입력인경우 find 메서드가 호출됩니다. 이때 런타임 예외로 인해 개체를 찾을 수 없는 경우에는 Orchestrator클라이언트에서 유효성 검사 오류 외에 다른 정보를 얻을 수 없습니다. 로그 파일 내에서 얻을 수 있는 정보의 양은 플러그인이 예외를 기록하는 방식에 따라 달라집니다.

워크플로 내부 구조

Orchestrator 플러그인에서 수행하는 장기 작업을 모니터링할 워크플로를 구현할 수 있습니다.

작업 모니터링과 같은 장기 실행 작업을 모니터링할 워크플로를 구성할 수 있습니다. 이 워크플로는Orchestrator 트리거 및 대기 중인 이벤트를 기반으로 할 수 있습니다. 작업을 대기 중인 차단된 워크플로는 Orchestrator 서버가 시작되는 즉시 재개될 수 있다는 점을 고려해야 합니다. 모니터링 프로세스를 제대로 재개하려면 플러그인에서 필요한 모든 정보를 가져올 수 있어야 합니다.

모니터링 워크플로 또는 해당 워크플로에서 내부적으로 사용할 수 있는 작업은 폴링 속도 및 가능한 시간초과를 지정하는 메커니즘을 제공해야 합니다.

워크플로 내에서 스크립팅 코드 조각을 디버깅하는 프로세스는 간단한 프로세스가 아니며, 특히 코드가Java 코드를 호출하지 않는 경우에는 더욱 그렇습니다. 이로 인해 기본 Orchestrator 스크립팅 개체에서 제공하는 로깅 메서드만 사용할 수밖에 없는 경우가 있습니다.

워크플로 및 작업

워크플로를 보다 쉽게 개발하고 사용하기 위해 특정 모범 사례를 사용할 수 있습니다.

빌딩 블록으로 워크플로 개발 시작

빌딩 블록은 몇 가지 입력 매개 변수만으로 간단한 출력을 반환하는 단순한 워크플로입니다. 다양한 빌딩블록 집합이 있는 경우 상위 수준 워크플로를 쉽게 만들 수 있으며, 복잡한 워크플로를 생성하는 데 보다효율적인 도구 집합을 제공할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

86 VMware, Inc.

Page 87: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

보다 작은 구성 요소를 기반으로 상위 수준 워크플로 생성

몇 가지 입력 및 내부 단계를 사용하여 복잡한 워크플로를 개발해야 하는 경우 이를 보다 작고 단순한 빌딩 블록 워크플로 및 작업으로 분할할 수 있습니다.

가능할 때마다 작업 생성

워크플로를 개발할 때 유연성을 개선하기 위해 작업을 만들 수 있습니다.

n 스크립팅 메서드에 대한 복잡한 개체 또는 매개 변수를 쉽게 만들기 위해

n 항상 반복되는 공통 코드 조각을 방지하기 위해

n UI 유효성 검사를 수행하기 위해

가능할 때마다 워크플로에서 작업 호출

워크플로 스키마 내에서 노드로 직접 작업을 호출할 수 있습니다. 이렇게 하면 단일 작업을 호출하기 위해스크립팅 코드 블록을 추가할 필요가 없기 때문에 워크플로 스키마를 보다 단순하게 유지할 수 있습니다.

필요한 정보 입력

워크플로 또는 작업의 모든 요소에 대한 정보를 제공합니다.

n 워크플로 또는 작업에 대한 설명 제공

n 입력 매개 변수에 대한 설명 제공

n 출력에 대한 설명 제공

n 워크플로의 특성에 대한 설명 제공

버전 정보를 업데이트된 상태로 유지

플러그인의 버전을 관리하는 경우 플러그인의 주요 업데이트, 중요한 구현 정보 등의 정보가 포함된 의미있는 설명을 플러그인에 추가합니다.

워크플로 프레젠테이션

워크플로 프레젠테이션을 만드는 경우 특정 구조 및 규칙을 적용해야 합니다.

워크플로 프레젠테이션의 워크플로 입력에 다음 속성을 사용합니다.

표 1‑50. 워크플로 입력 속성

속성 사용

Show in Inventory 사용자가 인벤토리 보기에서 워크플로를 실행하도록 지원하려면 이 속성을 사용합니다.

Specify a root object to be shown in the chooser 사용자가 입력을 선택하도록 지원하려면 이 속성을 사용합니다. 프레젠테이션에서 루트 개체를 새로 고칠 수 있거나, 루트 개체가 특성이거나, 개체 메서드에서 루트 개체를 검색할 수 있는 경우 프레젠테이션에서 개체를 새로 고치기 위한 적절한 작업을 만들거나 설정해야 합니다.

Maximum string length 이름, 설명, 파일 경로 등의 긴 문자열에 이 속성을 사용합니다.

Minimum string length 테스트 도구에서 빈 문자열을 방지하려면 이 속성을 사용합니다.

Custom validation 작업을 통해 단순하지 않은 유효성 검사를 구현합니다.

단계 및 표시 그룹을 사용하여 입력을 구성합니다. 이러한 구성은 사용자가 워크플로의 모든 입력 매개 변수를 식별하고 구별하는 데 도움이 됩니다.

1장 워크플로 개발

VMware, Inc. 87

Page 88: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Orchestrator 플러그인 개발에 대한 권장 사항

Orchestrator 플러그인의 여러 구성 요소를 개발할 때 특정 작업 방식을 따르면 플러그인의 품질을 개선하는 데 도움이 됩니다.

표 1‑51. 플러그인 구현의 유용한 작업 방식

구성 요소 항목 설명

일반 타사 API 액세스 플러그인은 가급적 타사 API에 액세스할 수 있는 간소화된방법을 제공해야 합니다.

인터페이스 API에서 제공되지 않는 경우에도 플러그인은 일관성 있는 표준 사용자 인터페이스를 제공해야 합니다.

작업 스크립팅 개체 생성, 수정, 삭제 및 그 밖에 스크립팅 개체에 사용 가능한다른 모든 방법에 대한 작업을 만들어야 합니다.

설명 작업 설명에서는 작동 방식 대신 작업의 기능을 설명해야 합니다.

스크립팅 스크립팅을 사용하여 개체의 속성이나 메서드를 가져오는 경우 개체 값이 null 또는 undefined와 다른지 확인할 수 있습니다.

사용되지 않음 작업이 사용되지 않는 경우 comment 또는 throw 문이 대체 작업을 나타내거나, 사용되지 않는 버전의 작업을 기반으로 하는 솔루션이 실패하지 않도록 작업에서 새 대체 작업을 호출해야 합니다.

워크플로 오케스트레이션된 기술의 사용자 인터페이스 작업

오케스트레이션된 기술의 사용자 인터페이스에서 사용할 수있는 모든 작업에 대한 워크플로를 만들어야 합니다.

설명 워크플로 설명에서는 작동 방식 대신 워크플로의 기능을 설명해야 합니다.

프레젠테이션 속성 mandatoryinput

모든 필수 워크플로 입력에 대해 mandatory input 속성을 설정해야 합니다.

프레젠테이션 속성 defaultvalue

엔티티를 구성하는 워크플로를 개발한 경우 워크플로 프레젠테이션에서 이 엔티티에 대한 기본 구성 값을 로드해야 합니다. 예를 들어 호스트 구성이라는 워크플로를 개발한 경우 워크플로 프레젠테이션에서 호스트 구성에 대한 기본값을 로드해야 합니다.

프레젠테이션 속성 Show ininventory

인벤토리 개체에 대한 상황별 워크플로를 유지할 수 있도록Show in inventory 속성을 설정해야 합니다.

프레젠테이션 속성 specify aroot parameter

트리 루트에서 인벤토리를 찾아보지 않아도 되는 경우 워크플로에서 이 속성을 사용해야 합니다.

워크플로 유효성 검사 워크플로의 유효성을 검사하여 모든 오류를 해결해야 합니다.

개체 생성 새 개체를 생성하는 모든 워크플로는 새 개체를 출력 매개 변수로 반환해야 합니다.

사용되지 않음 워크플로가 사용되지 않는 경우 comment 또는 throw 문이 대체 워크플로를 나타내거나, 이전 버전의 워크플로를 기반으로 하는 솔루션이 실패하지 않도록 사용되지 않는 워크플로에서 새 대체 워크플로를 호출해야 합니다.

인벤토리 호스트 연결 끊김 호스트 연결이 인벤토리에 포함된 경우 이 호스트를 사용할수 없게 되면 호스트 연결이 끊어졌음을 나타내야 합니다. 이렇게 하려면 - disconnected를 추가하여 루트 개체의 이름을변경하거나, vCloud Director 플러그인에서 수행하는 것과같은 방식으로 이 개체 아래의 개체 트리를 제거하면 됩니다.

Select value as list 속성 인벤토리 개체는 treeview 또는 list로 선택할 수 있어야 합니다.

VMware vRealize Orchestrator를 사용한 개발

88 VMware, Inc.

Page 89: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑51. 플러그인 구현의 유용한 작업 방식 (계속)

구성 요소 항목 설명

호스트 관리자 플러그인에서 대상 시스템에 대한 host 개체를 구현하는 경우 호스트 속성을 추가, 제거 또는 편집할 수 있는 속성을 가진 상위 hostmanager 루트 개체가 있어야 합니다.

개체 가져오기 또는 업데이트 오케스트레이션된 기술에서 쿼리 서비스가 실행 중인 경우이를 사용하여 여러 개체를 가져와야 합니다.

하위 항목 검색 하위 개체를 별도로 검색해야 하는 경우 검색 프로세스가 다중 스레드되어야 하며 단일 오류 시 차단되지 않아야 합니다.

Orchestrator 개체 변경 인벤토리에서 요소 상태를 변경할 수 있는 모든 워크플로는개체가 동기화되지 않는 것을 방지하기 위해 인벤토리를 업데이트해야 합니다.

외부 개체 변경 Orchestrator 외부에서 수행된 작업의 결과로 인해 오케스트레이션된 기술에서 변경 사항이 발생한 경우 알림 메커니즘을 사용하여 이러한 변경 사항을 알릴 수 있습니다. 작업이러한 작업으로 인해 오케스트레이션된 기술에서 개체가 제거된 경우 데이터 실패 또는 손실을 방지하기 위해 그에 따라인벤토리를 새로 고쳐야 합니다. 예를 들어 vCenterServer에서 가상 시스템이 삭제된 경우 vCenter Server플러그인은 제거된 가상 시스템 개체를 제거하기 위해 인벤토리를 업데이트합니다.

찾기 개체 찾기 개체에는 개체를 구분하는 데 사용할 수 있는 속성이 있어야 합니다. 이는 일반적으로 사용자 인터페이스에 표시되는 속성입니다.

스크립팅 개체 구현 경우에 따라 개체에 두 개의 인스턴스가 있을 수 있으므로 ==작업이 동일한 개체에서 수행되도록 하려면 equals 메서드를구현해야 합니다.

플러그인 개체 속성 상위 개체가 있는 개체는 parent 속성을 구현해야 합니다.

플러그인 개체 속성 하위 개체가 있는 개체는 하위 개체의 어레이를 반환하는GET 메서드를 구현해야 합니다.

인벤토리 개체 인벤토리 개체는 Server.find를 사용하여 검색할 수 있어야합니다.

모든 인벤토리 개체는 워크플로에서 입력 또는 출력 특성으로 사용할 수 있도록 직렬화할 수 있어야 합니다.

생성자 및 메서드 대부분의 경우 스크립팅 가능한 개체는 생성자가 있거나 다른 개체 특성 또는 메서드에서 반환되어야 합니다.

개체 ID 외부 시스템에서 발급된 ID를 가진 개체는 둘 이상의 서버를오케스트레이션할 때 ID 중복이 발생하지 않도록 내부 ID를사용해야 합니다.

개체 검색 search 또는 find 메서드는 모든 개체 대신 지정된 이름 또는ID를 찾을 수 있도록 필터를 구현해야 합니다. 예를 들어Orchestrator 서버에는 해당 ID별로 플러그인 개체를 찾을수 있는 Server.FindForId 메서드가 있습니다. 이렇게 하려면 플러그인에서 찾기 가능한 각 개체에 대해 이 메서드를 구현해야 합니다.

트리거 가능한 경우 Orchestrator에서 여러 이벤트에 대해 정책을트리거할 수 있도록 변경되는 개체에 트리거를 사용할 수 있어야 합니다. 예를 들어 새 가상 시스템이 추가되거나, 전원이 켜지거나, 전원이 꺼진 경우 등을 확인하기 위해Orchestrator에서는 vCenter 플러그인에서 Datacenter개체에 대한 트리거 또는 이벤트를 모니터링할 수 있습니다.

개체 속성 다른 플러그인에 상주하는 개체는 플러그인 개체 간에 쉽게변환하기 위한 속성을 가지고 있어야 합니다. 예를 들어 가상시스템 개체에는 moref(관리 개체 참조 ID)가 있어야 합니다.

1장 워크플로 개발

VMware, Inc. 89

Page 90: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑51. 플러그인 구현의 유용한 작업 방식 (계속)

구성 요소 항목 설명

세션 관리자 다른 세션이 있을 수 있는 원격 서버에 연결하는 경우 플러그인에서 공유 세션 및 사용자별 세션을 구현해야 합니다.

트리거 트리거 모든 장기 실행 작업 및 차단 메서드는 반환되는 작업과 비동기식으로 시작하고 완료 시 트리거 이벤트를 생성할 수 있어야 합니다.

열거형 열거형 지정된 유형에 대한 열거형에는 열거된 여러 값에서 선택할수 있는 인벤토리 개체가 있어야 합니다.

로깅 로그 메서드는 다양한 로그 수준을 구현해야 합니다.

버전 관리 플러그인 버전 플러그인 버전은 표준을 따라야 하며, 플러그인 업데이트와함께 업데이트되어야 합니다.

API 설명서 메서드 API 설명서에 설명된 메서드는 개체에 대한 no xyzmethod / property 예외를 발생시켜서는 안 됩니다. 그 대신, 사용 가능한 속성이 없는 경우 메서드는 null을 반환하고세부 정보와 함께 문서화되어야 합니다.

vso.xml 모든 개체, 메서드 및 속성은 vso.xml에 문서화되어야 합니다.

플러그인 사용자 인터페이스 문자열 및 API 설명서 작성

Orchestrator 플러그인 및 관련 API 설명서에 대한 UI(사용자 인터페이스) 문자열을 작성하는 경우 허용되는 스타일 및 형식 규칙을 따라야 합니다.

일반 권장 사항

n 플러그인에 포함된 VMware 제품의 정식 이름을 사용합니다. 예를 들어 다음 제품에 대한 정식 이름 및 VMware 용어를 사용합니다.

올바른 용어 사용 금지

vCenter Server VC 또는 vCenter

vCloud Director vCloud

n 마침표를 사용하여 모든 워크플로 설명을 종료합니다. 예를 들어 Creates a new Organization.은 워크플로 설명입니다.

n 맞춤법 검사기가 있는 텍스트 편집기를 사용하여 설명을 작성한 다음 플러그인으로 이동합니다.

n 플러그인 이름이 해당 플러그인과 연결되는 승인된 타사 제품 이름과 정확히 일치하는지 확인합니다.

워크플로 및 작업

n 정보를 제공하는 설명을 작성합니다. 대부분의 작업 및 워크플로에는 한두 문장이면 충분합니다.

n 상위 수준 워크플로는 보다 광범위한 설명 및 주석을 포함할 수 있습니다.

n 동사로 설명을 시작합니다(예: Creates…). 자체 참조 언어(예: This workflow creates)를 사용하지 마십시오.

n 문장을 완성하는 설명 끝에 마침표를 넣습니다.

n 워크플로 또는 작업의 구현 방법 대신 해당 기능을 설명합니다.

n 워크플로 또는 작업은 일반적으로 폴더 및 패키지에 포함됩니다. 이러한 폴더 및 패키지에 대한 간단한 설명도 포함합니다. 예를 들어 워크플로 폴더에 대해 Set of workflows related to vApp Templatemanagement와 유사한 설명을 작성할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

90 VMware, Inc.

Page 91: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로 및 작업 매개 변수

n 설명이 포함된 명사 구(예: Name of)로 워크플로 및 작업 설명을 시작합니다. It's the name of와 같은구를 사용하지 마십시오.

n 매개 변수 및 작업 설명의 끝에 마침표를 넣지 마십시오. 이러한 설명은 완성된 문장이 아닙니다.

n 워크플로의 입력 매개 변수는 프레젠테이션 보기에서 적절한 이름으로 레이블을 지정해야 합니다. 대부분의 경우 관련 입력을 표시 그룹으로 결합할 수 있습니다. 예를 들어 Name of theOrganization과 Full name of the Organization이라는 레이블을 지닌 두 개의 입력을 사용하는 대신, Organization이라는 레이블의 표시 그룹을 만들고 Organization 그룹에 Name 및Full name 입력을 배치할 수 있습니다.

n 단계 및 표시 그룹의 경우 워크플로 프레젠테이션에 표시되는 설명이나 주석도 추가합니다.

플러그인 API

n API 설명서는 vso.xml 파일 및 Java 소스 파일에 있는 모든 설명서를 참조합니다.

n vso.xml 파일의 경우 워크플로 및 작업에 사용하는 해당 메서드와 함께 찾기 개체와 스크립팅 개체의설명에 동일한 규칙을 사용합니다. 개체 특성 및 메서드 매개 변수의 설명에 워크플로 및 작업 매개변수와 동일한 규칙을 사용합니다.

n vso.xml 파일에서는 특수 문자를 피하고 <![CDATA[insert your description here!]]> 태그 내에 설명을 포함합니다.

n Java 소스 파일에 표준 Javadoc 스타일을 사용합니다.

워크플로를 시작할 때 사용자로부터 입력 매개 변수 가져오기워크플로에 입력 매개 변수가 필요하면 실행될 때 사용자가 필수 입력 매개 변수를 입력하는 대화상자가열립니다. 워크플로 편집기의 프레젠테이션 탭에서 이 대화상자의 내용 및 레이아웃 또는 프레젠테이션을구성할 수 있습니다.

프레젠테이션 탭에서 매개 변수를 구성한 방법은 워크플로가 실행될 때 입력 매개 변수 대화상자로 변환됩니다.

프레젠테이션 탭을 사용하여 사용자가 입력 매개 변수를 입력할 때 도움이 되는 입력 매개 변수 설명을 추가할 수도 있습니다. 또한 사용자가 입력하는 매개 변수를 제한하려면 프레젠테이션 탭에서 매개 변수의속성과 제약 조건을 설정할 수도 있습니다. 사용자가 입력한 매개 변수가 프레젠테이션 탭에 설정한 제약조건을 충족하지 못하면 워크플로가 실행되지 않습니다.

n 프레젠테이션 탭에서 입력 매개 변수 대화 상자 생성(91 페이지)

워크플로 편집기의 프레젠테이션 탭에서 사용자가 워크플로를 실행할 때 입력 매개 변수를 제공하는대화 상자의 레이아웃을 정의합니다.

n 매개 변수 속성 설정(93 페이지)

Orchestrator에서 사용자는 워크플로를 실행할 때 제공하는 입력 매개 변수 값이 적합하도록 속성을 정의할 수 있습니다. 정의한 매개 변수 속성은 사용자가 제공하는 입력 매개 변수의 유형과 값을제한합니다.

프레젠테이션 탭에서 입력 매개 변수 대화 상자 생성

워크플로 편집기의 프레젠테이션 탭에서 사용자가 워크플로를 실행할 때 입력 매개 변수를 제공하는 대화상자의 레이아웃을 정의합니다.

프레젠테이션 탭에서 입력 매개 변수를 범주로 그룹화하고 이러한 범주가 입력 매개 변수 대화 상자에 표시되는 순서를 정의할 수 있습니다.

1장 워크플로 개발

VMware, Inc. 91

Page 92: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

프레젠테이션 설명

입력 매개 변수 대화 상자에 표시되는 각 매개 변수 또는 매개 변수 그룹에 대한 연관된 설명을 추가할 수있습니다. 이러한 설명은 사용자가 올바른 입력 매개 변수를 제공하도록 도와주는 정보를 제공합니다.HTML 형식을 사용하여 설명 텍스트의 레이아웃을 개선할 수 있습니다.

프레젠테이션 입력 단계 정의

기본적으로 입력 매개 변수 대화 상자에는 필요한 모든 입력 매개 변수가 단일 목록으로 나열됩니다. 사용자가 입력 매개 변수를 쉽게 입력할 수 있도록 프레젠테이션 탭에서 입력 단계라는 노드를 정의할 수 있습니다. 입력 단계는 유사한 속성의 입력 매개 변수를 그룹화합니다. 입력 단계 아래의 입력 매개 변수는 워크플로가 실행될 때 입력 매개 변수 대화 상자의 개별 섹션에 표시됩니다.

프레젠테이션 표시 그룹 정의

각 입력 단계에는 표시 그룹이라는 자체 노드가 있을 수 있습니다. 표시 그룹은 매개 변수 입력 텍스트 상자가 입력 매개 변수 대화 상자의 해당 섹션에 표시되는 순서를 정의합니다. 입력 단계와 독립적으로 표시그룹을 정의할 수 있습니다.

입력 매개 변수 대화 상자의 프레젠테이션 생성

워크플로 편집기의 프레젠테이션 탭에서 사용자가 워크플로를 실행할 때 입력 매개 변수를 제공하는 대화상자의 프레젠테이션을 생성합니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 워크플로에 정의된 입력 매개 변수 목록이 있는지 확인합니다.

프로시저

1 워크플로 편집기에서 프레젠테이션 탭을 클릭합니다.

기본적으로 모든 워크플로 매개 변수는 기본 프레젠테이션 노드 아래에 생성된 순서대로 표시됩니다.

2 프레젠테이션 노드를 마우스 오른쪽 버튼으로 클릭하고 새 단계 생성을 선택합니다.

새 단계 노드가 프레젠테이션 노드 아래에 나타납니다.

3 단계에 대한 적절한 이름을 제공하고 Enter 키를 누릅니다.

이 이름은 워크플로가 실행될 때 입력 매개 변수 대화 상자에 섹션 헤더로 표시됩니다.

4 입력 단계를 클릭하고 프레젠테이션 탭의 아래쪽에 있는 일반 탭에 설명을 추가합니다.

이 설명은 사용자가 올바른 입력 매개 변수를 제공하도록 도와주는 정보를 제공하는 입력 매개 변수대화 상자에 표시됩니다. HTML 형식을 사용하여 설명 텍스트의 레이아웃을 개선할 수 있습니다.

5 생성한 입력 단계를 마우스 오른쪽 버튼으로 클릭하고 표시 그룹 생성을 선택합니다.

새 그룹 노드가 입력 단계 노드 아래에 나타납니다.

6 표시 그룹에 대한 적절한 이름을 제공하고 Enter 키를 누릅니다.

이 이름은 워크플로가 실행될 때 입력 매개 변수 대화 상자에 하위 섹션 헤더로 표시됩니다.

7 표시 그룹을 클릭하고 프레젠테이션 탭의 아래쪽에 있는 일반 탭에 설명을 추가합니다.

이 설명은 입력 매개 변수 대화 상자에 표시됩니다. HTML 형식을 사용하여 설명 텍스트의 레이아웃을 개선할 수 있습니다. OGNL 문(예: ${#param})을 사용하여 그룹 설명에 매개 변수 값을 추가할 수있습니다.

8 워크플로가 실행될 때 입력 매개 변수 대화 상자에 표시되는 모든 입력 단계 및 표시 그룹을 생성할때까지 위 단계를 반복합니다.

VMware vRealize Orchestrator를 사용한 개발

92 VMware, Inc.

Page 93: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

9 프레젠테이션 노드에서 선택한 단계 및 그룹으로 매개 변수를 끌어옵니다.

워크플로가 실행될 때 사용자가 입력 매개 변수 값을 제공하는 입력 매개 변수 대화 상자의 레이아웃을 생성했습니다.

후속 작업

매개 변수 속성을 설정해야 합니다.

매개 변수 속성 설정

Orchestrator에서 사용자는 워크플로를 실행할 때 제공하는 입력 매개 변수 값이 적합하도록 속성을 정의할 수 있습니다. 정의한 매개 변수 속성은 사용자가 제공하는 입력 매개 변수의 유형과 값을 제한합니다.

모든 매개 변수는 여러 속성을 가질 수 있습니다. 입력 매개 변수 속성은 프레젠테이션 탭의 지정된 매개변수에 대해 속성 탭에 정의합니다.

매개 변수 속성은 입력 매개 변수를 검증하고 입력 매개 변수 대화상자에 텍스트 상자가 나타나는 방식을수정합니다. 일부 매개 변수 속성은 매개 변수 간 종속성을 생성할 수 있습니다.

정적 및 동적 매개 변수 속성 값

매개 변수 속성 값은 정적이거나 동적일 수 있습니다. 정적 속성 값은 상수로 유지됩니다. 속성 값을 정적으로 설정한 경우 워크플로 편집기가 매개 변수 유형에 따라 생성하는 목록에서 속성의 값을 설정 또는 선택합니다.

동적 속성 값은 다른 매개 변수나 특성 값에 따라 다릅니다. OGNL(object graph navigationlanguage) 표현식을 사용해 동적 속성이 값을 가져오는 함수를 정의합니다. 동적 매개 변수 속성 값이다른 매개 변수 속성 값과 다른 매개 변수 속성 값의 변화에 따라 다른 경우 OGNL 표현식은 동적 속성값을 다시 계산하여 변경합니다.

매개 변수 속성 설정

워크플로를 시작하면 사용자가 제공한 입력 매개 변수 값을 사용자가 설정한 매개 변수 속성에 대해 검증합니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 워크플로에 정의된 입력 매개 변수 목록이 있는지 확인합니다.

프로시저

1 워크플로 편집기에서 프레젠테이션 탭을 클릭합니다.

2 프레젠테이션 탭에서 매개 변수를 클릭합니다.

매개 변수의 일반 및 속성 탭이 프레젠테이션 탭의 맨 아래에 나타납니다.

3 매개 변수의 속성 탭을 클릭합니다.

4 속성 탭을 마우스 오른쪽 버튼으로 클릭하고 속성 추가를 선택합니다.

대화상자가 열리며 선택한 유형의 매개 변수에 대해 사용 가능한 속성 목록이 제공됩니다.

5 대화상자에 표시된 목록에서 속성을 선택하고 확인을 클릭합니다.

속성이 속성 탭에 나타납니다.

1장 워크플로 개발

VMware, Inc. 93

Page 94: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

6 값에서 드롭다운 메뉴의 해당 기호를 선택해 속성 값을 정적 또는 동적으로 설정합니다.

옵션 설명

정적 속성

동적 속성

7 속성 값을 정적으로 설정하면 속성을 설정하는 매개 변수 유형에 따라 속성 값을 선택합니다.

8 속성 값을 동적으로 설정하면 OGNL 표현식을 사용해 매개 변수 속성 값을 가져오는 함수를 정의합니다.

워크플로 편집기는 OGNL 표현식을 작성할 때 도움이 됩니다.

a 아이콘을 클릭해 이 표현식에서 호출할 수 있는 워크플로에 정의된 모든 특성과 매개 변수의

목록을 가져옵니다.

b 아이콘을 클릭해 속성을 정의하는 유형의 출력 매개 변수를 반환하는 Orchestrator API의

모든 작업 목록을 가져옵니다.

제안된 매개 변수 및 작업 목록의 항목을 클릭하면 OGNL 표현식에 추가됩니다.

9 워크플로 편집기 맨 아래의 저장을 클릭합니다.

워크플로의 입력 매개 변수 속성을 정의했습니다.

후속 작업

워크플로를 검증하고 디버그하십시오.

워크플로 입력 매개 변수 속성

매개 변수 속성을 설정해 사용자가 워크플로를 실행할 때 입력하는 입력 매개 변수를 제한할 수 있습니다.

서로 다른 매개 변수 유형은 서로 다른 속성을 가질 수 있습니다.

표 1‑52. 워크플로 입력 매개 변수 속성

매개 변수 속성 매개 변수 유형 설명

최대 문자열 길이 문자열 매개 변수의 최대 길이를 설정합니다.

최소 문자열 길이 문자열 매개 변수의 최소 길이를 설정합니다.

일치하는 정규식 문자열 정규식을 사용해 입력을 검증합니다.

최대 숫자 값 숫자 매개 변수의 최댓값을 설정합니다.

최소 숫자 값 숫자 매개 변수의 최솟값을 설정합니다.

숫자 형식 숫자 매개 변수의 입력 형식입니다.

필수 입력 모든 단순 형식 매개 변수를 필수 항목으로 설정합니다.

미리 정의된 답 모든 단순 형식 속성에 사용할 수 있는 값의 목록을단순 형식의 어레이로 미리 정의합니다. 어레이를 사용자가 직접 정의하거나 속성이 적절한 유형의 개체 어레이를 반환하는 작업을 호출합니다.

VMware vRealize Orchestrator를 사용한 개발

94 VMware, Inc.

Page 95: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑52. 워크플로 입력 매개 변수 속성 (계속)

매개 변수 속성 매개 변수 유형 설명

미리 정의된 요소의 목록 모든 단순 또는 복합 형식 속성에 사용할 수 있는 값의 목록을단순 또는 복합 형식의 어레이로 미리정의합니다. 적절한 유형의 개체 어레이를 반환하는 작업을 호출합니다.

매개 변수 입력 표시 모든 단순 또는 복합 형식 이전 부울 매개 변수의 값에 따라 프레젠테이션 대화상자에 매개 변수 텍스트 상자를 표시하거나 숨깁니다.

매개 변수 입력 숨기기 모든 단순 또는 복합 형식 매개 변수 입력 표시와 유사하나 이전부울 매개 변수의 음수 값을 가집니다.

일치하는 정규식 플러그인에서 가져온 모든 매개 변수유형

입력 매개 변수는 지정된 표현식과 일치합니다.

인벤토리에 표시 플러그인에서 가져온 모든 매개 변수유형

설정하면 인벤토리 보기에서 마우스오른쪽 버튼을 클릭하고 워크플로 실행을 선택해 이 유형의 모든 개체에서현재 워크플로를 실행할 수 있습니다.

선택기에 표시할 루트 개체를 지정합니다. 루트 개체는 매개 변수 또는 특성에서 제공됩니다.

플러그인에서 가져온 모든 매개 변수유형

이 매개 변수의 선택기가 계층형 목록선택기이면 루트 개체를 지정합니다.

다음으로 선택 플러그인에서 가져온 모든 매개 변수유형

목록이나 계층형 목록 선택기를 사용해 매개 변수를 선택합니다.

기본값 모든 단순 또는 복합 형식 이 매개 변수의 기본값.

사용자 지정 유효성 검사 OGNL 스크립팅 가능한 유효성 검사

OGNL 표현식이 문자열을 반환하면유효성 검사가 오류 결과 텍스트로 이문자열을 표시합니다.

데이터 바인딩 모든 단순 또는 복합 형식 다른 매개 변수에 이미 정의한 속성에바인딩합니다.

권한이 있는 사용자만 플러그인에서 가져온 모든 매개 변수유형

권한이 있는 사용자만 이 매개 변수에액세스할 수 있습니다.

여러 줄 텍스트 입력 모든 단순 또는 복합 형식 사용자가 입력 매개 변수 대화상자에여러 줄의 텍스트를 입력할 수 있습니다.

OGNL 표현식에 미리 정의된 상수 값

동적 매개 변수 속성 값을 가져오기 위해 OGNL 표현식을 만들 때 미리 정의된 상수를 사용할 수 있습니다.

Orchestrator는 OGNL 표현식에서 사용할 다음 상수를 정의합니다.

표 1‑53. 미리 정의된 OGNL 상수 값

상수 값 설명

${#__current} 사용자 지정 유효성 검사 속성 또는 일치하는 표현식 속성의 현재 값

${#__username} 워크플로를 시작한 사용자의 사용자 이름

${#__userdisplayname} 워크플로를 시작한 사용자의 표시 이름

${#__serverurl} 사용자가 워크플로를 시작하는 서버의 IP 주소를 포함하는 URL. URL은 서버 IP 주소와 조회 포트로 구성됩니다.{ServerIP}:{lookupPort}

${#__datetime} 현재 날짜와 시간

1장 워크플로 개발

VMware, Inc. 95

Page 96: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑53. 미리 정의된 OGNL 상수 값 (계속)

상수 값 설명

${#__date} 현재 날짜, 00:00:00으로 설정된 시간

${#__timezone} 현재 시간대

(선택 사항) 워크플로가 실행되는 동안 사용자 상호 작용 요청워크플로가 실행되는 동안 외부 소스의 추가 입력 매개 변수가 필요한 경우가 있을 수 있습니다. 이러한입력 매개 변수는 다른 애플리케이션 또는 워크플로에서 가져오거나 사용자가 직접 제공할 수 있습니다.

예를 들어 워크플로가 실행되는 동안 특정 이벤트가 발생한 경우 워크플로에서 수행할 작업 과정을 결정하기 위해 사용자 상호 작용을 요청할 수 있습니다. 이 경우 사용자가 정보 요청에 응답하거나 대기 시간이 가능한 시간 초과 기간을 초과할 때까지 워크플로가 대기합니다. 대기 시간이 시간 초과 기간을 초과한경우 워크플로는 예외를 반환합니다.

사용자 상호 작용에 대한 기본 특성은 security.group 및 timeout.date입니다. security.group 특성을 지정된LDAP 사용자 그룹으로 설정하면 사용자 상호 작용 요청에 응답할 수 있는 권한이 해당 사용자 그룹의 구성원으로 제한됩니다.

timeout.date 특성을 설정할 때는 워크플로에서 사용자의 정보 제공을 대기할 시간 및 날짜를 설정합니다.절대 날짜를 설정하거나, 현재 시간을 기준으로 시간을 계산하는 스크립팅된 워크플로 요소를 만들 수 있습니다.

프로시저

1 워크플로에 사용자 상호 작용 추가(97 페이지)

사용자 상호 작용 스키마 요소를 워크플로에 추가하여 워크플로를 실행하는 동안 사용자에게 입력매개 변수를 요청합니다. 워크플로가 사용자 상호 작용 요소에 도달하면 실행을 일시 중단하고 사용자가 필요한 데이터를 제공할 때까지 대기합니다.

2 사용자 상호 작용 security.group 특성 설정(97 페이지)

사용자 상호 작용 요소의 security.group 특성은 사용자 상호 작용에 응답할 권한이 있는 사용자 또는사용자 그룹을 설정합니다.

3 절대 날짜로 timeout.date 특성 설정(98 페이지)

사용자 상호 작용에 대한 timeout.date 특성을 설정하여 사용자가 사용자 상호 작용에 응답할 때까지워크플로가 대기하는 기간을 설정할 수 있습니다.

4 사용자 상호 작용에 대한 상대 시간 초과 계산(99 페이지)

Date 개체에서 사용자 상호 작용이 시간 초과되는 상대 시간 및 날짜를 계산할 수 있습니다.

5 상대 날짜로 timeout.date 특성 설정(100 페이지)

사용자 상호 작용 요소의 timeout.date 특성을 Date 개체에 바인딩하여 상대 시간 및 날짜로 설정할수 있습니다. 스크립팅된 함수에서 개체를 정의합니다.

6 사용자 상호 작용에 대한 외부 입력 정의(101 페이지)

워크플로가 실행되는 동안 사용자가 사용자 상호 작용의 입력 매개 변수로 제공해야 하는 정보를 지정합니다.

7 사용자 상호 작용 예외 동작 정의(101 페이지)

사용자가 시간 초과 기간 내에 입력 매개 변수를 제공하지 않으면 사용자 상호 작용에서 예외가 반환됩니다. 스크립팅된 함수에서 예외 동작을 정의할 수 있습니다.

8 사용자 상호 작용에 대한 입력 매개 변수 대화 상자 생성(103 페이지)

사용자는 워크플로를 처음 시작할 때 입력 매개 변수를 제공한 것과 동일한 방식으로 워크플로가 실행되는 동안 입력 매개 변수 대화 상자에서 입력 매개 변수를 제공합니다.

VMware vRealize Orchestrator를 사용한 개발

96 VMware, Inc.

Page 97: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

9 사용자 상호 작용 요청에 응답(104 페이지)

실행되는 동안 사용자 상호 작용이 필요한 워크플로는 사용자가 필요한 정보를 제공하거나 시간이초과될 때까지 실행을 일시 중단합니다.

워크플로에 사용자 상호 작용 추가

사용자 상호 작용 스키마 요소를 워크플로에 추가하여 워크플로를 실행하는 동안 사용자에게 입력 매개변수를 요청합니다. 워크플로가 사용자 상호 작용 요소에 도달하면 실행을 일시 중단하고 사용자가 필요한 데이터를 제공할 때까지 대기합니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 사용자 상호 작용 요소를 워크플로 스키마의 적절한 위치로 끌어옵니다.

2 사용자 상호 작용 요소의 편집 아이콘( )을 클릭합니다.

3 정보 탭에서 사용자 상호 작용에 대한 이름 및 설명을 제공하고 닫기를 클릭합니다.

4 저장을 클릭합니다.

워크플로에 사용자 상호 작용 요소를 추가했습니다. 워크플로가 이 요소에 도달하면 실행을 계속하기 전에 사용자의 정보를 기다립니다.

후속 작업

사용자 상호 작용의 security.group 특성을 설정하여 사용자 상호 작용에 응답할 권한을 사용자 또는 사용자 그룹으로 제한합니다. “사용자 상호 작용 security.group 특성 설정,”(97 페이지) 항목을 참조하십시오.

사용자 상호 작용 security.group 특성 설정

사용자 상호 작용 요소의 security.group 특성은 사용자 상호 작용에 응답할 권한이 있는 사용자 또는 사용자 그룹을 설정합니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소 및 사용자 상호 작용을 워크플로 스키마에 추가합니다.

n 사용자 상호 작용 요청에 응답할 LDAP 사용자 그룹을 식별합니다.

프로시저

1 워크플로 스키마에서 사용자 상호 작용 요소의 편집 아이콘( )을 클릭합니다.

2 사용자 상호 작용에 대한 특성 탭을 클릭합니다.

3 security.group 소스 매개 변수에 대해 설정 안 함을 클릭하여 사용자 상호 작용에 응답할 수 있는 사용자를 설정합니다.

4 (선택 사항) 모든 사용자가 사용자 상호 작용 요청에 응답할 수 있도록 허용하려면 NULL을 선택합니다.

1장 워크플로 개발

VMware, Inc. 97

Page 98: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 응답 권한을 특정 사용자 또는 사용자 그룹으로 제한하려면 워크플로에서 매개 변수/특성 생성을 클릭합니다.

매개 변수 정보 대화 상자가 열립니다.

6 매개 변수 이름을 지정합니다.

7 같은 이름으로 워크플로 특성 생성을 선택하여 워크플로에서 LdapGroup 특성을 만듭니다.

8 매개 변수 값으로 설정 안 함을 클릭하여 LdapGroup 선택 상자를 엽니다.

9 필터 텍스트 상자에 LDAP 사용자 그룹의 이름을 입력합니다.

10 목록에서 LDAP 사용자 그룹을 선택하고 선택을 클릭합니다.

예를 들어 Administrators 그룹을 선택하면 이 그룹의 구성원만 사용자 상호 작용에 대한 이 요청에 응답할 수 있습니다.

사용자 상호 작용 요청에 응답할 수 있는 권한을 제한했습니다.

11 확인을 클릭하여 매개 변수 정보 대화 상자를 닫습니다.

사용자 상호 작용에 대한 security.group 특성을 설정했습니다.

후속 작업

timer.date 특성을 설정하여 사용자 상호 작용에 대한 시간 초과 기간을 설정합니다.

n 시간 초과를 절대 날짜 및 시간으로 설정하려면 “절대 날짜로 timeout.date 특성 설정,”(98 페이지) 항목을 참조하십시오.

n 현재 날짜 및 시간을 기준으로 시간 초과를 계산하는 함수를 만들려면 “사용자 상호 작용에 대한 상대 시간 초과 계산,”(99 페이지) 항목을 참조하십시오.

절대 날짜로 timeout.date 특성 설정

사용자 상호 작용에 대한 timeout.date 특성을 설정하여 사용자가 사용자 상호 작용에 응답할 때까지 워크플로가 대기하는 기간을 설정할 수 있습니다.

Date 개체에서 절대 시간 및 날짜를 설정할 수 있습니다. 지정된 날짜의 시간이 도래하면 사용자 상호 작용을 대기 중인 워크플로가 시간 초과되고 Failed 상태로 종료됩니다. 예를 들어 2월 12일 정오에 시간초과되도록 사용자 상호 작용을 설정할 수 있습니다. 현재 시간 및 날짜를 기준으로 시간 초과를 계산하려면 “사용자 상호 작용에 대한 상대 시간 초과 계산,”(99 페이지) 항목을 참조하십시오.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 사용자 상호 작용 요소를 워크플로 스키마에 추가합니다.

n 사용자 상호 작용에 대한 security.group 특성을 설정합니다.

프로시저

1 워크플로 스키마에서 사용자 상호 작용 요소의 편집 아이콘( )을 클릭합니다.

2 사용자 상호 작용에 대한 특성 탭을 클릭합니다.

3 timeout.date 소스 매개 변수에 대해 설정 안 함을 클릭하여 시간 초과 매개 변수 값을 설정합니다.

4 (선택 사항) 사용자가 사용자 상호 작용에 응답할 때까지 워크플로가 무기한 대기하도록 설정하려면NULL을 선택합니다.

5 워크플로에서 매개 변수/특성 생성을 클릭하여 시간 초과 기간 후 실패하도록 워크플로를 설정합니다.

매개 변수 정보 대화 상자가 열립니다.

VMware vRealize Orchestrator를 사용한 개발

98 VMware, Inc.

Page 99: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

6 매개 변수 이름을 지정합니다.

7 같은 이름으로 워크플로 특성 생성을 선택하여 워크플로에서 Date 특성을 만듭니다.

8 매개 변수 값으로 설정 안 함을 클릭합니다.

9 달력을 사용하여 워크플로가 사용자의 응답을 대기하는 절대 날짜 및 시간을 선택합니다.

10 확인을 클릭하여 달력을 닫습니다.

11 확인을 클릭하여 매개 변수 정보 대화 상자를 닫습니다.

timeout.date 특성을 절대 날짜로 설정했습니다. 이 시간 및 날짜 이전에 사용자가 사용자 상호 작용에 응답하지 않으면 워크플로가 시간 초과됩니다.

후속 작업

사용자의 사용자 상호 작용에 필요한 외부 입력 매개 변수를 정의합니다. “사용자 상호 작용에 대한 외부입력 정의,”(101 페이지) 항목을 참조하십시오.

사용자 상호 작용에 대한 상대 시간 초과 계산

Date 개체에서 사용자 상호 작용이 시간 초과되는 상대 시간 및 날짜를 계산할 수 있습니다.

Date 개체에서 절대 시간 및 날짜를 설정할 수 있습니다. 지정된 날짜의 시간이 도래하면 사용자 상호 작용에 대한 요청이 시간 초과됩니다. 또는 사용자가 정의한 함수에 따라 상대 Date 개체를 계산하고 생성하는 워크플로 요소를 만들 수 있습니다. 예를 들어 현재 시간에 24시간을 추가하는 상대 Date 개체를 만들수 있습니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 사용자 상호 작용 요소를 워크플로 스키마에 추가합니다.

n 사용자 상호 작용에 대한 security.group 특성을 설정합니다.

프로시저

1 스크립팅 가능한 작업 요소를 범용 메뉴에서 워크플로의 스키마로, timeout.date 특성에 대해 상대Date 개체를 요구하는 요소 앞에 끌어옵니다.

2 워크플로 스키마에서 스크립팅 가능 작업 요소의 편집 아이콘( )을 클릭합니다.

3 정보 속성 탭에 스크립팅된 워크플로 요소의 이름과 설명을 입력합니다.

4 출력 속성 탭을 클릭한 다음 워크플로 매개 변수/특성에 바인딩 아이콘( )을 클릭합니다.

5 워크플로에서 매개 변수/특성 생성을 클릭하여 워크플로 특성을 생성합니다.

a timerDate 특성의 이름을 지정합니다.

b 특성 유형 목록에서 Date를 선택합니다.

c 같은 이름으로 워크플로 특성 생성을 선택합니다.

d 스크립팅된 함수가 특성 값을 제공하므로 이 값은 설정 안 함으로 둡니다.

e 확인을 클릭합니다.

6 스크립팅된 워크플로 요소에 대한 스크립팅 탭을 클릭합니다.

1장 워크플로 개발

VMware, Inc. 99

Page 100: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

7 스크립팅 탭의 스크립팅 패드에서 이름이 timerDate인 Date 개체를 계산하고 생성하는 함수를 정의합니다.

예를 들어 시간 초과 기간이 밀리초 단위의 상대적 지연인 다음 JavaScript 함수를 구현해 Date 개체를 생성할 수 있습니다.

timerDate = new Date();

System.log( "Current date : '" + timerDate + "'" );

timerDate.setTime( timerDate.getTime() + (86400 * 1000) );

System.log( "Timer will expire at '" + timerDate + "'" );

앞의 JavaScript 함수 예제는 getTime 메서드를 사용해 현재 날짜와 시간을 가져오고 86,400,000밀리초 또는 24시간을 더하는 Date 개체를 정의합니다. 스크립팅 가능한 작업 요소는 출력 매개 변수로 이 값을 생성합니다.

8 닫기를 클릭합니다.

9 저장을 클릭합니다.

현재 시간 및 날짜에 상대적인 시간 및 날짜를 계산하고 Date 개체를 생성하는 함수를 만들었습니다. 사용자 상호 작용 요소는 이 Date 개체를 입력 매개 변수로 수신하여 사용자의 입력을 기다리는 시간 초과 기간을 설정할 수 있습니다. 워크플로가 사용자 상호 작용 요소에 도달하면 실행을 일시 중단하고 사용자가필요한 정보를 제공할 때까지 대기하거나 시간 초과되기 전 24시간 동안 대기합니다.

후속 작업

Date 개체를 사용자 상호 작용 요소의 timeout.date 매개 변수에 바인딩해야 합니다. “상대 날짜로timeout.date 특성 설정,”(100 페이지) 항목을 참조하십시오.

상대 날짜로 timeout.date 특성 설정

사용자 상호 작용 요소의 timeout.date 특성을 Date 개체에 바인딩하여 상대 시간 및 날짜로 설정할 수 있습니다. 스크립팅된 함수에서 개체를 정의합니다.

스크립팅된 함수에서 상대 Date 개체를 만드는 경우 사용자 상호 작용의 timeout.date 특성을 이 Date 개체에 바인딩할 수 있습니다. 예를 들어 현재 시간에 24시간을 추가하는 timeout.date 특성을 Date 개체에 바인딩하면 사용자 상호 작용이 24시간 동안 대기한 후 시간 초과됩니다.

필수 조건

n Add a user interaction element to the workflow schema.

n Set the security.group attribute for the user interaction.

n 상대 시간 및 날짜를 계산하여 워크플로의 Date 개체에 캡슐화하는 스크립팅된 함수를 만듭니다. “사용자 상호 작용에 대한 상대 시간 초과 계산,”(99 페이지) 항목을 참조하십시오.

프로시저

1 워크플로 스키마에서 사용자 상호 작용 요소의 편집 아이콘( )을 클릭합니다.

2 사용자 상호 작용에 대한 특성 탭을 클릭합니다.

3 timeout.date 소스 매개 변수에 대해 설정 안 함을 클릭하여 시간 초과 매개 변수 값을 설정합니다.

4 정의한 상대 시간 및 날짜를 스크립팅된 함수에 캡슐화하는 Date 개체를 선택하고 선택을 클릭합니다.

timeout.date 특성을 스크립팅된 함수에서 계산하는 상대 날짜 및 시간으로 설정했습니다.

후속 작업

사용자의 사용자 상호 작용에 필요한 외부 입력 매개 변수를 정의합니다. “사용자 상호 작용에 대한 외부입력 정의,”(101 페이지) 항목을 참조하십시오.

VMware vRealize Orchestrator를 사용한 개발

100 VMware, Inc.

Page 101: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

사용자 상호 작용에 대한 외부 입력 정의

워크플로가 실행되는 동안 사용자가 사용자 상호 작용의 입력 매개 변수로 제공해야 하는 정보를 지정합니다.

사용자 상호 작용 요소에 도달한 경우 워크플로는 사용자가 사용자 상호 작용에 필요한 정보를 해당 입력매개 변수로 제공할 때까지 대기합니다.

필수 조건

n 사용자 상호 작용 요소를 워크플로 스키마에 추가합니다.

n Set the security.group attribute for the user interaction.

n 사용자 상호 작용에 대한 timer.date 특성을 설정합니다.

프로시저

1 워크플로 스키마에서 사용자 상호 작용 요소의 편집 아이콘( )을 클릭합니다.

2 외부 입력 탭을 클릭합니다.

3 워크플로 매개 변수/특성에 바인딩 아이콘( )을 클릭하여 사용자가 사용자 상호 작용에 제공해야하는 매개 변수를 정의합니다.

4 (선택 사항) 워크플로의 입력 매개 변수를 이미 정의한 경우 제시된 목록에서 매개 변수를 선택합니다.

5 워크플로에서 매개 변수/특성 생성을 클릭하여 사용자가 제공하는 입력 매개 변수에 바인딩할 워크플로 특성을 만듭니다.

6 매개 변수에 적절한 이름을 지정합니다.

7 필터 상자에서 개체 유형을 검색하여 유형 목록에서 입력 매개 변수 유형을 선택합니다.

예를 들어 사용자 상호 작용에서 사용자가 입력 매개 변수로 가상 시스템을 제공해야 하는 경우VC:VirtualMachine을 선택합니다.

8 같은 이름으로 워크플로 특성 생성을 선택하여 사용자가 제공하는 입력 매개 변수를 워크플로의 새특성에 바인딩합니다.

9 입력 매개 변수 값을 설정 안 함으로 그대로 둡니다.

사용자는 워크플로가 실행되는 동안 사용자 상호 작용에 응답할 때 이 값을 제공합니다.

10 확인을 클릭하여 매개 변수 정보 대화 상자를 닫습니다.

사용자가 사용자 상호 작용 중에 제공하는 입력 매개 변수를 정의했습니다.

후속 작업

사용자 상호 작용에서 오류가 발생한 경우의 예외 동작을 정의합니다. “사용자 상호 작용 예외 동작 정의,”(101 페이지) 항목을 참조하십시오.

사용자 상호 작용 예외 동작 정의

사용자가 시간 초과 기간 내에 입력 매개 변수를 제공하지 않으면 사용자 상호 작용에서 예외가 반환됩니다. 스크립팅된 함수에서 예외 동작을 정의할 수 있습니다.

사용자 상호 작용이 시간 초과된 경우에 수행할 워크플로 작업을 정의하지 않으면 워크플로가 Failed 상태로 종료됩니다. 예외 동작을 정의하는 것은 워크플로 개발의 모범 사례입니다.

1장 워크플로 개발

VMware, Inc. 101

Page 102: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

필수 조건

n 사용자 상호 작용 요소를 워크플로 스키마에 추가합니다.

n 사용자 상호 작용에 대한 security.group 및 timer.date 특성을 설정합니다.

n 사용자 상호 작용에 대한 외부 입력 매개 변수를 정의합니다.

프로시저

1 워크플로 스키마에서 사용자 상호 작용 요소의 편집 아이콘( )을 클릭합니다.

2 예외 탭을 클릭합니다.

3 출력 예외 바인딩에 대해 설정 안 함을 클릭합니다.

4 워크플로에서 매개 변수/특성 생성을 클릭하여 사용자 상호 작용을 바인딩할 예외 특성을 만듭니다.

매개 변수 정보 대화 상자가 열립니다.

5 errorCode 특성을 생성합니다.

errorCode 특성에는 다음 기본 속성이 있습니다.

n 이름: errorCode

n 유형: 문자열

n 생성: 같은 이름으로 워크플로 특성 생성

n 값: 적절한 오류 메시지를 입력합니다.

6 확인을 클릭하여 매개 변수 정보 대화 상자를 닫습니다.

7 스크립팅 가능한 작업 요소를 워크플로 스키마의 사용자 상호 작용 요소로 끌어옵니다.

예외 링크를 나타내는 빨간색 파선 모양 화살표가 두 요소 사이에 표시됩니다. 스크립팅 가능한 작업요소는 사용자 상호 작용의 errorCode 특성에 자동으로 바인딩됩니다.

8 스크립팅 가능한 작업 요소를 두 번 클릭하고 적절한 이름을 제공합니다.

예를 들어 Log timeout을 입력합니다.

9 스크립팅 가능한 작업 요소의 스크립팅 탭에서 예외를 처리할 JavaScript 함수를 작성합니다.

예를 들어 Orchestrator 로그에 시간 초과를 기록하려면 다음 함수를 작성합니다.

System.log("No response from user. Timed out.");

10 예외를 처리하는 스크립팅 가능한 작업 요소를 워크플로에서 그 뒤에 오는 요소에 연결하고 바인딩합니다.

예를 들어 오류와 함께 워크플로를 종료하려면 스크립팅 가능한 작업 요소를 예외 발생 요소에 연결하고 바인딩합니다.

사용자 상호 작용이 시간 초과된 경우의 예외 동작을 정의했습니다.

후속 작업

사용자가 입력 매개 변수를 제공하는 대화 상자를 만듭니다. “사용자 상호 작용에 대한 입력 매개 변수대화 상자 생성,”(103 페이지) 항목을 참조하십시오.

VMware vRealize Orchestrator를 사용한 개발

102 VMware, Inc.

Page 103: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

사용자 상호 작용에 대한 입력 매개 변수 대화 상자 생성

사용자는 워크플로를 처음 시작할 때 입력 매개 변수를 제공한 것과 동일한 방식으로 워크플로가 실행되는 동안 입력 매개 변수 대화 상자에서 입력 매개 변수를 제공합니다.

전체 워크플로에 대한 프레젠테이션 탭이 아니라 사용자 상호 작용 요소의 프레젠테이션 탭에서 대화 상자의 레이아웃을 만듭니다. 전체 워크플로의 프레젠테이션 탭에서는 워크플로를 시작할 때 표시되는 입력매개 변수 대화 상자의 레이아웃을 생성합니다. 사용자 상호 작용 요소의 프레젠테이션 탭에서는 워크플로가 실행되는 동안 사용자 상호 작용 요소에 도달하면 열리는 입력 매개 변수 대화 상자의 레이아웃을 생성합니다.

필수 조건

n 사용자 상호 작용 요소를 워크플로 스키마에 추가합니다.

n 사용자 상호 작용에 대한 security.group 및 timer.date 특성을 설정합니다.

n 사용자 상호 작용에 대한 외부 입력 매개 변수를 정의합니다.

n 예외 동작을 정의합니다.

프로시저

1 워크플로 스키마에서 사용자 상호 작용 요소의 편집 아이콘( )을 클릭합니다.

2 사용자 상호 작용 요소의 프레젠테이션 탭을 클릭합니다.

프레젠테이션 탭에 사용자 상호 작용에 대해 만든 외부 입력 매개 변수가 표시됩니다.

3 (선택 사항) 프레젠테이션 탭에서 프레젠테이션 노드를 마우스 오른쪽 버튼으로 클릭하고 새 단계 생성을 선택합니다.

단계를 통해, 입력 매개 변수를 구성할 수 있는 상단 머리글 및 설명과 함께 대화 상자의 섹션을 만들수 있습니다.

4 (선택 사항) 프레젠테이션 탭에서 프레젠테이션 노드를 마우스 오른쪽 버튼으로 클릭하고 표시 그룹생성을 선택합니다.

표시 그룹을 통해, 입력 매개 변수가 단계에 표시되는 순서를 정렬하고 하위 머리글 및 지침을 대화상자에 추가할 수 있습니다.

5 목록에서 입력 매개 변수를 클릭하고 해당 매개 변수에 대한 일반 탭에서 입력 매개 변수의 설명을 추가합니다.

입력한 설명 텍스트는 입력 매개 변수 대화 상자에 레이블로 표시됩니다. 이 레이블은 사용자에게 사용자 상호 작용에 응답할 때 제공해야 하는 정보를 알려줍니다.

6 입력 매개 변수 속성을 정의합니다.

입력 매개 변수 속성을 통해, 사용자가 제공할 수 있는 입력 매개 변수 값을 선별하고 OGNL 표현식을 사용하여 매개 변수 값을 동적으로 확인할 수 있습니다.

7 저장 후 닫기를 클릭하여 워크플로 편집기를 닫습니다.

워크플로가 실행되는 동안 사용자가 사용자 상호 작용에 응답하기 위해 입력 매개 변수를 제공하는 입력매개 변수 대화 상자를 만들었습니다.

후속 작업

프레젠테이션 단계 및 그룹을 만들고 입력 매개 변수 속성을 설정하는 방법에 대한 자세한 내용은 “프레젠테이션 탭에서 입력 매개 변수 대화 상자 생성,”(91 페이지) 항목을 참조하십시오.

1장 워크플로 개발

VMware, Inc. 103

Page 104: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

사용자 상호 작용 요청에 응답

실행되는 동안 사용자 상호 작용이 필요한 워크플로는 사용자가 필요한 정보를 제공하거나 시간이 초과될때까지 실행을 일시 중단합니다.

사용자 상호 작용이 필요한 워크플로는 필요한 정보를 제공할 수 있는 사용자를 정의하고 상호 작용 요청을 전달합니다.

필수 조건

하나 이상의 워크플로가 사용자 상호 작용 대기 중 상태인지 확인합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 실행을 선택합니다.

2 Orchestrator 클라이언트에서 내 Orchestrator 보기를 클릭합니다.

3 입력 대기 탭을 클릭합니다.

입력 대기 탭에는 사용자 또는 해당 권한이 있는 사용자 그룹의 구성원으로부터 사용자 입력을 대기중인 워크플로가 나열됩니다.

4 입력을 대기 중인 워크플로를 두 번 클릭합니다.

입력을 대기 중인 워크플로 토큰이 다음 기호와 함께 워크플로 계층형 목록에 표시됩니다. .

5 워크플로 토큰을 마우스 오른쪽 버튼으로 클릭하고 응답을 선택합니다.

6 입력 매개 변수 대화 상자의 지침에 따라 워크플로에서 요구하는 정보를 제공합니다.

실행되는 동안 사용자 입력을 대기 중인 워크플로에 정보를 제공했습니다.

워크플로 내에서 워크플로 호출워크플로를 실행하는 동안 다른 워크플로를 호출할 수 있습니다. 워크플로에서 다른 워크플로를 시작할수 있는 것은 워크플로 실행에 다른 워크플로의 결과가 입력 매개 변수로 필요하기 때문이거나 다른 워크플로를 시작하고 해당 워크플로가 독립적으로 계속 실행되도록 둘 수 있기 때문입니다. 또한 워크플로에서 이후의 지정된 시간에 워크플로를 시작하거나 여러 워크플로를 동시에 시작할 수 있습니다.

n 워크플로를 호출하는 워크플로 요소(105 페이지)

워크플로에서 다른 워크플로를 호출하는 방법은 네 가지입니다. 각 워크플로 호출 방법은 다른 워크플로 스키마 요소로 나타납니다.

n 동기식으로 워크플로 호출(107 페이지)

동기식으로 워크플로를 호출하면 호출된 워크플로가 호출하는 워크플로 실행의 일부로 실행됩니다.호출하는 워크플로는 후속 스키마 요소를 실행할 때 호출된 워크플로의 출력 매개 변수를 입력 매개변수로 사용할 수 있습니다.

n 비동기식으로 워크플로 호출(108 페이지)

비동기식으로 워크플로를 호출하면 호출된 워크플로가 호출하는 워크플로와 독립적으로 실행됩니다. 호출하는 워크플로는 호출된 워크플로가 완료될 때까지 대기하지 않고 계속 실행됩니다.

n 워크플로 스케줄링(108 페이지)

워크플로에서 워크플로를 호출하고 이후 시간 및 날짜에 시작하도록 스케줄링할 수 있습니다.

n 다른 워크플로 내에서 원격 워크플로를 호출하기 위한 사전 요구 사항(109 페이지)

개발한 워크플로가 원격 Orchestrator 서버에 상주하는 다른 워크플로를 호출하는 경우 원격 워크플로를 성공적으로 실행하려면 특정 사전 요구 사항을 충족해야 합니다.

VMware vRealize Orchestrator를 사용한 개발

104 VMware, Inc.

Page 105: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 동시에 여러 워크플로 호출(110 페이지)

여러 워크플로를 동시에 호출하면 호출된 워크플로가 호출하는 워크플로 실행의 일부로 동기식으로실행됩니다. 호출하는 워크플로는 호출된 워크플로가 모두 완료될 때까지 대기한 후 계속됩니다. 호출하는 워크플로는 후속 스키마 요소를 실행할 때 호출된 워크플로의 결과를 입력 매개 변수로 사용할 수 있습니다.

워크플로를 호출하는 워크플로 요소

워크플로에서 다른 워크플로를 호출하는 방법은 네 가지입니다. 각 워크플로 호출 방법은 다른 워크플로스키마 요소로 나타납니다.

동기 워크플로 워크플로는 다른 워크플로를 동기식으로 시작할 수 있습니다. 호출된 워크플로는 호출하는 워크플로 실행의 필수 부분으로 실행되며 호출하는 워크플로와 같은 메모리 공간에서 실행됩니다. 호출하는 워크플로는 다른 워크플로를 시작한 다음 호출된 워크플로 실행이 종료될 때까지 기다렸다가 스키마에 있는 다음 요소의 실행을 시작합니다. 일반적으로 호출하는 워크플로는 호출된 워크플로의 출력을 후속 스키마 요소의 입력 매개 변수로 요구하기 때문에 워크플로를 동기식으로 호출합니다. 예를 들어 워크플로가 가상시스템 시작을 호출하고 워크플로가 가상 시스템을 시작하는 것을 기다린다음 이 가상 시스템의 IP 주소를 가져와 다른 요소나 사용자에게 메일로전달할 수 있습니다.

비동기 워크플로 워크플로는 비동기식으로 워크플로를 시작할 수 있습니다. 호출하는 워크플로는 다른 워크플로를 시작하지만 호출된 워크플로의 결과를 기다리지 않습니다. 호출하는 워크플로는 즉시 스키마의 다음 요소를 계속 실행합니다.호출된 워크플로는 호출하는 워크플로가 정의한 입력 매개 변수를 사용해실행되지만 호출된 워크플로의 수명 주기는 호출하는 워크플로의 수명 주기와 독립적입니다. 비동기 워크플로를 사용하면 입력 매개 변수를 한 워크플로에서 다음 워크플로로 전달하는 일련의 워크플로를 생성할 수 있습니다.예를 들어 워크플로는 실행 중 다양한 개체를 생성할 수 있습니다. 워크플로는 이후 자체적으로 실행될 때 이러한 개체를 입력 매개 변수로 사용하는비동기 워크플로를 시작할 수 있습니다. 원래의 워크플로는 모든 필수 워크플로를 시작하고 나머지 요소를 실행하면 종료됩니다. 그러나 이 워크플로가 시작한 비동기 워크플로는 자신을 시작하게 한 워크플로와 독립적으로계속 실행됩니다.

호출하는 워크플로가 호출된 워크플로의 결과를 기다리게 하려면 중첩된 워크플로를 사용하거나 호출된 워크플로의 워크플로 토큰 상태를 검색하고 워크플로가 완료되면 결과를 검색하는 스크립팅 가능한 작업을 생성하십시오.

스케줄링된 워크플로 워크플로는 워크플로를 호출할 수 있으나 이후 시간과 날짜까지 해당 워크플로의 시작을 지연할 수 있습니다. 호출하는 워크플로는 종료될 때까지 실행을 계속합니다. 스케줄링된 워크플로를 호출하면 지정된 시간과 날짜에해당 워크플로를 시작하는 작업을 생성합니다. 호출하는 워크플로가 실행되면 Orchestrator 클라이언트의 스케줄러 및 내 Orchestrator 보기에서스케줄링된 워크플로를 볼 수 있습니다.

스케줄링된 워크플로는 한 번만 실행됩니다. 동기 워크플로의 스크립팅 가능한 작업 요소에 Workflow.scheduleRecurrently 메서드를 호출해 반복적으로실행되는 워크플로를 스케줄링할 수 있습니다.

중첩된 워크플로 워크플로는 단일 스키마 요소에 여러 개의 워크플로를 중첩해 동시에 여러워크플로를 시작할 수 있습니다. 중첩된 워크플로 요소에 나열된 모든 워크플로는 호출하는 워크플로가 스키마의 중첩된 워크플로 요소에 도달하면 동시에 시작됩니다. 중첩된 각 워크플로는 호출하는 워크플로의 메모리 공간중 서로 다른 메모리 공간에서 시작되는 것이 중요합니다. 호출하는 워크플

1장 워크플로 개발

VMware, Inc. 105

Page 106: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

로는 모든 중첩된 워크플로가 실행을 완료할 때까지 기다렸다가 스키마에있는 다음 요소의 실행을 시작합니다. 호출하는 워크플로는 따라서 나머지요소를 실행할 때 중첩된 워크플로의 결과를 입력 매개 변수로 사용할 수있습니다.

워크플로 변경 사항을 다른 워크플로에 전파

다른 워크플로에서 워크플로를 호출하면 Orchestrator가 워크플로 요소를 스키마에 추가할 때 상위 워크플로의 하위 워크플로에 있는 입력 매개 변수를 가져옵니다.

하위 워크플로를 다른 워크플로에 추가한 후 수정하면 상위 워크플로가 새 버전의 하위 워크플로를 호출하지만 새 입력 매개 변수를 가져오지는 않습니다. 자신을 호출하는 다른 워크플로의 동작에 영향을 주는워크플로의 변경을 방지하기 위해 Orchestrator는 새 입력 매개 변수를 호출하는 워크플로에 자동으로전파하지 않습니다.

매개 변수를 한 워크플로에서 이를 호출하는 다른 워크플로에 전파하려면 해당 워크플로를 호출하는 워크플로를 찾고 수동으로 워크플로를 동기화해야 합니다.

필수 조건

다른 워크플로가 호출하는 워크플로가 있는지 확인합니다.

프로시저

1 다른 워크플로가 호출하는 워크플로를 수정 후 저장합니다.

2 워크플로 편집기를 닫습니다.

3 Orchestrator 클라이언트 워크플로 보기의 계층형 목록에서 변경한 워크플로로 이동합니다.

4 워크플로를 마우스 오른쪽 버튼으로 클릭하고참조 > 이 요소를 사용하는 요소 찾기를 선택합니다.

이 워크플로를 호출하는 워크플로의 목록이 나타납니다.

5 목록에서 워크플로를 두 번 클릭하여 Orchestrator 클라이언트의 워크플로 보기에서 강조 표시합니다.

6 워크플로를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

워크플로 편집기가 열립니다.

7 워크플로 편집기에서 스키마 탭을 클릭합니다.

8 워크플로 스키마에서 변경된 워크플로의 워크플로 요소를 마우스 오른쪽 버튼으로 클릭하고 동기화 >매개 변수 동기화를 선택합니다.

9 확인 대화 상자에서 계속을 선택합니다.

10 워크플로 편집기를 저장하고 닫습니다.

11 수정된 워크플로를 사용하는 모든 워크플로에 대해 단계 5에서 단계 10를 반복합니다.

변경된 워크플로를 이를 호출하는 다른 워크플로에 전파했습니다.

하위 워크플로의 입력 매개 변수 및 프레젠테이션을 상위 워크플로에 전파

다른 워크플로를 호출하는 워크플로를 개발하는 경우 하위 워크플로의 입력 매개 변수 및 프레젠테이션을상위 워크플로에 전파할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 실행을 선택합니다.

2 수정할 워크플로를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

워크플로 편집기가 열립니다.

VMware vRealize Orchestrator를 사용한 개발

106 VMware, Inc.

Page 107: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

3 스키마 탭을 선택합니다.

4 입력 매개 변수 및 프레젠테이션을 상위 워크플로에 전파할 하위 워크플로의 요소를 마우스 오른쪽버튼으로 클릭하고 동기화 > 프레젠테이션 동기화를 선택합니다.

5 확인 대화 상자에서 확인을 선택합니다.

6 (선택 사항) 입력 매개 변수 및 프레젠테이션을 상위 워크플로에 전파할 모든 하위 워크플로에 대해 단계 4 및 단계 5를 반복합니다.

하위 워크플로의 입력 매개 변수가 상위 워크플로의 입력 매개 변수에 추가됩니다. 상위 워크플로의 프레젠테이션이 하위 워크플로의 프레젠테이션으로 확장됩니다.

동기식으로 워크플로 호출

동기식으로 워크플로를 호출하면 호출된 워크플로가 호출하는 워크플로 실행의 일부로 실행됩니다. 호출하는 워크플로는 후속 스키마 요소를 실행할 때 호출된 워크플로의 출력 매개 변수를 입력 매개 변수로 사용할 수 있습니다.

워크플로 요소를 사용하여 다른 워크플로에서 동기식으로 워크플로를 호출합니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 일반 메뉴에서 워크플로 스키마의 적절한 위치로 워크플로 요소를 끌어옵니다.

워크플로 선택 대화 상자가 나타납니다.

2 원하는 워크플로를 검색하고 선택한 후 확인을 클릭합니다.

검색에서 부분적인 결과가 반환되면 클라이언트의 도구 > 사용자 기본 설정 메뉴에서 검색 조건의 범위를 좁히거나 검색 결과 수를 늘립니다.

3 워크플로 요소를 클릭하여 스키마 탭의 아래쪽에 속성 탭을 표시합니다.

4 워크플로 스키마에서 워크플로 요소의 편집 아이콘( )을 클릭합니다.

5 워크플로 스키마 요소의 입력 탭에서 필요한 입력 매개 변수를 워크플로에 바인딩합니다.

6 워크플로 스키마 요소의 출력 탭에서 필요한 출력 매개 변수를 워크플로에 바인딩합니다.

7 예외 탭에서 워크플로의 예외 동작을 정의합니다.

8 닫기를 클릭합니다.

9 워크플로 편집기 맨 아래의 저장을 클릭합니다.

다른 워크플로에서 동기식으로 워크플로를 호출했습니다. 워크플로가 실행되는 동안 동기 워크플로에 도달하면 동기 워크플로가 시작되며 초기 워크플로는 동기 워크플로가 완료될 때까지 대기한 후 계속 실행됩니다.

후속 작업

워크플로에서 비동기식으로 워크플로를 호출할 수 있습니다.

1장 워크플로 개발

VMware, Inc. 107

Page 108: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

비동기식으로 워크플로 호출

비동기식으로 워크플로를 호출하면 호출된 워크플로가 호출하는 워크플로와 독립적으로 실행됩니다. 호출하는 워크플로는 호출된 워크플로가 완료될 때까지 대기하지 않고 계속 실행됩니다.

비동기 워크플로 요소를 사용하여 다른 워크플로에서 비동기식으로 워크플로를 호출합니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 일반 메뉴에서 워크플로 스키마의 적절한 위치로 비동기 워크플로 요소를 끌어옵니다.

워크플로 선택 대화 상자가 나타납니다.

2 목록에서 원하는 워크플로를 검색하고 선택한 후 확인을 클릭합니다.

3 워크플로 스키마에서 비동기 워크플로 요소의 편집 아이콘( )을 클릭합니다.

4 비동기 워크플로 요소의 입력 탭에서 필요한 입력 매개 변수를 워크플로에 바인딩합니다.

5 비동기 워크플로 요소의 출력 탭에서 필요한 출력 매개 변수를 바인딩합니다.

호출된 워크플로 또는 해당 워크플로의 결과에 출력 매개 변수를 바인딩할 수 있습니다.

n 호출된 워크플로에 바인딩하면 해당 워크플로가 출력 매개 변수로 반환됩니다.

n 호출된 워크플로의 워크플로 토큰에 바인딩하면 호출된 워크플로 실행 결과가 반환됩니다.

6 예외 탭에서 비동기 워크플로 요소의 예외 동작을 정의합니다.

7 닫기를 클릭합니다.

8 워크플로 편집기 맨 아래의 저장을 클릭합니다.

다른 워크플로에서 비동기식으로 워크플로를 호출했습니다. 워크플로가 실행되는 동안 비동기 워크플로에도달하면 비동기 워크플로가 시작되며 초기 워크플로는 비동기 워크플로가 완료될 때까지 대기하지 않고계속 실행됩니다.

후속 작업

이후 시간 및 날짜에 시작하도록 워크플로를 스케줄링할 수 있습니다.

워크플로 스케줄링

워크플로에서 워크플로를 호출하고 이후 시간 및 날짜에 시작하도록 스케줄링할 수 있습니다.

스케줄 워크플로 요소를 사용해 다른 워크플로에서 워크플로를 스케줄링합니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 일반 메뉴에서 워크플로 스키마의 적절한 위치로 스케줄 워크플로 요소를 끌어옵니다.

2 텍스트 상자에 워크플로의 이름 일부를 입력해 호출할 워크플로를 검색합니다.

3 목록에서 워크플로를 선택한 후 확인을 클릭합니다.

VMware vRealize Orchestrator를 사용한 개발

108 VMware, Inc.

Page 109: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

4 워크플로 스키마에서 스케줄 워크플로 요소의 편집 아이콘( )을 클릭합니다.

5 입력 속성 탭을 클릭합니다.

workflowScheduleDate라는 이름의 매개 변수가 호출하는 워크플로의 입력 매개 변수와 함께 정의할 속성 목록에 나타납니다.

6 workflowScheduleDate 매개 변수에 대해 설정 안 함을 클릭해 매개 변수를 설정합니다.

7 워크플로에 매개 변수/특성 생성을 클릭해 매개 변수를 만들고 매개 변수 값을 설정합니다.

8 값에 대해 설정 안 함을 클릭해 매개 변수 값을 설정합니다.

9 나타나는 달력을 사용해 스케줄링된 워크플로를 시작할 날짜와 시간을 설정하고 확인을 클릭합니다.

10 스케줄링된 워크플로 요소의 입력 탭에서 나머지 입력 매개 변수를 스케줄링된 워크플로에 바인딩합니다.

11 스케줄링된 워크플로 요소의 출력 탭에서 필요한 출력 매개 변수를 Task 개체에 바인딩합니다.

12 예외 탭에서 스케줄링된 워크플로 요소의 예외 동작을 정의합니다.

13 닫기를 클릭합니다.

14 워크플로 편집기 맨 아래의 저장을 클릭합니다.

지정된 시간과 날짜에 다른 워크플로에서 워크플로를 시작하도록 스케줄링했습니다.

후속 작업

한 워크플로에서 여러 워크플로를 동시에 호출할 수 있습니다.

다른 워크플로 내에서 원격 워크플로를 호출하기 위한 사전 요구 사항

개발한 워크플로가 원격 Orchestrator 서버에 상주하는 다른 워크플로를 호출하는 경우 원격 워크플로를 성공적으로 실행하려면 특정 사전 요구 사항을 충족해야 합니다.

n 원격 워크플로의 모든 입력 매개 변수를 원격 Orchestrator 서버에서 확인할 수 있어야 합니다.

n 원격 워크플로의 모든 출력 매개 변수를 로컬 Orchestrator 서버에서 확인할 수 있어야 합니다.

원격 워크플로의 매개 변수를 확인할 수 있도록 하려면 워크플로에서 사용하는 인벤토리 개체를 원격Orchestrator 서버와 로컬 Orchestrator 서버 둘 다에서 사용할 수 있어야 합니다. 원격 워크플로에서플러그인의 개체를 사용하는 경우 동일한 플러그인을 두 Orchestrator 서버 모두에서 사용할 수 있어야합니다. 원격 플러그인과 로컬 플러그인의 인벤토리가 동일해야 합니다. 원격 워크플로에서 워크플로 및작업과 같은 Orchestrator의 시스템 개체를 사용하는 경우 동일한 워크플로 및 작업이 두Orchestrator 서버 모두의 인벤토리에 존재해야 합니다.

예를 들어 개발한 테스트 워크플로의 중첩된 워크플로 요소에 가상 시스템 이름 변경 워크플로를 삽입하고, 원격 Orchestrator 서버에서 가상 시스템 이름 변경 워크플로를 실행하려는 경우를 가정해 보겠습니다. 테스트 워크플로를 실행하면 테스트 워크플로 실행 내에서 가상 시스템 이름 변경 워크플로가 호출됩니다. 로컬 Orchestrator 서버의 인벤토리에서 이름을 변경할 가상 시스템을 지정합니다. 가상 시스템 이름 변경 워크플로는 원격 Orchestrator 서버에서 실행되기 때문에 동일한 가상 시스템을 해당 서버의 인벤토리에서 사용할 수 있어야 합니다. 그렇지 않으면 가상 시스템 이름 변경 워크플로에서 해당 vm입력 매개 변수를 확인할 수 없습니다. 따라서 로컬 및 원격 Orchestrator 서버의 vCenter Server 플러그인은 동일한 vCenter Server 인스턴스에 연결되어야 합니다.

1장 워크플로 개발

VMware, Inc. 109

Page 110: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

동시에 여러 워크플로 호출

여러 워크플로를 동시에 호출하면 호출된 워크플로가 호출하는 워크플로 실행의 일부로 동기식으로 실행됩니다. 호출하는 워크플로는 호출된 워크플로가 모두 완료될 때까지 대기한 후 계속됩니다. 호출하는 워크플로는 후속 스키마 요소를 실행할 때 호출된 워크플로의 결과를 입력 매개 변수로 사용할 수 있습니다.

중첩된 워크플로 요소를 사용하여 다른 워크플로에서 여러 워크플로를 동시에 호출할 수 있습니다. 중첩된 워크플로를 사용하여 호출하는 워크플로 사용자의 자격 증명과 다른 사용자 자격 증명으로 워크플로를실행할 수 있습니다.

필수 조건

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 작업 및 워크플로 메뉴에서 워크플로 스키마의 적절한 위치로 중첩된 워크플로 요소를 끌어옵니다.

워크플로 선택 대화 상자가 나타납니다.

2 시작할 워크플로를 검색하고 선택한 후 확인을 클릭합니다.

3 워크플로 스키마에서 중첩된 워크플로 요소의 편집 아이콘( )을 클릭합니다.

4 워크플로 탭을 클릭합니다.

단계 2에서 선택한 워크플로가 탭에 표시됩니다.

5 워크플로 스키마 요소 속성 탭의 오른쪽 패널에 있는 입력 및 출력 탭에서 이 워크플로에 대한 입력및 출력 바인딩을 설정합니다.

6 워크플로 스키마 요소 속성 탭의 오른쪽 패널에서 연결 정보 탭을 클릭합니다.

연결 정보 탭에서는 적절한 자격 증명을 사용하여 로컬 서버와는 다른 서버에 저장된 워크플로에 액세스할 수 있습니다.

7 원격 서버의 워크플로에 액세스하려면 원격을 선택하고 설정 안 함을 클릭하여 원격 서버의 호스트이름 또는 IP 주소를 제공합니다.

참고 vRealize Orchestrator 다중 노드 플러그인을 사용하여 원격 서버의 워크플로를 호출할 수있습니다.

8 원격 서버에 액세스하는 데 사용할 자격 증명을 정의합니다.

n 호출하는 워크플로를 실행하는 사용자와 동일한 자격 증명을 사용하려면 상속을 선택합니다.

n 워크플로의 다른 곳에서 credentials 유형의 매개 변수가 정의하는 동적 자격 증명 집합을 선택하려면 동적을 선택하고 설정 안 함을 클릭합니다.

n 자격 증명을 직접 입력하려면 정적을 선택하고 설정 안 함을 클릭합니다.

9 워크플로 탭에서 워크플로 추가 버튼을 클릭하여 중첩된 워크플로 요소에 추가할 다른 워크플로를 선택합니다.

10 단계 2~단계 8를 반복하여 추가한 각 워크플로에 대한 설정을 정의합니다.

11 워크플로 스키마에서 중첩된 워크플로 요소를 클릭합니다.

요소에 중첩된 워크플로 수는 중첩된 워크플로 요소에 숫자로 표시됩니다.

워크플로에서 여러 워크플로를 동시에 호출했습니다.

VMware vRealize Orchestrator를 사용한 개발

110 VMware, Inc.

Page 111: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

후속 작업

장기 실행 워크플로를 정의할 수 있습니다.

선택한 개체에서 워크플로 실행선택한 개체에서 워크플로를 실행하여 반복 작업을 자동화할 수 있습니다. 예를 들어 가상 시스템 폴더의모든 가상 시스템에 대한 스냅샷을 생성하는 워크플로를 만들거나, 지정된 호스트에 있는 모든 가상 시스템의 전원을 끄는 워크플로를 만들 수 있습니다.

다음 방법 중 하나를 사용하여 선택한 개체에서 워크플로를 실행할 수 있습니다.

n 라이브러리 > vCenter > 일괄 처리 > 선택한 개체에서 워크플로 실행 워크플로를 실행합니다.

n 라이브러리 > Orchestrator > 연속으로 워크플로 시작 또는 병렬로 워크플로 시작 워크플로를 호출하는 워크플로를 만듭니다.

n 개체 어레이를 가져오는 워크플로를 만들어 워크플로 요소의 루프에서 어레이의 각 개체에 대해 워크플로를 실행합니다.

n 워크플로의 스크립팅된 요소 내 For 루프에서 Workflow.execute() 메서드를 호출하여 JavaScript에서워크플로를 실행합니다.

선택한 개체에서 워크플로를 실행하기 위해 선택한 방법에 따라 실행할 워크플로가 결정되며 워크플로의성능이 영향을 받을 수 있습니다. 예를 들어 선택한 개체에서 워크플로 실행 워크플로를 실행하는 것은 여러 개체에서 워크플로를 실행하는 가장 간단한 방법이고 워크플로 개발이 필요 없지만 단일 입력 매개 변수를 사용하는 워크플로만 실행할 수 있습니다.

연속으로 워크플로 시작 또는 병렬로 워크플로 시작 워크플로를 호출하는 워크플로를 만들면 둘 이상의입력 매개 변수를 사용하는 워크플로를 여러 개체에서 실행할 수 있습니다. 호출하는 워크플로는 연속으로 워크플로 시작 또는 병렬로 워크플로 시작 워크플로에 입력 매개 변수를 전달하기 위해 속성 어레이를만들어야 합니다. 이러한 워크플로는 다른 워크플로에서만 사용됩니다. 직접 실행해서는 안 됩니다.

스크립팅된 요소의 For 루프에서 워크플로를 실행하는 것은 워크플로 요소의 루프에서 워크플로를 실행하는 것보다 빠르지만 유연성이 적고 재사용 가능성을 제한합니다. 특히, 스크립팅된 루프에서 워크플로를실행하면 워크플로 실행에서 각 요소를 시작할 때 Orchestrator가 수행하는 검사점 설정이 손실됩니다.따라서 스크립팅된 루프가 실행되는 동안 Orchestrator 서버가 중지된 경우 서버를 다시 시작하면 스크립팅된 요소의 시작 부분에서 워크플로가 재개되고 전체 루프를 반복합니다. 워크플로 요소의 루프에서워크플로를 실행하는 동안 Orchestrator 서버가 중지된 경우에는 서버가 중지된 시점에 실행된 루프의특정 요소에서 워크플로가 재개됩니다.

일괄 처리 워크플로에 대한 자세한 내용은 VMware vRealize Orchestrator 플러그인 사용을 참조하십시오.

워크플로 요소 루프의 개체 어레이에서 워크플로를 실행하는 워크플로를 만드는 방법은 “복잡한 워크플로 개발,”(150 페이지)에 설명되어 있습니다.

스크립팅된 For 루프에서 워크플로를 실행하는 방법은 “워크플로 스크립팅 예제,”(183 페이지)에 설명되어 있습니다.

직렬 워크플로의 시작 워크플로 및 병렬 워크플로의 시작 워크플로 구현

직렬 워크플로의 시작 워크플로 및 병렬 워크플로의 시작 워크플로를 사용하여 선택한 개체에서 워크플로를 실행할 수 있습니다.

직렬 워크플로의 시작 워크플로 및 병렬 워크플로의 시작 워크플로는 직접 실행할 수 없습니다. 사용자가만든 다른 워크플로에 포함해야 합니다. 직렬 워크플로의 시작 워크플로 및 병렬 워크플로의 시작 워크플로를 사용하여 선택한 개체에서 워크플로를 실행하려면 워크플로를 실행할 개체를 가져와야 합니다. 워크플로에 필요한 다른 모든 입력 매개 변수와 함께 이러한 개체를 워크플로에 속성 어레이로 전달합니다. 직렬 워크플로의 시작 워크플로 및 병렬 워크플로의 시작 워크플로는 선택한 개체에 대한 워크플로 실행 결과를 WorkflowToken 개체의 어레이로 내보냅니다.

1장 워크플로 개발

VMware, Inc. 111

Page 112: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

직렬 워크플로의 시작 워크플로 및 병렬 워크플로의 시작 워크플로는 동일한 방식으로 구현됩니다. 직렬워크플로의 시작 워크플로는 각 개체에서 워크플로를 순차적으로 실행합니다. 병렬 워크플로의 시작 워크플로는 모든 개체에서 워크플로를 동시에 실행합니다.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 스키마에서 스크립팅 가능한 작업 요소 또는 작업을 추가하여 워크플로를 실행할 개체 목록을 가져옵니다.

예를 들어 가상 시스템 폴더의 모든 가상 시스템에서 워크플로를 실행하려면getAllVirtualMachinesByFolder 작업을 워크플로에 추가하면 됩니다.

2 스크립팅된 요소 또는 작업을 연결하고 스크립팅된 요소 또는 작업의 입력 및 출력을 워크플로 입력또는 특성에 바인딩합니다.

예를 들어 getAllVirtualMachinesByFolder 작업의 vmFolder 입력을 워크플로 입력 매개 변수에 바인딩하고 actionResult 출력을 호출하는 워크플로의 워크플로 특성에 바인딩할 수 있습니다.

3 스크립팅 가능한 작업 요소를 추가하여 개체 목록을 속성 어레이로 캐스트합니다.

예를 들어 워크플로를 실행할 개체가 getAllVirtualMachinesByFolder 작업의 actionResult 출력에서 반환된 가상 시스템 어레이 allVMs인 경우 다음 스크립트를 작성하여 개체를 속성 어레이로 캐스트할 수있습니다.

propsArray = new Array();

for each (var vm in allVMs) {

var prop = new Properties();

prop.put("vm", vm);

propsArray.push(prop);

}

4 스크립팅 가능한 작업 요소의 입력 및 출력을 워크플로 특성에 바인딩합니다.

단계 3의 스크립팅 가능한 작업 요소 예에서 입력을 allVMs 가상 시스템 어레이에 바인딩하고propsArray 출력 특성을 Properties 개체의 어레이로 생성합니다.

5 워크플로 요소를 워크플로 스키마에 추가합니다.

6 직렬 워크플로의 시작 워크플로 또는 병렬 워크플로의 시작 워크플로를 선택하고 워크플로 요소를 나머지 요소에 연결합니다.

7 직렬 워크플로의 시작 워크플로 또는 병렬 워크플로의 시작 워크플로에 대한 wf 입력을 개체에서 실행할 워크플로에 바인딩합니다.

예를 들어 getAllVirtualMachinesByFolder 작업에서 반환되는 모든 가상 시스템의 스냅샷을 제거하려면모든 스냅샷 제거 워크플로를 선택합니다.

8 직렬 워크플로의 시작 워크플로 또는 병렬 워크플로의 시작 워크플로에 대한 parameters 입력을 워크플로를 실행할 개체가 포함된 Properties 개체 어레이에 바인딩합니다.

예를 들어 parameters 입력을 단계 4에 정의된 propsArray 특성에 바인딩합니다.

9 (선택 사항) 직렬 워크플로의 시작 워크플로 또는 병렬 워크플로의 시작 워크플로에 대한workflowTokens 출력을 워크플로의 특성에 바인딩합니다.

10 (선택 사항) 직렬 워크플로의 시작 워크플로 또는 병렬 워크플로의 시작 워크플로 실행 결과를 사용하는 다른 요소를 계속 추가합니다.

직렬 워크플로의 시작 워크플로 및 병렬 워크플로의 시작 워크플로를 사용하여 선택한 개체에서 워크플로를 실행하는 워크플로를 만들었습니다.

VMware vRealize Orchestrator를 사용한 개발

112 VMware, Inc.

Page 113: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

장기 실행 워크플로 개발대기 상태의 워크플로는 응답이 필요한 개체를 지속적으로 폴링하기 때문에 시스템 리소스를 소비합니다.워크플로가 필요한 응답을 수신하기 전에 오랜 시간 대기해야 할 수 있음을 아는 경우 해당 워크플로에 장기 실행 워크플로 요소를 추가할 수 있습니다.

실행 중인 모든 워크플로는 시스템 스레드를 소비합니다. 워크플로가 장기 실행 워크플로 요소에 도달하면 장기 실행 워크플로 요소는 해당 워크플로를 패시브 상태로 설정합니다. 그런 다음 서버에서 실행되는모든 장기 실행 워크플로 요소에 대해 시스템을 폴링하는 단일 스레드로 워크플로 정보를 전달합니다. 장기 실행 워크플로 요소는 각 요소가 시스템에서 정보를 검색하려고 지속적으로 시도하는 대신 설정된 기간 동안 패시브 상태로 유지되며 그 동안 장기 실행 워크플로 스레드가 해당 요소를 대신해 시스템을 폴링합니다.

다음 방법 중 하나로 대기 기간을 설정합니다.

n 특정 시간 및 날짜까지 워크플로를 일시 중단하는 Date 개체에 캡슐화된 타이머를 설정합니다. 대기타이머 요소를 스키마에 포함하여 타이머를 기반으로 하는 장기 실행 워크플로 요소를 구현합니다.

n 트리거 이벤트가 발생한 후 워크플로를 다시 시작하는 Trigger 개체에 캡슐화된 트리거 이벤트를 정의합니다. 대기 이벤트 요소 또는 사용자 상호 작용 요소를 스키마에 추가하여 트리거를 기반으로 하는장기 실행 워크플로 요소를 구현합니다.

타이머 기반 워크플로의 상대 시간 및 날짜 설정

대기 타이머 요소의 timer.date 특성을 Date 개체에 바인딩해 상대 시간과 날짜로 설정할 수 있습니다. 스크립팅된 함수에서 Date 개체를 정의합니다.

지정된 날짜의 시간에 도달하면 타이머 기반의 장기 실행 워크플로가 다시 활성화되어 실행을 계속합니다. 예를 들어 2월 12일 정오에 워크플로가 다시 활성화되도록 설정할 수 있습니다. 또는 사용자가 정의한 함수에 따라 상대 Date 개체를 계산하고 생성하는 워크플로 요소를 만들 수 있습니다. 예를 들어 현재시간에 24시간을 추가하는 상대 Date 개체를 만들 수 있습니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 스크립팅 가능한 작업 요소를 범용 메뉴에서 워크플로의 스키마로, timeout.date 특성에 대해 상대Date 개체를 요구하는 요소 앞에 끌어옵니다.

2 워크플로 스키마에서 스크립팅 가능 작업 요소의 편집 아이콘( )을 클릭합니다.

3 정보 속성 탭에 스크립팅된 워크플로 요소의 이름과 설명을 입력합니다.

4 출력 속성 탭을 클릭한 다음 워크플로 매개 변수/특성에 바인딩 아이콘( )을 클릭합니다.

5 워크플로에서 매개 변수/특성 생성을 클릭하여 워크플로 특성을 생성합니다.

a timerDate 특성의 이름을 지정합니다.

b 특성 유형 목록에서 Date를 선택합니다.

c 같은 이름으로 워크플로 특성 생성을 선택합니다.

d 스크립팅된 함수가 특성 값을 제공하므로 이 값은 설정 안 함으로 둡니다.

e 확인을 클릭합니다.

1장 워크플로 개발

VMware, Inc. 113

Page 114: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

6 스크립팅된 워크플로 요소에 대한 스크립팅 탭을 클릭합니다.

7 스크립팅 탭의 스크립팅 패드에서 이름이 timerDate인 Date 개체를 계산하고 생성하는 함수를 정의합니다.

예를 들어 시간 초과 기간이 밀리초 단위의 상대적 지연인 다음 JavaScript 함수를 구현해 Date 개체를 생성할 수 있습니다.

timerDate = new Date();

System.log( "Current date : '" + timerDate + "'" );

timerDate.setTime( timerDate.getTime() + (86400 * 1000) );

System.log( "Timer will expire at '" + timerDate + "'" );

앞의 JavaScript 함수 예제는 getTime 메서드를 사용해 현재 날짜와 시간을 가져오고 86,400,000밀리초 또는 24시간을 더하는 Date 개체를 정의합니다. 스크립팅 가능한 작업 요소는 출력 매개 변수로 이 값을 생성합니다.

8 닫기를 클릭합니다.

9 저장을 클릭합니다.

Date 개체를 계산하고 생성하는 함수를 만들었습니다. 대기 타이머 요소는 이 Date 개체를 입력 매개 변수로 수신하여 이 개체에 캡슐화된 날짜까지 장기 실행 워크플로를 일시 중단합니다. 워크플로가 대기 타이머 요소에 도달하면 그 실행을 일시 중단하고 계속하기 전 24시간 동안 대기합니다.

후속 작업

타이머 기반의 장기 실행 워크플로를 구현하려면 워크플로에 대기 타이머 요소를 추가해야 합니다.

타이머 기반 장기 실행 워크플로 생성

워크플로가 예측 가능한 시간 동안 외부 리소스의 응답을 대기해야 한다는 점을 알고 있는 경우 이 워크플로를 타이머 기반 장기 실행 워크플로로 구현할 수 있습니다. 타이머 기반 장기 실행 워크플로는 지정된시간 및 날짜까지 대기한 후 재개됩니다.

대기 타이머 요소를 사용하여 워크플로를 타이머 기반 장기 실행 워크플로로 구현합니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

프로시저

1 일반 메뉴에서 워크플로 실행을 일시 중단할 워크플로 스키마의 위치로 대기 타이머 요소를 끌어옵니다.

시간 및 날짜를 계산하는 스크립팅 가능한 작업을 구현하는 경우 이 요소는 대기 타이머 요소 앞에 와야 합니다.

2 워크플로 스키마에서 대기 타이머 요소의 편집 아이콘( )을 클릭합니다.

3 정보 속성 탭에서 타이머를 구현하는 이유에 대한 설명을 제공합니다.

4 특성 속성 탭을 클릭합니다.

timer.date 매개 변수가 특성 목록에 표시됩니다.

VMware vRealize Orchestrator를 사용한 개발

114 VMware, Inc.

Page 115: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 timer.date 매개 변수의 설정 안 함 버튼을 클릭하여 적절한 Date 개체에 매개 변수를 바인딩합니다.

가능한 바인딩 목록이 표시된 대기 타이머 선택 대화 상자가 열립니다.

n 제시된 목록에서 미리 정의된 Date 개체를 선택합니다. 예를 들어 워크플로의 다른 곳에서 스크립팅 가능한 작업 요소에 의해 정의된 개체를 선택합니다.

n 또는 워크플로가 대기할 특정 날짜 및 시간을 설정하는 Date 개체를 생성합니다.

6 (선택 사항) 워크플로가 대기하는 특정 날짜 및 시간을 설정하는 Date 개체를 생성합니다.

a 대기 타이머 선택 대화 상자에서 워크플로에서 매개 변수/특성 생성을 클릭합니다.

매개 변수 정보 대화 상자가 표시됩니다.

b 매개 변수에 적절한 이름을 지정합니다.

c 유형을 Date로 설정된 대로 그대로 둡니다.

d 같은 이름으로 워크플로 특성 생성을 클릭합니다.

e 값 속성의 설정 안 함 버튼을 클릭하여 매개 변수 값을 설정합니다.

달력이 표시됩니다.

f 달력을 사용하여 워크플로를 다시 시작할 날짜 및 시간을 설정합니다.

g 확인을 클릭합니다.

7 닫기를 클릭합니다.

8 워크플로 편집기 맨 아래의 저장을 클릭합니다.

설정된 시간 및 날짜까지 타이머 기반 장기 실행 워크플로를 일시 중단하는 타이머를 정의했습니다.

후속 작업

계속하기 전에 트리거 이벤트를 대기하는 장기 실행 워크플로를 생성할 수 있습니다.

트리거 개체 생성

트리거 개체는 플러그인에서 정의하는 이벤트 트리거를 모니터링합니다. 예를 들어 vCenter Server 플러그인은 이러한 이벤트를 Task 개체로 정의합니다. 작업이 종료되면 트리거는 대기 중인 트리거 기반 장기 실행 워크플로 요소에 워크플로를 다시 시작하라는 메시지를 보냅니다.

트리거 기반 장기 실행 워크플로가 대기하는 많은 시간이 소요되는 이벤트는 VC:Task 개체를 반환해야 합니다. 예를 들어 가상 시스템을 시작하는 startVM 작업은 워크플로의 후속 요소가 해당 진행률을 모니터링할 수 있도록 VC:Task 개체를 반환합니다. 트리거 기반 장기 실행 워크플로의 트리거 이벤트에는 이VC:Task 개체가 입력 매개 변수로 필요합니다.

스크립팅 가능한 작업 요소의 JavaScript 함수에서 Trigger 개체를 생성합니다. 이 스크립팅 가능한 작업 요소는 트리거 이벤트를 대기하는 트리거 기반 장기 실행 워크플로의 일부일 수 있습니다. 또는 트리거기반 장기 실행 워크플로에 입력 매개 변수를 제공하는 다른 워크플로의 일부일 수 있습니다. 트리거 함수는 Orchestrator API에서 createEndOfTaskTrigger() 메서드를 구현해야 합니다.

중요 모든 트리거에 대한 시간 초과 기간을 정의해야 합니다. 그러지 않으면 워크플로가 무기한 대기할수 있습니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

1장 워크플로 개발

VMware, Inc. 115

Page 116: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 워크플로에서 VC:Task 개체를 가상 시스템을 시작하거나 복제하는 워크플로 또는 워크플로 요소의VC:Task 개체와 같은 특성 또는 입력 매개 변수로 선언합니다.

프로시저

1 일반 메뉴에서 워크플로의 스키마로 스크립팅 가능한 작업 요소를 끌어옵니다.

스크립팅 가능한 작업 앞에 오는 요소 중 하나는 VC:Task 개체를 해당 출력 매개 변수로 생성해야 합니다.

2 워크플로 스키마에서 스크립팅 가능 작업 요소의 편집 아이콘( )을 클릭합니다.

3 정보 속성 탭에서 트리거의 이름과 설명을 제공합니다.

4 입력 속성 탭을 클릭합니다.

5 워크플로 매개 변수/특성에 바인딩 아이콘( )을 클릭합니다.

입력 매개 변수 선택 대화 상자가 열립니다.

6 VC:Task 유형의 입력 매개 변수를 선택하거나 생성합니다.

이 VC:Task 개체는 다른 워크플로 또는 요소가 실행하는 많은 시간이 소요되는 이벤트를 나타냅니다.

7 (선택 사항) 시간 초과 기간(초)을 정의하는 숫자 유형의 입력 매개 변수를 선택하거나 생성합니다.

8 출력 속성 탭을 클릭합니다.

9 워크플로 매개 변수/특성에 바인딩 아이콘( )을 클릭합니다.

출력 매개 변수 선택 대화 상자가 열립니다.

10 다음 속성을 가진 출력 매개 변수를 생성합니다.

a 값이 trigger인 이름 속성을 생성합니다.

b 값이 Trigger인 유형 속성을 생성합니다.

c 같은 이름으로 특성 생성을 클릭하여 특성을 생성합니다.

d 값을 설정 안 함으로 그대로 둡니다.

11 예외 속성 탭에서 예외 동작을 정의합니다.

12 스크립팅 탭에서 Trigger 개체를 생성하는 함수를 정의합니다.

예를 들어 다음 JavaScript 함수를 구현하여 Trigger 개체를 생성할 수 있습니다.

trigger = task.createEndOfTaskTrigger(timeout);

createEndOfTaskTrigger() 메서드는 이름이 task인 VC:Task 개체를 모니터링하는 Trigger 개체를 반환합니다.

13 닫기를 클릭합니다.

14 워크플로 편집기 맨 아래의 저장을 클릭합니다.

트리거 기반 장기 실행 워크플로에 대한 트리거 이벤트를 생성하는 워크플로 요소를 정의했습니다. 이 트리거 요소는 대기 이벤트 요소를 바인딩할 수 있는 해당 출력 매개 변수로 Trigger 개체를 생성합니다.

후속 작업

이 트리거 이벤트를 트리거 기반 장기 실행 워크플로의 대기 이벤트 요소에 바인딩해야 합니다.

VMware vRealize Orchestrator를 사용한 개발

116 VMware, Inc.

Page 117: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

트리거 기반 장기 실행 워크플로 생성

워크플로가 실행되는 동안 외부 리소스의 응답을 대기해야 한다는 점을 알고 있지만 얼마나 대기해야 하는지 모를 경우 이 워크플로를 트리거 기반 장기 실행 워크플로로 구현할 수 있습니다. 트리거 기반 장기실행 워크플로는 정의된 트리거 이벤트가 발생할 때까지 기다렸다가 재개됩니다.

대기 이벤트 요소를 사용하여 워크플로를 트리거 기반 장기 실행 워크플로로 구현합니다. 트리거 기반 장기 실행 워크플로는 대기 이벤트 요소에 도달한 경우 실행을 일시 중단하고 트리거로부터 메시지를 받을때까지 패시브 상태로 대기합니다. 대기하는 동안 패시브 워크플로는 스레드를 소비하지 않으며, 트리거기반 장기 실행 워크플로 요소가 서버의 모든 장기 실행 워크플로를 모니터링하는 단일 스레드로 워크플로 정보를 전달합니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

n Trigger 개체에 캡슐화된 트리거 이벤트를 정의합니다.

프로시저

1 일반 메뉴에서 워크플로 실행을 일시 중단할 워크플로 스키마의 위치로 대기 이벤트 요소를 끌어옵니다.

트리거를 선언하는 스크립팅 가능한 작업이 대기 이벤트 요소 앞에 와야 합니다.

2 워크플로 스키마에서 대기 이벤트 요소의 편집 아이콘( )을 클릭합니다.

3 정보 속성 탭에서 대기하는 이유에 대한 설명을 제공합니다.

4 특성 속성 탭을 클릭합니다.

trigger.ref 매개 변수가 특성 목록에 표시됩니다.

5 trigger.ref 매개 변수의 설정 안 함 링크를 클릭하여 적절한 Trigger 개체에 매개 변수를 바인딩합니다.

바인딩할 수 있는 매개 변수 표시된 대기 타이머 선택 대화 상자가 열립니다.

6 제시된 목록에서 미리 정의된 Trigger 개체를 선택합니다.

이 Trigger 개체는 다른 워크플로 또는 워크플로 요소가 정의하는 트리거 이벤트를 나타냅니다.

7 예외 속성 탭에서 예외 동작을 정의합니다.

8 닫기를 클릭합니다.

9 워크플로 편집기 맨 아래의 저장을 클릭합니다.

특정 트리거 이벤트를 대기한 후 다시 시작되는 트리거 기반 장기 실행 워크플로를 일시 중단하는 워크플로 요소를 정의했습니다.

후속 작업

워크플로를 실행할 수 있습니다.

1장 워크플로 개발

VMware, Inc. 117

Page 118: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

구성 요소구성 요소는 전체 Orchestrator 서버 배포에서 상수를 구성하는 데 사용할 수 있는 특성 목록입니다.

특정 Orchestrator 서버에서 실행되는 모든 워크플로, 작업 및 정책은 구성 요소에 설정한 특성을 사용할 수 있습니다. 구성 요소에 특성을 설정하면 Orchestrator 서버에서 실행되는 모든 워크플로, 작업 및정책에 동일한 특성 값을 사용할 수 있습니다.

구성 요소의 특성을 사용하는 워크플로, 작업 또는 정책이 포함된 패키지를 만드는 경우 Orchestrator에서 해당 패키지에 구성 요소를 자동으로 포함합니다. 구성 요소가 포함된 패키지를 다른Orchestrator 서버로 가져오는 경우 구성 요소 특성 값도 가져올 수 있습니다. 예를 들어 실행되는Orchestrator 서버에 종속된 특성 값이 필요한 워크플로를 만드는 경우 구성 요소에 이러한 특성을 설정하면 다른 Orchestrator 서버에서 사용할 수 있도록 해당 워크플로를 내보낼 수 있습니다. 따라서 구성 요소를 사용하면 서버 간에 워크플로, 작업 및 정책을 보다 쉽게 교환할 수 있습니다.

참고 Orchestrator 5.1 이하에서 내보낸 구성 요소에서는 구성 요소 특성 값을 가져올 수 없습니다.

구성 요소 생성

구성 요소를 사용하여 Orchestrator 서버에서 공통 특성을 설정할 수 있습니다. 서버에서 실행되는 모든 요소는 구성 요소에 설정된 특성을 호출할 수 있습니다. 구성 요소를 생성하면 각 요소에서 개별적으로특성을 정의하는 대신 서버에서 공통 특성을 한 번에 정의할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 구성 보기를 클릭합니다.

3 폴더의 계층형 목록에서 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 폴더를 선택하여 새 폴더를 생성합니다.

4 폴더 이름을 제공하고 확인을 클릭합니다.

5 생성한 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 요소를 선택합니다.

6 구성 요소 이름을 제공하고 확인을 클릭합니다.

구성 요소 편집기가 열립니다.

7 일반 탭에서 버전 숫자를 클릭하고 버전 설명을 제공하여 버전 번호를 증분합니다.

8 일반 탭의 설명 텍스트 상자에 구성 요소의 설명을 제공합니다.

9 특성 탭을 클릭합니다.

10 특성 추가 아이콘( )을 클릭하여 새 특성을 생성합니다.

11 이름, 유형, 값 및 설명 아래에서 특성 값을 클릭하여 특성 이름, 유형, 값 및 설명을 설정합니다.

12 사용 권한 탭을 클릭합니다.

13 액세스 권한 추가 아이콘( )을 클릭하여 이 구성 요소에 액세스할 수 있는 권한을 사용자 그룹에 부여합니다.

14 필터 텍스트 상자에서 사용자 그룹을 검색하고 제시된 목록에서 관련 사용자 그룹을 선택합니다.

VMware vRealize Orchestrator를 사용한 개발

118 VMware, Inc.

Page 119: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

15 해당 확인란을 선택하여 선택한 사용자 그룹에 대한 액세스 권한을 설정합니다.

구성 요소에 대해 다음과 같은 사용 권한을 설정할 수 있습니다.

사용 권한 설명

보기 사용자는 구성 요소를 볼 수 있지만 스키마나 스크립팅은 볼 수 없습니다.

검사 사용자는 스키마와 스크립팅을 포함해 구성 요소를 볼 수 있습니다.

관리 사용자는 구성 요소의 요소에 대한 사용 권한을 설정할 수 있으며, 다른모든 권한을 가집니다.

실행 사용자는 구성 요소의 요소를 실행할 수 있습니다.

편집 사용자는 구성 요소의 요소를 편집할 수 있습니다.

16 선택을 클릭합니다.

17 저장 후 닫기를 클릭하여 구성 요소 편집기를 종료합니다.

Orchestrator 서버에서 공통 특성을 설정하는 구성 요소를 정의했습니다.

후속 작업

구성 요소를 사용하여 워크플로 또는 작업에 특성을 제공할 수 있습니다.

워크플로 사용자 권한Orchestrator 그룹에 적용 가능한 권한 수준을 정의해 워크플로에 대한 액세스를 허용 또는 거부할 수있습니다.

보기 사용자는 워크플로의 요소는 볼 수 있지만 스키마나 스크립팅은 볼 수 없습니다.

검사 사용자는 스키마와 스크립팅을 포함해 워크플로의 요소를 볼 수 있습니다.

실행 사용자는 워크플로를 실행할 수 있습니다.

편집 사용자는 워크플로를 편집할 수 있습니다.

관리 사용자는 워크플로에 사용 권한을 설정할 수 있으며 기타 모든 사용 권한을가집니다.

관리 사용 권한에는 보기, 검사, 편집 및 실행 사용 권한이 포함됩니다. 모든 사용 권한에는 보기 사용 권한이 필요합니다.

워크플로에 사용 권한을 설정하지 않은 경우 워크플로는 보기 사용 권한을 포함하는 폴더에서 사용 권한을 상속합니다. 워크플로에 사용 권한을 설정한 경우 해당 폴더의 사용 권한이 더 제한적이라도 해당 사용권한은 보기 사용 권한을 포함하는 폴더의 사용 권한을 재정의합니다.

워크플로에서 사용자 사용 권한 설정

사용자 그룹이 워크플로에 대해 가질 수 있는 액세스를 제한할 워크플로 사용 권한 수준을 설정합니다.

Orchestrator LDAP 서버에서 사용 권한을 설정할 사용자와 사용자 그룹을 설정할 수 있습니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 일부 요소를 워크플로 스키마에 추가합니다.

1장 워크플로 개발

VMware, Inc. 119

Page 120: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

프로시저

1 사용 권한 탭을 클릭합니다.

2 액세스 권한 추가 아이콘( )을 클릭해 새 사용자 그룹의 사용 권한을 정의합니다.

3 사용자 그룹을 찾습니다.

검색 결과에는 검색과 일치하는 Orchestrator LDAP 서버의 모든 사용자 그룹이 포함되어 있습니다.

4 사용자 그룹을 선택하고 해당 확인란을 선택해 이 사용자 그룹의 사용 권한 수준을 설정합니다.

이 사용자 그룹의 사용자가 워크플로를 보고, 스키마와 스크립팅을 검사하며 워크플로를 실행 및 편집하고 사용 권한을 변경할 수 있게 하려면 모든 확인란을 선택해야 합니다.

5 선택을 클릭합니다.

사용자 그룹이 사용 권한 목록에 나타납니다.

6 저장 및 닫기를 클릭하여 편집기를 종료합니다.

워크플로 유효성 검사Orchestrator는 워크플로 유효성 검사 도구를 제공합니다. 워크플로 유효성 검사는 워크플로의 오류를식별하고 데이터가 한 요소에서 다음 요소로 올바르게 이동하는지 확인하는 데 도움이 됩니다.

워크플로를 검증할 때 유효성 검사 도구는 오류나 주의 목록을 생성합니다. 목록에서 오류를 클릭하면 오류가 포함된 워크플로 요소가 강조 표시됩니다.

워크플로 편집기에서 유효성 검사 도구를 실행하면 도구가 감지한 오류에 대해 제안하는 빠른 수정 항목을 제공합니다. 사용자가 추가 정보나 입력 매개 변수를 제공해야 하는 빠른 수정도 있습니다. 오류를 해결해주는 빠른 수정도 있습니다.

워크플로 유효성 검사는 요소 간 데이터 바인딩과 연결을 확인합니다. 워크플로 유효성 검사는 워크플로의 각 요소가 수행하는 데이터 처리를 확인하지는 않습니다. 따라서 스키마 요소의 함수가 잘못된 경우 유효한 워크플로가 잘못 실행되어 잘못된 결과가 생성될 수 있습니다.

기본적으로 Orchestrator는 항상 워크플로를 실행할 때 워크플로 유효성 검사를 수행합니다.Orchestrator 클라이언트에서 기본 유효성 검사 동작을 변경할 수 있습니다. “개발 중 워크플로 테스트,”(15 페이지) 항목을 참조하십시오. 예를 들어 워크플로 개발 중에 테스트 목적으로 유효하지 않은워크플로를 실행할 수 있습니다.

워크플로 유효성 검사 및 유효성 검사 오류 수정

워크플로를 실행하기 전에 검증해야 합니다. Ochestrator 클라이언트 또는 워크플로 편집기에서 워크플로의 유효성을 검사할 수 있습니다. 그러나 워크플로 편집기에서 편집할 워크플로를 열었을 경우에만 유효성 검사 오류를 수정할 수 있습니다.

필수 조건

스키마 요소가 연결되고 바인딩이 정의된 검증하기에 완전한 워크플로인지 확인합니다.

프로시저

1 워크플로 보기를 클릭합니다.

2 워크플로 계층형 목록에서 워크플로로 이동합니다.

3 (선택 사항) 워크플로를 마우스 오른쪽 버튼으로 클릭하고 워크플로 유효성 검사를 선택합니다.

워크플로가 유효한 경우 확인 메시지가 나타납니다. 워크플로가 잘못된 경우 오류 목록이 나타납니다.

4 (선택 사항) 워크플로 유효성 검사 대화상자를 닫습니다.

VMware vRealize Orchestrator를 사용한 개발

120 VMware, Inc.

Page 121: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 워크플로를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택해 워크플로 편집기를 엽니다.

6 스키마 탭을 클릭합니다.

7 스키마 탭 도구 모음에서 검증 버튼을 클릭합니다.

워크플로가 유효한 경우 확인 메시지가 나타납니다. 워크플로가 잘못된 경우 오류 목록이 나타납니다.

8 잘못된 워크플로의 경우 오류 메시지를 클릭합니다.

검증 도구는 빨간색 아이콘을 오류가 발생한 스키마 요소에 추가해 강조 표시합니다. 가능한 경우 검증 도구가 빠른 수정 작업을 표시합니다.

n 제안된 빠른 수정 작업에 동의하면 클릭해 해당 작업을 수행합니다.

n 제안된 빠른 수정 작업에 동의하지 않으면 워크플로 검증 대화상자를 닫고 직접 스키마 요소를수정합니다.

중요 항상 Orchestrator가 제안하는 수정이 적절한지 확인하십시오.

예를 들어 제안된 작업이 사용하지 않는 특성을 삭제하는 것일 수 있는데, 이때 사실상 해당 특성이올바로 바인딩되지 않은 것일 수 있습니다.

9 모든 검증 오류를 제거할 때까지 이전 단계를 반복합니다.

워크플로를 검증하고 검증 오류를 수정했습니다.

후속 작업

워크플로를 실행할 수 있습니다.

워크플로 디버깅Orchestrator에서는 워크플로 디버깅 도구를 제공합니다. 워크플로를 디버깅하여 작업 시작 시 입력 및출력 매개 변수와 특성을 검사하고, 워크플로가 실행되는 동안 편집 모드에서 매개 변수 또는 특성 값을바꾸고, 마지막으로 실패한 작업에서 워크플로를 재개할 수 있습니다.

표준 워크플로 라이브러리 및 사용자 지정 워크플로에서 워크플로를 디버깅할 수 있습니다. 워크플로 편집기에서 개발하는 동안 사용자 지정 워크플로를 디버깅할 수 있습니다.

워크플로 디버깅

워크플로 스키마의 요소에 중단점을 추가하여 워크플로 요소를 디버깅할 수 있습니다.

중단점에 도달하면 디버깅 프로세스를 계속할 수 있는 몇 가지 옵션이 제공됩니다. 워크플로 스키마에서요소를 디버깅하면 워크플로 실행에 대한 일반적인 정보를 보고, 워크플로 변수를 수정하고, 로그 메시지를 확인할 수 있습니다.

필수 조건

워크플로를 실행할 수 있는 사용자로 Orchestrator 클라이언트에 로그인합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 워크플로 라이브러리에서 워크플로를 선택하고 스키마 탭을 클릭합니다.

4 디버깅할 스키마 요소에 중단점을 추가하려면 워크플로 요소를 마우스 오른쪽 버튼으로 클릭하고 중단점 설정/해제를 선택합니다.

설정/해제된 중단점을 사용하거나 사용하지 않도록 설정할 수 있습니다.

1장 워크플로 개발

VMware, Inc. 121

Page 122: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 워크플로 디버깅 아이콘( )을 클릭합니다.

워크플로에 입력 매개 변수가 필요한 경우 입력 매개 변수를 제공해야 합니다.

6 워크플로가 중단점에 도달한 후 실행이 일시 중지된 경우 사용 가능한 옵션 중 하나를 선택합니다.

옵션 설명

재개다른 중단점에 도달할 때까지 워크플로 실행을 재개합니다.

단계별 실행워크플로 요소를 단계별로 실행할 수 있습니다.

참고 워크플로 편집기에서 워크플로를 디버깅하는 경우 중첩된 워크플로 요소 내부는 실행할 수 없습니다.

현재 요소에서 실행스키마의 현재 요소를 실행하고 다음 요소에서 워크플로 실행을 일시 중지합니다.

돌아가기단계별로 실행(내부 실행)한 워크플로 요소를 종료합니다.

7 (선택 사항) 중단점 탭에서 중단점을 수정합니다.

기존 중단점을 사용하거나, 사용하지 않거나, 제거할 수 있습니다.

8 (선택 사항) 변수 탭에서 변수를 검토합니다.

디버깅 프로세스를 진행하는 동안 일부 변수 값을 수정할 수 있습니다.

예제 워크플로 디버깅

표준 워크플로 라이브러리에서 워크플로를 디버깅할 수 있습니다.

예를 들어 잘못된 받는 사람 주소를 제공한 경우 예제 이메일 워크플로 상호 작용을 디버깅할 때 해당 값을 수정할 수 있습니다.

필수 조건

메일 워크플로를 실행할 수 있는 사용자로 Orchestrator 클라이언트에 로그인합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 워크플로 계층 목록에서 라이브러리 > 메일을 엽니다.

4 예제 이메일 워크플로 상호 작용을 선택하고 스키마 탭을 클릭합니다.

5 이메일 보내기(상호 작용) 워크플로 요소를 마우스 오른쪽 버튼으로 클릭하고 중단점 설정/해제를 선택합니다.

6 워크플로 디버깅 아이콘( )을 클릭합니다.

7 필요한 정보를 제공합니다.

a 대상 주소 텍스트 상자에 불완전한 받는 사람 주소를 입력합니다.

예를 들어 [email protected]를 입력합니다.

b 쿼리에 응답할 권한이 있는 LDAP 사용자 그룹을 선택합니다.

c 제출을 클릭합니다.

8 중단점에 도달한 경우 Step into 아이콘( )을 클릭합니다.

9 변수 탭에서 값을 확인합니다.

VMware vRealize Orchestrator를 사용한 개발

122 VMware, Inc.

Page 123: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

10 toAddress 텍스트 상자에 올바른 받는 사람 주소 값을 입력합니다.

예를 들어 [email protected]을 입력합니다.

11 Resume 아이콘( )을 클릭하여 워크플로 실행을 계속합니다.

디버깅 프로세스 중에 제공한 값이 워크플로에 사용되고 워크플로 실행이 계속됩니다.

실행 중인 워크플로Orchestrator 워크플로는 이벤트의 논리적 흐름에 따라 실행됩니다.

워크플로를 실행하면 워크플로의 각 스키마 요소가 다음 순서로 실행됩니다.

1 워크플로는 워크플로 토큰 특성과 입력 매개 변수를 스키마 요소의 입력 매개 변수에 바인딩합니다.

2 스키마 요소가 실행됩니다.

3 스키마 요소의 출력 매개 변수는 워크플로 토큰 특성과 워크플로 출력 매개 변수에 복사됩니다.

4 워크플로 토큰 특성과 출력 매개 변수는 데이터베이스에 저장됩니다.

5 다음 스키마 요소가 실행을 시작합니다.

이 시퀀스는 워크플로가 끝날 때까지 각 스키마 요소에 대해 반복됩니다.

워크플로 토큰 검사점

워크플로가 실행되면 각 스키마 요소가 검사점입니다. 각 스키마 요소 실행 후 Orchestrator는 데이터베이스에 워크플로 토큰 특성을 저장하고 다음 스키마 요소가 실행을 시작합니다. 워크플로가 예기치 않게 중지되면 다음에 Orchestrator 서버가 다시 시작할 때 현재 활성 스키마 요소가 다시 실행되고 워크플로는 중단이 발생했을 때 실행 중이었던 스키마 요소의 시작부터 계속됩니다. 그러나 Orchestrator는트랜잭션 관리 또는 롤백 기능을 구현하지 않습니다.

워크플로의 종료

워크플로는 현재 활성 스키마 요소가 종료 요소이면 종료됩니다. 워크플로가 종료 요소에 도달하면 다른워크플로 또는 애플리케이션이 워크플로의 출력 매개 변수를 사용할 수 있습니다.

워크플로 편집기에서 워크플로 실행

개발하는 동안 워크플로를 실행할 수 있습니다.

워크플로 편집기에서 워크플로를 실행하면 개발 프로세스를 중단하지 않고도 워크플로가 올바르게 실행되는지 확인할 수 있습니다. 워크플로 실행에 대한 정보를 제공하는 로그 메시지를 확인할 수 있습니다. 워크플로 실행에서 예기치 않은 결과가 반환되는 경우 워크플로 편집기를 닫지 않고도 워크플로를 수정하고다시 실행할 수 있습니다.

필수 조건

n 워크플로를 만듭니다.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

n 워크플로의 유효성을 검사합니다.

프로시저

1 스키마 탭을 클릭합니다.

2 실행을 클릭합니다.

3 (선택 사항) 로그 탭에서 메시지를 검토합니다.

1장 워크플로 개발

VMware, Inc. 123

Page 124: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로 실행

표준 라이브러리의 워크플로 또는 사용자가 생성한 워크플로을 실행하여 vCenter Server에서 자동화된작업을 수행할 수 있습니다.

예를 들어 단순 가상 시스템 생성 워크플로를 실행하여 가상 시스템을 만들 수 있습니다.

필수 조건

vCenter Server 플러그인을 구성했는지 확인합니다. 자세한 내용은 VMware vCenterOrchestrator 설치 및 구성을 참조하십시오.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 실행 또는 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 워크플로의 계층형 목록에서 라이브러리 > vCenter > 가상 시스템 관리 > 기본을 열어 단순 가상 시스템 생성 워크플로로 이동합니다.

4 단순 가상 시스템 생성 워크플로를 마우스 오른쪽 버튼으로 클릭하고 워크플로 시작을 선택합니다.

5 워크플로 시작 입력 매개 변수 대화상자에 다음 정보를 입력하여 Orchestrator에 연결된 vCenterServer에 가상 시스템을 만듭니다.

옵션 작업

가상 시스템 이름 가상 시스템 이름을 orchestrator-test라고 지정합니다.

가상 시스템 폴더 a 가상 시스템 폴더 값으로 설정 안 함을 클릭합니다.

b 인벤토리에서 가상 시스템 폴더를 선택합니다.

선택 버튼은 사용자가 올바른 개체 유형을 선택할 때까지 비활성화되며, 이 경우에는 VC:VmFolder입니다.

GB 단위의 새 디스크 크기 적절한 숫자 값을 입력합니다.

MB 단위의 메모리 크기 적절한 숫자 값을 입력합니다.

가상 CPU 수 가상 CPU 수 드롭다운 메뉴에서 적절한 CPU 개수를 선택합니다.

가상 시스템 게스트 OS 설정 안 함 링크를 클릭해 목록에서 게스트 운영 체제를 선택합니다.

가상 시스템을 생성할 호스트 가상 시스템을 생성할 호스트 값으로 설정 안 함을 클릭하고 vCenterServer 인프라 계층 구조를 통해 호스트 시스템으로 이동합니다.

리소스 풀 리소스 풀 값으로 설정 안 함을 클릭하고 vCenter Server 인프라 계층구조를 통해 리소스 풀로 이동합니다.

연결할 네트워크 연결할 네트워크 값으로 설정 안 함을 클릭하고 네트워크를 선택합니다.

필터 텍스트 상자에서 Enter를 눌러 사용 가능한 모든 네트워크를 확인합니다.

가상 시스템 파일을 저장할 데이터스토어

가상 시스템 파일을 저장할 데이터스토어 값으로 설정 안 함을 클릭하고vCenter Server 인프라 계층 구조를 통해 데이터스토어로 이동합니다.

6 제출을 클릭하여 워크플로를 실행합니다.

단순 가상 시스템 생성 워크플로 아래에 워크플로 토큰이 나타나 워크플로 실행 아이콘을 표시합니다.

7 워크플로 토큰을 클릭해 실행되는 워크플로의 상태를 봅니다.

8 워크플로 토큰 보기의 이벤트 탭을 클릭해 워크플로가 완료될 때까지 워크플로 토큰의 진행률을 추적합니다.

9 인벤토리 보기를 클릭합니다.

VMware vRealize Orchestrator를 사용한 개발

124 VMware, Inc.

Page 125: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

10 vCenter Server 인프라 계층 구조를 통해 정의한 리소스 풀로 이동합니다.

가상 시스템이 목록에 나타나지 않으면 새로 고침 버튼을 클릭해 인벤토리를 다시 로드합니다.

orchestrator-test 가상 시스템은 리소스 풀에 있습니다.

11 (선택 사항) 인벤토리 보기의 orchestrator-test 가상 시스템을 마우스 오른쪽 버튼으로 클릭해orchestrator-test 가상 시스템에서 실행 가능한 워크플로의 컨텍스트 목록을 봅니다.

단순 가상 시스템 생성 워크플로를 성공적으로 실행했습니다.

후속 작업

사용자는 vSphere Client에 로그인해 새 가상 시스템을 관리할 수 있습니다.

실패한 워크플로 실행 재개워크플로에 실패한 경우 Orchestrator에서는 마지막으로 실패한 작업에서 워크플로를 재개할 수 있는옵션을 제공합니다.

워크플로의 매개 변수를 변경하고 워크플로를 재개하도록 시도하거나, 매개 변수를 유지하고 워크플로 실행에 영향을 주는 외부 구성 요소를 변경할 수 있습니다. 예를 들어 타사 시스템의 문제로 인해 워크플로실행에 실패한 경우 해당 시스템을 변경하고 실패한 작업에서 워크플로 실행을 재개할 수 있습니다. 이 경우 워크플로 매개 변수를 변경하거나 성공한 작업을 반복할 필요가 없습니다.

실패한 워크플로 실행을 재개하기 위한 동작 설정

각 사용자 지정 워크플로의 실패한 실행을 재개하기 위한 동작을 설정할 수 있습니다. 라이브러리의 기본워크플로에서는 실패한 워크플로 실행을 재개하는 데 기본 시스템 설정을 사용합니다.

구성 파일을 수정하여 기본 시스템 동작을 변경할 수 있습니다. “실패한 워크플로 실행을 재개할 수 있는사용자 지정 속성 설정,”(126 페이지) 항목을 참조하십시오.

필수 조건

워크플로 편집 권한이 있는지 확인합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 워크플로 계층형 목록을 확장하여 동작을 설정할 워크플로로 이동합니다.

4 워크플로를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

워크플로 편집기가 열립니다.

5 일반 탭의 실패한 동작에서 재개 드롭다운 메뉴에서 옵션을 선택합니다.

옵션 설명

시스템 기본값 기본 동작을 따릅니다.

사용 워크플로 실행에 실패한 경우 워크플로 실행을 재개할 옵션이 포함된 팝업 창이 표시됩니다.

사용 안 함 워크플로 실행에 실패한 경우 재개할 수 없습니다.

6 저장 후 닫기를 클릭합니다.

1장 워크플로 개발

VMware, Inc. 125

Page 126: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

실패한 워크플로 실행을 재개할 수 있는 사용자 지정 속성 설정

기본적으로 Orchestrator는 실패한 워크플로 실행을 재개하도록 설정되지 않습니다. 실패한 워크플로실행을 재개하도록 Orchestrator를 설정하고, 실패한 워크플로 실행을 재개할 수 없는 사용자 지정 시간 초과 기간을 설정할 수 있습니다.

프로시저

1 Orchestrator 서버 시스템에서 /etc/vco/app-server/로 이동합니다.

2 텍스트 편집기에서 vmo.properties 구성 파일을 엽니다.

3 vmo.properties 파일에서 다음 줄을 편집하여 실패한 워크플로 실행을 재개하도록 Orchestrator를설정합니다.

com.vmware.vco.engine.execute.resume-from-failed=true

4 vmo.properties 파일에서 다음 줄을 편집하여 실패한 워크플로 실행을 재개할 수 있는 사용자 지정 시간 초과 기간을 설정합니다.

com.vmware.vco.engine.execute.resume-from-failed.timeout-sec=<seconds>

설정한 값이 기본 시간 초과로 설정된 값인 86400초를 재정의합니다.

5 vmo.properties 파일을 저장합니다.

6 Orchestrator 서버를 다시 시작합니다.

실패한 워크플로 실행 재개

워크플로에 실패한 실행 재개를 사용할 수 있는 경우 마지막으로 실패한 작업에서 워크플로 실행을 재개할 수 있습니다.

실패한 워크플로 실행을 재개하는 옵션이 사용하도록 설정된 경우 해당 워크플로의 매개 변수를 변경하고, 워크플로 실패 후 표시되는 팝업 창에서 옵션을 사용하여 워크플로를 재개할 수 있습니다. 또한 매개변수를 유지하고 워크플로 실행에 영향을 주는 외부 구성 요소를 변경할 수 있습니다. 이 옵션을 선택하지않으면 워크플로 실행이 시간 초과되어 재개할 수 없게 됩니다. 시간 초과 기간을 수정하려면 “실패한 워크플로 실행을 재개할 수 있는 사용자 지정 속성 설정,”(126 페이지) 항목을 참조하십시오.

프로시저

1 팝업 창의 드롭다운 메뉴에서 재개를 선택하고 다음을 클릭합니다.

취소를 선택한 경우 나중에 워크플로 실행을 재개할 수 없습니다.

2 (선택 사항) 워크플로 매개 변수를 수정합니다.

3 제출을 클릭합니다.

워크플로 설명서 생성선택한 워크플로 또는 워크플로 폴더에 대한 설명서를 언제든지 PDF 형식으로 내보낼 수 있습니다.

내보낸 문서에는 선택한 워크플로 또는 폴더의 워크플로에 대한 자세한 정보가 포함되어 있습니다. 각 워크플로에 대한 정보에는 이름, 워크플로의 버전 기록, 특성, 매개 변수 프레젠테이션, 워크플로 스키마,워크플로 작업 등이 있습니다. 또한 설명서에서는 사용된 작업에 대한 소스 코드를 제공합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 목록에서 실행 또는 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 설명서를 생성할 워크플로 또는 워크플로 폴더로 이동하여 마우스 오른쪽 버튼으로 클릭합니다.

VMware vRealize Orchestrator를 사용한 개발

126 VMware, Inc.

Page 127: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

4 설명서 생성을 선택합니다.

5 PDF 파일을 저장할 폴더를 찾아서 파일 이름을 제공하고 저장을 클릭합니다.

선택한 워크플로 또는 폴더의 워크플로에 대한 정보가 포함된 PDF 파일이 시스템에 저장됩니다.

워크플로 버전 기록 사용버전 기록을 사용하여 워크플로를 이전에 저장된 상태로 되돌릴 수 있습니다. 워크플로 상태를 이전 또는이후 워크플로 버전으로 되돌릴 수 있습니다. 또한 워크플로의 현재 상태와 저장된 버전 간의 차이점을 비교할 수 있습니다.

Orchestrator는 사용자가 워크플로 버전을 높이고 저장한 경우 각 워크플로에 대한 새 버전 기록 항목을 생성합니다. 이후에 워크플로를 변경하더라도 현재 저장된 버전은 변경되지 않습니다. 예를 들어 워크플로 버전 1.0.0을 만들고 저장하면 워크플로의 상태가 버전 기록에 저장됩니다. 이 워크플로를 변경한경우 Orchestrator 클라이언트에 워크플로 상태를 저장할 수 있지만 변경 내용을 워크플로 버전 1.0.0에 적용할 수는 없습니다. 변경 내용을 버전 기록에 저장하려면 후속 워크플로 버전을 만들고 저장해야 합니다. 버전 기록은 워크플로 자체와 함께 데이터베이스에 유지됩니다.

워크플로를 삭제한 경우 Orchestrator는 해당 요소의 버전 기록을 데이터베이스에서 삭제하지 않고 해당 요소를 데이터베이스에서 삭제된 것으로 표시합니다. 따라서 삭제된 워크플로를 복원할 수 있습니다. “삭제된 워크플로 복원,”(127 페이지) 항목을 참조하십시오.

필수 조건

워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 일반 탭을 클릭한 다음 버전 기록 표시를 클릭합니다.

2 워크플로 버전을 선택하고 현재 버전과의 차이점을 클릭하여 차이점을 비교할 수 있습니다.

현재 워크플로 버전과 선택한 워크플로 버전 간의 차이점이 표시된 창이 나타납니다.

3 워크플로 버전을 선택하고 되돌리기를 클릭하여 워크플로의 상태를 복원합니다.

주의 현재 워크플로 버전을 저장하지 않은 경우 버전 기록에서 삭제되므로 현재 버전으로 다시 되돌릴 수 없습니다.

워크플로 상태가 선택한 버전의 상태로 되돌려집니다.

삭제된 워크플로 복원워크플로 라이브러리에서 삭제된 워크플로를 복원할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 목록에서 실행 또는 디자인을 선택합니다.

2 워크플로 보기를 클릭합니다.

3 삭제된 워크플로를 복원할 워크플로 폴더로 이동합니다.

4 폴더를 마우스 오른쪽 버튼으로 클릭하고 삭제된 워크플로 복원을 선택합니다.

5 복원할 워크플로를 하나 이상 선택하고 복원을 클릭합니다.

복원된 워크플로가 선택한 폴더에 표시됩니다.

1장 워크플로 개발

VMware, Inc. 127

Page 128: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

간단한 예제 워크플로 개발간단한 예제 워크플로 개발에서는 워크플로 개발 프로세스의 가장 일반적인 단계를 보여 줍니다.

생성하려는 예제 워크플로는 vCenter Server에서 기존 가상 시스템을 시작하고 관리자에게 해당 가상시스템이 시작되었음을 확인하는 이메일을 보냅니다.

이 예제 워크플로는 다음 작업을 수행합니다.

1 사용자에게 시작할 가상 시스템을 선택하라는 메시지를 표시합니다.

2 사용자에게 알림을 보낼 수 있는 대상 이메일 주소를 묻는 메시지를 표시합니다.

3 선택한 가상 시스템의 전원이 이미 켜져 있는지 확인합니다.

4 vCenter Server 인스턴스에 가상 시스템을 시작하도록 요청을 보냅니다.

5 vCenter Server에서 가상 시스템을 시작할 때까지 대기하면서 가상 시스템을 시작하지 못했거나가상 시스템을 시작하는 데 너무 오래 걸리는 경우 오류를 반환합니다.

6 vCenter Server에서 가상 시스템의 VMware Tools를 시작할 때까지 대기하면서 가상 시스템을시작하지 못했거나 VMware Tools를 시작하는 데 너무 오래 걸리는 경우 오류를 반환합니다.

7 가상 시스템이 실행 중인지 확인합니다.

8 제공된 이메일 주소로 시스템이 시작되었거나 오류가 발생했음을 알리는 알림을 보냅니다.

Orchestrator 설명서의 방문 페이지에서 다운로드할 수 있는 Orchestrator 예제의 ZIP 파일에는 VM시작 및 이메일 보내기 워크플로의 전체 버전이 포함되어 있습니다.

예제 워크플로를 개발하는 프로세스는 여러 작업으로 구성됩니다.

필수 조건

간단한 예제 워크플로를 개발하기 전에 “워크플로의 핵심 개념,”(13 페이지) 항목을 읽어보십시오.

프로시저

1 간단한 워크플로 예제 생성(129 페이지)

Orchestrator 클라이언트에서 워크플로를 생성하여 워크플로 개발 프로세스를 시작해야 합니다.

2 간단한 워크플로 예제의 스키마 생성(130 페이지)

워크플로 편집기에서 워크플로 스키마를 생성할 수 있습니다. 워크플로 스키마는 워크플로에서 실행하는 요소를 포함하며, 워크플로의 논리적 흐름을 결정합니다.

3 (선택 사항) 간단한 워크플로 예제 영역 생성(132 페이지)

서로 다른 색의 워크플로 메모를 추가하여 워크플로에서 여러 영역을 강조할 수 있습니다. 여러 워크플로 영역을 생성하면 복잡한 워크플로 스키마를 보다 쉽게 읽고 이해할 수 있습니다.

4 간단한 워크플로 예제의 매개 변수 정의(134 페이지)

이 워크플로 개발 단계에서는 워크플로에서 실행해야 하는 입력 매개 변수를 정의합니다. 예제 워크플로의 경우 전원을 켤 가상 시스템에 대한 입력 매개 변수와 작업 결과를 알려 줄 사람의 이메일 주소에 대한 매개 변수가 필요합니다. 워크플로를 실행할 때 사용자는 전원을 켤 가상 시스템과 이메일 주소를 지정해야 합니다.

5 간단한 워크플로 예제 의사 결정 바인딩 정의(134 페이지)

워크플로 편집기의 스키마 탭에서 워크플로 요소를 함께 바인딩할 수 있습니다. 의사 결정 바인딩은의사 결정 요소가 수신된 매개 변수를 의사 결정 문과 비교하는 방식을 정의하며, 입력 매개 변수가의사 결정 문과 일치하는지 여부에 따라 출력 매개 변수를 생성합니다.

6 간단한 워크플로 예제의 작업 요소 바인딩(135 페이지)

워크플로 편집기에서 워크플로 요소를 함께 바인딩할 수 있습니다. 바인딩은 작업 요소가 입력 매개변수를 처리하고 출력 매개 변수를 생성하는 방식을 정의합니다.

VMware vRealize Orchestrator를 사용한 개발

128 VMware, Inc.

Page 129: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

7 간단한 워크플로 예제의 스크립팅된 작업 요소 바인딩(138 페이지)

워크플로 편집기의 스키마 탭에서 워크플로 요소를 함께 바인딩할 수 있습니다. 바인딩은 스크립팅된 작업 요소가 입력 매개 변수를 처리하고 출력 매개 변수를 생성하는 방식을 정의합니다. 스크립팅 가능한 작업 요소를 해당 JavaScript 함수에 바인딩할 수도 있습니다.

8 간단한 워크플로 예제 예외 바인딩 정의(145 페이지)

워크플로 편집기의 스키마 탭에서 예외 바인딩을 정의합니다. 예외 바인딩은 요소에서 오류를 처리하는 방식을 정의합니다.

9 간단한 워크플로 예제의 특성에 대해 읽기-쓰기 속성 설정(145 페이지)

매개 변수와 특성이 읽기 전용 상수인지 쓰기 가능한 변수인지 정의할 수 있습니다. 또한 사용자가입력 매개 변수로 제공할 수 있는 값에 제한을 설정할 수 있습니다.

10 간단한 워크플로 예제 매개 변수 속성 설정(146 페이지)

워크플로 편집기에서 매개 변수 속성을 설정할 수 있습니다. 매개 변수 속성을 설정하면 매개 변수동작에 영향을 미치며 해당 매개 변수에 대해 가능한 값에 제약 조건을 설정합니다.

11 간단한 워크플로 예제 입력 매개 변수 대화상자의 레이아웃 설정(148 페이지)

워크플로 편집기에서 입력 매개 변수 대화상자의 레이아웃이나 프레젠테이션을 생성합니다. 입력 매개 변수 대화 상자는 사용자가 입력 매개 변수를 필요로 하는 워크플로를 실행할 때 열립니다.

12 간단한 워크플로 예제 검증 및 실행(149 페이지)

워크플로를 생성한 후 검증해 가능한 오류를 발견할 수 있습니다. 워크플로에 오류가 없으면 실행할수 있습니다.

간단한 워크플로 예제 생성

Orchestrator 클라이언트에서 워크플로를 생성하여 워크플로 개발 프로세스를 시작해야 합니다.

필수 조건

다음 구성 요소가 시스템에 설치 및 구성되어 있는지 확인합니다.

n 일부 가상 시스템(그 중 하나 이상이 전원이 꺼져 있음)을 제어하는 vCenter Server

n SMTP 서버 액세스

n 유효한 이메일 주소

vCenter Server 설치 및 구성 방법에 대한 자세한 내용은 vSphere 설치 및 설정 설명서를 참조하십시오. SMTP 서버를 사용하도록 Orchestrator를 구성하는 방법에 대한 자세한 내용은VMware vRealize Orchestrator 설치 및 구성을 참조하십시오.

워크플로를 작성하려면 서버 또는 작업 중인 워크플로 폴더에 대해 최소한 보기, 실행, 검사, 편집 및 관리(권장) 권한을 가진 Orchestrator 사용자 계정이 있어야 합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 워크플로 목록의 루트를 마우스 오른쪽 버튼으로 클릭하고 새 폴더를 선택합니다.

4 새 폴더 이름을 워크플로 예제로 지정하고 확인을 클릭합니다.

5 워크플로 예제 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 워크플로를 선택합니다.

6 새 워크플로 이름을 VM 시작 및 이메일 보내기로 지정하고 확인을 클릭합니다.

워크플로 편집기가 열립니다.

1장 워크플로 개발

VMware, Inc. 129

Page 130: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

7 일반 탭에서 버전 번호 숫자를 클릭하여 버전 번호를 증분합니다.

워크플로를 처음 생성하므로 버전을 0.0.1로 설정합니다.

8 일반 탭에서 서버 재시작 동작 값을 클릭하여 서버 재시작 후 워크플로가 재개되는지 여부를 설정합니다.

9 일반 탭의 설명 텍스트 상자에 워크플로에서 수행하는 작업에 대한 설명을 입력합니다.

예를 들어 다음 설명을 추가할 수 있습니다.

이 워크플로는 가상 시스템을 시작하고 Orchestrator 관리자에게 확인 메일을 보냅니다.

10 일반 탭의 아래쪽에 있는 저장을 클릭합니다.

VM 시작 및 이메일 보내기라는 워크플로를 생성했지만 해당 함수를 정의하지 않았습니다.

후속 작업

워크플로의 스키마를 생성합니다.

간단한 워크플로 예제의 스키마 생성

워크플로 편집기에서 워크플로 스키마를 생성할 수 있습니다. 워크플로 스키마는 워크플로에서 실행하는요소를 포함하며, 워크플로의 논리적 흐름을 결정합니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 스키마 탭을 클릭합니다.

2 일반 메뉴에서 의사 결정 요소를 스키마의 시작 요소와 End 요소를 연결하는 화살표로 끌어옵니다.

3 의사 결정 요소를 두 번 클릭하고 이름을 VM 전원 켜짐?으로 변경합니다.

이 의사 결정 요소는 가상 시스템의 전원이 이미 켜져 있는지 확인하는 부울 함수에 해당합니다.

4 일반 메뉴에서 의사 결정 요소와 End 요소를 연결하는 빨간색 화살표로 작업 요소를 끌어옵니다.

작업 선택 대화 상자가 나타납니다.

5 필터 텍스트 상자에 시작을 입력하고 필터링된 작업 목록에서 startVM 작업을 선택한 후 선택을 클릭합니다.

6 startVM 작업 요소와 End 요소를 연결하는 파란색 화살표로 다음 작업 요소를 하나씩 끌어옵니다.

vim3WaitTaskEnd 워크플로 실행을 일시 중단하고 진행 중인 vCenter Server 작업이 완료될 때까지 이 작업을 정기적으로 Ping합니다. startVM 작업은 가상 시스템을 시작하고 vim3WaitTaskEnd 작업은 가상 시스템이 시작되는 동안워크플로를 대기시킵니다. 가상 시스템이 시작된 후 vim3WaitTaskEnd는워크플로가 재개되도록 합니다.

vim3WaitToolsStarted 워크플로 실행을 일시 중단하고 대상 시스템에서 VMware Tools가시작될 때까지 대기합니다.

7 일반 메뉴에서 vim3WaitToolsStarted 작업 요소를 End 요소와 연결하는 파란색 화살표로 스크립팅 가능한 작업 요소를 끌어옵니다.

8 스크립팅 가능한 작업 요소를 두 번 클릭하고 이름을 확인으로 변경합니다.

VMware vRealize Orchestrator를 사용한 개발

130 VMware, Inc.

Page 131: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

9 VM powered on? 의사 결정 요소를 End 요소에 연결하는 녹색 화살표로 다른 스크립팅 가능한 작업 요소를 끌어와 해당 요소의 이름을 이미 시작됨으로 지정합니다.

10 Already started 스크립팅 가능한 작업 요소의 연결을 수정합니다.

a Already started 스크립팅 가능한 작업 요소를 startVM 작업 요소의 왼쪽으로 끌어옵니다.

b Already started 스크립팅 가능한 작업 요소를 End 요소에 연결하는 파란색 화살표를 삭제합니다.

c 파란색 화살표를 사용하여 Already started 스크립팅 가능한 작업 요소를 vim3WaitToolsStarted 작업 요소에 연결합니다.

11 일반 메뉴에서 다음 스크립팅 가능한 작업 요소를 스키마로 끌어옵니다.

n 스크립팅 가능한 작업 요소를 startVM 작업 요소로 끌어와 이름을 VM 시작 실패로 지정합니다.

n 스크립팅 가능한 작업 요소를 vim3WaitTaskEnd 작업 요소로 끌어와 이름을 시간 초과 1로 지정합니다.

n 스크립팅 가능한 작업 요소를 vim3WaitToolsStarted 작업 요소로 끌어와 이름을 시간 초과 2로 지정합니다.

n 스크립팅 가능한 작업 요소를 OK 스크립팅 가능한 작업 요소를 End 요소에 연결하는 파란색 화살표로 끌어와 새 스크립팅 가능한 작업 요소의 이름을 이메일 보내기로 지정하고 OK 스크립팅 가능한 작업 요소의 오른쪽으로 끌어옵니다.

n 파란색 화살표를 사용하여 Start VM Failed, Timeout 1 및 Timeout 2 스크립팅 가능한 작업 요소를Send Email 스크립팅 가능한 작업 요소에 연결합니다.

n 스크립팅 가능한 작업 요소를 Send Email 스크립팅 가능한 작업 요소로 끌어와 새 스크립팅 가능한 작업 요소의 이름을 이메일 보내기 실패로 지정하고 Timeout 2 스크립팅 가능한 작업 요소의 오른쪽으로 끌어온 후 파란색 화살표를 사용하여 End 요소에 연결합니다.

12 End 요소를 Send Email 스크립팅 가능한 작업 요소의 오른쪽으로 끌어옵니다.

13 스키마 탭의 아래쪽에 있는 저장을 클릭합니다.

다음 그림에서는 VM 시작 및 이메일 보내기 워크플로 스키마 요소의 레이아웃을 보여 줍니다.

1장 워크플로 개발

VMware, Inc. 131

Page 132: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

그림 1‑10. VM 시작 및 이메일 보내기 예제 워크플로의 요소 연결

후속 작업

워크플로에서 여러 영역을 강조 표시할 수 있습니다.

(선택 사항) 간단한 워크플로 예제 영역 생성

서로 다른 색의 워크플로 메모를 추가하여 워크플로에서 여러 영역을 강조할 수 있습니다. 여러 워크플로영역을 생성하면 복잡한 워크플로 스키마를 보다 쉽게 읽고 이해할 수 있습니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 일반 메뉴에서 워크플로 편집기로 워크플로 메모 요소를 끌어옵니다.

2 Already started 스크립팅 가능한 작업 요소 위에 워크플로 메모를 배치합니다.

3 워크플로 메모의 모서리를 끌어 Already started 스크립팅 가능한 작업 요소를 둘러싸도록 크기를 조정합니다.

4 텍스트를 두 번 클릭하고 설명을 추가합니다.

예를 들어 가상 시스템의 전원이 이미 켜져 있을 때의 경로를 입력합니다.

VMware vRealize Orchestrator를 사용한 개발

132 VMware, Inc.

Page 133: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 Ctrl+E를 눌러 배경색을 선택합니다.

6 위 단계를 반복하여 워크플로의 다른 영역을 강조 표시합니다.

n VM powered on? 의사 결정 요소와 OK 요소 간의 수직 시퀀스 위에 메모를 놓습니다. VM 시작 경로

설명을 추가합니다.

n Timeout 스크립팅 가능한 작업 요소와 Send Email Failed 스크립팅 가능한 작업 요소 둘 다에 대해startVM failed 위에 메모를 놓습니다. 오류 처리 설명을 추가합니다.

n Send Email 스크립팅 가능한 작업 요소 위에 메모를 놓습니다. 이메일 보내기 설명을 추가합니다.

다음 그림에서는 예제 워크플로 영역을 보여 줍니다.

그림 1‑11. VM 시작 및 이메일 보내기 예제 워크플로 영역

초기화 중

VM 켜짐?

확인

startVM VM 시작 실패함

vim3WaitTaskEnd 시간 초과 1

vim3WaitToolsStarted 시간 초과 2 이메일 전송 실패함

가상 시스템의 전원이 이미 켜져

있을 때의 경로

오류 처리

이메일 전송

VM 시작 경로

이메일 전송

후속 작업

워크플로의 특성과 입력 및 출력 매개 변수를 정의해야 합니다.

1장 워크플로 개발

VMware, Inc. 133

Page 134: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

간단한 워크플로 예제의 매개 변수 정의

이 워크플로 개발 단계에서는 워크플로에서 실행해야 하는 입력 매개 변수를 정의합니다. 예제 워크플로의 경우 전원을 켤 가상 시스템에 대한 입력 매개 변수와 작업 결과를 알려 줄 사람의 이메일 주소에 대한매개 변수가 필요합니다. 워크플로를 실행할 때 사용자는 전원을 켤 가상 시스템과 이메일 주소를 지정해야 합니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 입력 탭을 클릭합니다.

2 입력 탭에서 마우스 오른쪽 버튼을 클릭하고 매개 변수 추가를 선택합니다.

arg_in_0이라는 매개 변수가 입력 탭에 표시됩니다.

3 arg_in_0을 클릭합니다.

4 특성 이름 선택 대화 상자에서 이름으로 vm을 입력하고 확인을 클릭합니다.

5 유형 텍스트 상자를 클릭하고 매개 변수 유형 대화 상자의 검색 텍스트 상자에 vc:virtualm을 입력합니다.

6 제시된 매개 변수 유형 목록에서 VC:VirtualMachine을 선택하고 적용을 클릭합니다.

7 설명 텍스트 상자에 매개 변수의 설명을 추가합니다.

예를 들어 전원을 켤 가상 시스템을 입력합니다.

8 단계 2~단계 7를 반복하여 다음 값으로 두 번째 입력 매개 변수를 생성합니다.

n 이름: toAddress

n 유형: 문자열

n 설명: 이 워크플로의 결과를 보낼 이메일 주소

9 입력 탭의 아래쪽에 있는 저장을 클릭합니다.

워크플로의 입력 매개 변수를 정의했습니다.

후속 작업

요소 매개 변수 간의 바인딩을 정의합니다.

간단한 워크플로 예제 의사 결정 바인딩 정의

워크플로 편집기의 스키마 탭에서 워크플로 요소를 함께 바인딩할 수 있습니다. 의사 결정 바인딩은 의사결정 요소가 수신된 매개 변수를 의사 결정 문과 비교하는 방식을 정의하며, 입력 매개 변수가 의사 결정문과 일치하는지 여부에 따라 출력 매개 변수를 생성합니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

VMware vRealize Orchestrator를 사용한 개발

134 VMware, Inc.

Page 135: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n “간단한 워크플로 예제의 매개 변수 정의,”(134 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 스키마 탭에서 VM Powered On? 의사 결정 요소의 편집 아이콘( )을 클릭합니다.

2 의사 결정 탭에서 설정 안 함(NULL) 버튼을 클릭하고 제시된 매개 변수 목록에서 vm을 의사 결정요소의 입력 매개 변수로 선택합니다.

3 드롭다운 메뉴의 제시된 의사 결정 문 목록에서 전원 상태 문을 선택합니다.

가능한 값의 제한된 선택 항목이 표시된 값 텍스트 상자에 설정 안 함 버튼이 표시됩니다.

4 poweredOn을 선택합니다.

5 워크플로 편집기의 스키마 탭의 아래쪽에 있는 저장을 클릭합니다.

의사 결정 요소가 수신된 입력 매개 변수 값을 비교할 true 또는 false 문을 정의했습니다.

후속 작업

워크플로의 다른 요소에 대한 바인딩을 정의해야 합니다.

간단한 워크플로 예제의 작업 요소 바인딩

워크플로 편집기에서 워크플로 요소를 함께 바인딩할 수 있습니다. 바인딩은 작업 요소가 입력 매개 변수를 처리하고 출력 매개 변수를 생성하는 방식을 정의합니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

n “간단한 워크플로 예제의 매개 변수 정의,”(134 페이지).

n “간단한 워크플로 예제 의사 결정 바인딩 정의,”(134 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 스키마 탭에서 startVM 작업 요소의 편집 아이콘( )을 클릭합니다.

2 정보 탭에서 다음과 같은 일반 정보를 설정합니다.

옵션 작업

상호 작용 외부 상호 작용 없음을 선택합니다.

비즈니스 상태 이 확인란을 선택하고 시작 VM 전송 텍스트를 추가합니다.

설명 VM 시작/재개 텍스트를 그대로 둡니다. 시작 작업을 반환합니다.

3 입력 탭을 클릭합니다.

입력 탭은 startVM 작업, vm 및 host에 사용할 수 있는 두 가지 입력 매개 변수를 표시합니다.

startVM 작업은 VC:VirtualMachine만 입력 매개 변수로 사용할 수 있기 때문에 Orchestrator는 vm 매개 변수를 vm[in-parameter]에 자동으로 바인딩합니다. Orchestrator는 워크플로 입력 매개 변수를설정할 때 정의한 vm 매개 변수를 감지하여 작업에 자동으로 바인딩합니다.

1장 워크플로 개발

VMware, Inc. 135

Page 136: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

4 host를 NULL로 설정합니다.

이는 선택적 매개 변수이므로 null로 설정할 수 있습니다. 그러나 이 매개 변수를 설정 안 함으로 설정된 상태로 그대로 두면 워크플로에서 유효성을 검사할 수 없습니다.

5 출력 탭을 클릭합니다.

모든 작업에서 생성되는 기본 출력 매개 변수인 actionResult가 표시됩니다.

6 actionResult 매개 변수에 대해 설정 안 함을 클릭합니다.

7 워크플로에서 매개 변수/특성 만들기를 클릭합니다.

매개 변수 정보 대화 상자에 이 출력 매개 변수에 대해 설정할 수 있는 값이 표시됩니다. startVM 작업의 출력 매개 변수 유형은 VC:Task 개체입니다.

8 매개 변수 이름을 powerOnTask로 지정하고 설명을 제공합니다.

예를 들어 VM 전원 켜기 결과 포함을 입력합니다.

9 같은 이름으로 워크플로 특성 만들기를 클릭한 다음 확인을 클릭하여 매개 변수 정보 대화 상자를 종료합니다.

10 위 단계를 반복하여 입력 및 출력 매개 변수를 vim3WaitTaskEnd 및 vim3WaitToolsStarted 작업 요소에 바인딩합니다.

“간단한 워크플로 예제 작업 요소 바인딩,”(136 페이지)에서 vim3WaitTaskEnd 및vim3WaitToolsStarted 작업 요소에 대한 바인딩을 나열합니다.

11 워크플로 편집기의 스키마 탭의 아래쪽에 있는 저장을 클릭합니다.

작업 요소의 입력 및 출력 매개 변수가 적절한 매개 변수 유형 및 값에 바인딩되었습니다.

후속 작업

스크립팅 가능한 작업 요소를 바인딩하고 해당 기능을 정의합니다.

간단한 워크플로 예제 작업 요소 바인딩

바인딩은 간단한 워크플로 예제의 작업 요소가 입력 및 출력 매개 변수를 처리하는 방법을 정의합니다.

바인딩을 정의할 때 Orchestrator는 워크플로에 바인딩 후보로 이미 정의한 매개 변수를 제시합니다.워크플로에 필수 매개 변수를 아직 정의하지 않은 경우 유일한 매개 변수 선택 항목은 NULL입니다. 워크플로에서 매개 변수/특성 만들기를 클릭하여 새 매개 변수를 만듭니다.

vim3WaitTaskEnd 작업

vim3WaitTaskEnd 작업 요소는 작업 진행률과 폴링 속도를 추적할 상수를 선언합니다. 다음 표는vim3WaitTaskEnd 작업에 필요한 입력 및 출력 매개 변수 바인딩을 보여줍니다.

VMware vRealize Orchestrator를 사용한 개발

136 VMware, Inc.

Page 137: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑54. vim3WaitTaskEnd 작업의 바인딩 값

매개 변수 이름 바인딩 유형

기존 매개 변수에 바인딩 또는 매개 변수 생성? 바인딩 값

task 입력 바인딩 n 로컬 매개 변수: powerOnTaskn 소스 매개 변수:

task[attribute]

n 유형: VC:Taskn 설명: VM 전원 켜기 결과 포함.

progress 입력 생성 n 로컬 매개 변수: progressn 소스 매개 변수:

progress[attribute]

n 유형: 부울n 값: 아니요(false)n 설명:

vCenter Server 작업이 완료되기를 기다리는 동안 진행률 로깅.

pollRate 입력 생성 n 로컬 매개 변수: pollRaten 소스 매개 변수:

pollRate[attribute]

n 유형: 숫자n 값: 2n 설명:

vim3WaitTaskEnd가 vCenter

Server 작업의 진척을 확인하는초 단위의 폴링 속도.

actionResult 출력 생성 n 로컬 매개 변수:actionResult[attribute]

n 소스 매개 변수:returnedManagedObject[attribute]

n 유형: 임의의 유형n 설명:

waitTaskEnd 작업에서 반환된 관리 개체.

vim3WaitToolsStarted 작업

vim3WaitToolsStarted 작업 요소는 VMware Tools가 가상 시스템에 설치될 때까지 기다린 다음 폴링 속도와 시간 초과 기간을 정의합니다. 다음 표는 vim3WaitToolsStarted 작업에 필요한 입력 매개 변수 바인딩을 보여줍니다.

vim3WaitToolsStarted 작업 요소에는 출력이 없으므로 출력 바인딩이 필요 없습니다.

1장 워크플로 개발

VMware, Inc. 137

Page 138: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑55. vim3WaitToolsStarted 작업의 바인딩 값

매개 변수 이름 바인딩 유형

기존 매개 변수에 바인딩 또는 매개 변수 생성여부 바인딩 값

vm 입력 자동 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[in-

parameter]

n 유형: VC:VirtualMachinen 값: 편집할 수 없음, 변수는 워크플로 특성이 아닙니다.

n 설명: 시작할 가상 시스템.

pollingRate 입력 바인딩 n 로컬 매개 변수: pollRaten 소스 매개 변수:

pollRate[attribute]

n 유형: 숫자n 설명:가 vCenter Server

vim3WaitTaskEnd작업의 진척을확인하는 초 단위의 폴링 속도.

timeout 입력 생성 n 로컬 매개 변수: timeoutn 소스 매개 변수:

timeout[attribute]

n 유형: 숫자n 값: 10n 설명:예외가 발생하기 전까지vim3WaitToolsStarted가 대기하는 시간 초과 제한.

간단한 워크플로 예제의 스크립팅된 작업 요소 바인딩

워크플로 편집기의 스키마 탭에서 워크플로 요소를 함께 바인딩할 수 있습니다. 바인딩은 스크립팅된 작업 요소가 입력 매개 변수를 처리하고 출력 매개 변수를 생성하는 방식을 정의합니다. 스크립팅 가능한 작업 요소를 해당 JavaScript 함수에 바인딩할 수도 있습니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

n “간단한 워크플로 예제의 매개 변수 정의,”(134 페이지).

n “간단한 워크플로 예제 의사 결정 바인딩 정의,”(134 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 스키마 탭에서 Already Started 스크립팅 가능한 작업 요소의 편집 아이콘( )을 클릭합니다.

VMware vRealize Orchestrator를 사용한 개발

138 VMware, Inc.

Page 139: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

2 정보 탭에서 다음과 같은 일반 정보를 설정합니다.

옵션 작업

상호 작용 외부 상호 작용 없음을 선택합니다.

비즈니스 상태 이 확인란을 선택하고 VM의 전원이 이미 켜져 있음 텍스트를 추가합니다.

설명 VM의 전원이 이미 켜져 있으며 startVM 및 waitTaskEnd를 무시하고 VM Tools가 실행 중인지 확인하는 중... 텍스트를 그대로 둡니다.

3 입력 탭을 클릭합니다.

이는 사용자 지정 스크립팅 가능한 작업 요소이므로 미리 정의된 속성이 없습니다.

4 워크플로 매개 변수/특성에 바인딩 아이콘( )을 클릭합니다.

5 제안된 매개 변수 목록에서 vm을 선택합니다.

6 출력 및 예외 탭을 그대로 비워 둡니다.

이 요소는 출력 매개 변수나 예외를 생성하지 않습니다.

7 스크립팅 탭을 클릭합니다.

8 다음 JavaScript 함수를 추가합니다.

//Writes the following event in the Orchestrator database

Server.log("VM '"+ vm.name +"' already started");

9 위 단계를 반복하여 나머지 입력 매개 변수를 다른 스크립팅 가능한 작업 요소에 바인딩합니다.

“간단한 워크플로 예제 스크립팅 가능한 작업 요소 바인딩,”(139 페이지)은 Start VM failed,Timeout 또는 Error, Send Email Failed 및 OK 스크립팅 가능한 작업 요소에 대한 바인딩을 나열합니다.

10 워크플로 편집기의 스키마 탭의 아래쪽에 있는 저장을 클릭합니다.

스크립팅 가능한 작업 요소를 해당 입력 및 출력 매개 변수에 바인딩하고 해당 기능을 정의하는 스크립팅을 제공했습니다.

후속 작업

예외 처리를 정의해야 합니다.

간단한 워크플로 예제 스크립팅 가능한 작업 요소 바인딩

바인딩은 간단한 워크플로 예제의 스크립팅 가능한 작업 요소가 입력 매개 변수를 처리하는 방법을 정의합니다. 스크립팅 가능한 작업 요소를 해당 JavaScript 함수에 바인딩할 수도 있습니다.

바인딩을 정의할 때 Orchestrator는 워크플로에 바인딩 후보로 이미 정의한 매개 변수를 제시합니다.워크플로에 필수 매개 변수를 아직 정의하지 않은 경우 유일한 매개 변수 선택 항목은 NULL입니다. 워크플로에서 매개 변수/특성 생성을 클릭하여 새 매개 변수를 만듭니다.

VM 시작 실패 스크립팅 가능한 작업

VM 시작 실패 스크립팅 가능한 작업 요소는 가상 시스템을 시작하지 못했음을 알리는 이메일 알림 내용을 설정하고 Orchestrator 로그에 이 이벤트를 작성하여 startVM 작업이 발생시킨 모든 예외를 처리합니다.

다음 표에서는 VM 시작 실패 스크립팅 가능한 작업 요소에 필요한 입력 및 출력 매개 변수 바인딩을 보여 줍니다.

1장 워크플로 개발

VMware, Inc. 139

Page 140: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑56. VM 시작 실패 스크립팅 가능한 작업 요소의 바인딩

매개 변수 이름 바인딩 유형

기존 매개 변수에 바인딩 또는 매개 변수 생성여부 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[in-

parameter]

n 유형: VC:VirtualMachinen 설명: 전원을 켤 가상 시스템.

errorCode 입력 생성 n 로컬 매개 변수: errorCoden 소스 매개 변수:

errorCode[attribute]

n 유형: 문자열n 설명:

VM의 전원을 켜는 동안 모든 예외 포착.

body 출력 생성 n 로컬 매개 변수: bodyn 소스 매개 변수:

body[attribute]

n 유형: 문자열n 설명: 이메일 본문

VM 시작 실패 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

body = "Unable to execute powerOnVM_Task() on VM '"+vm.name+"', exception found: "+errorCode;

//Writes the following event in the Orchestrator database

Server.error("Unable to execute powerOnVM_Task() on VM '"+vm.name+"', exception found: "+errorCode);

시간 초과 1 스크립팅 가능한 작업 요소

시간 초과 1 스크립팅 가능한 작업 요소는 작업 실패를 알리는 이메일 알림 내용을 설정하고Orchestrator 로그에 이 이벤트를 작성하여 vim3WaitTaskEnd 작업이 발생시킨 모든 예외를 처리합니다.

다음 표에서는 시간 초과 1 스크립팅 가능한 작업 요소에 필요한 입력 및 출력 매개 변수 바인딩을 보여줍니다.

VMware vRealize Orchestrator를 사용한 개발

140 VMware, Inc.

Page 141: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑57. 시간 초과 1 스크립팅 가능한 작업 요소의 바인딩

매개 변수 이름 바인딩 유형

기존 매개 변수에 바인딩 또는 매개 변수 생성여부 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[in-

parameter]

n 유형: VC:VirtualMachinen 설명: 시작할 가상 시스템.

errorCode 입력 바인딩 n 로컬 매개 변수: errorCoden 소스 매개 변수:

errorCode[attribute]

n 유형: 문자열n 설명:

VM의 전원을 켜는 동안 모든예외 포착.

body 출력 바인딩 n 로컬 매개 변수: bodyn 소스 매개 변수:

body[attribute]

n 유형: 문자열n 설명: 이메일 본문

시간 초과 1 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 요구합니다.

body = "Error while waiting for poweredOnVM_Task() to complete on VM '"+vm.name+"', exception found:

"+errorCode;

//Writes the following event in the Orchestrator database

Server.error("Error while waiting for poweredOnVM_Task() to complete on VM '"+vm.name+"', exception found:

"+errorCode);

시간 초과 2 스크립팅 가능한 작업 요소

시간 초과 2 스크립팅 가능한 작업 요소는 작업 실패를 알리는 이메일 알림 내용을 설정하고Orchestrator 로그에 이 이벤트를 작성하여 vim3WaitToolsStarted 작업이 발생시킨 모든 예외를 처리합니다.

다음 표에서는 시간 초과 2 스크립팅 가능한 작업 요소에 필요한 입력 및 출력 매개 변수 바인딩을 보여줍니다.

1장 워크플로 개발

VMware, Inc. 141

Page 142: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑58. 시간 초과 2 스크립팅 가능한 작업 요소의 바인딩

매개 변수 이름 바인딩 유형

기존 매개 변수에 바인딩 또는 매개 변수 생성여부 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[in-

parameter]

n 유형: VC:VirtualMachinen 설명: 전원을 켤 가상 시스템.

errorCode 입력 바인딩 n 로컬 매개 변수: errorCoden 소스 매개 변수:

errorCode[attribute]

n 유형: 문자열n 설명:

VM의 전원을 켜는 동안 모든예외 포착.

body 출력 바인딩 n 로컬 매개 변수: bodyn 소스 매개 변수:

body[attribute]

n 유형: 문자열n 설명: 이메일 본문

시간 초과 2 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 요구합니다.

body = "Error while waiting for VMware tools to be up on VM '"+vm.name+"', exception found: "+errorCode;

//Writes the following event in the Orchestrator database

Server.error("Error while waiting for VMware tools to be up on VM '"+vm.name+"', exception found:

"+errorCode);

OK 스크립팅 가능한 작업 요소

OK 스크립팅 가능한 작업 요소는 가상 시스템이 성공적으로 시작되었다는 알림을 받고 가상 시스템의 성공적인 시작에 대한 이메일 알림 내용을 설정하며 Orchestrator 로그에 해당 이벤트를 작성합니다.

다음 표에서는 OK 스크립팅 가능한 작업 요소에 필요한 입력 및 출력 매개 변수 바인딩을 보여 줍니다.

표 1‑59. OK 스크립팅 가능한 작업 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에 바인딩 또는 매개 변수 생성여부 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[in-

parameter]

n 유형: VC:VirtualMachinen 설명: 전원을 켤 가상 시스템.

body 출력 바인딩 n 로컬 매개 변수: bodyn 소스 매개 변수:

body[attribute]

n 유형: 문자열n 설명: 이메일 본문

OK 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 요구합니다.

body = "The VM '"+vm.name+"' has started successfully and is ready for use";

//Writes the following event in the Orchestrator database

Server.log(body);

VMware vRealize Orchestrator를 사용한 개발

142 VMware, Inc.

Page 143: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

이메일 전송 실패함 스크립팅 가능한 작업 요소

이메일 전송 실패함 스크립팅 가능한 작업 요소는 이메일 전송 실패 알림을 받아 Orchestrator 로그에해당 이벤트를 작성합니다.

다음 표에서는 이메일 전송 실패함 스크립팅 가능한 작업 요소에 필요한 입력 매개 변수 바인딩을 보여 줍니다.

표 1‑60. 이메일 전송 실패함 스크립팅 가능한 작업 요소의 바인딩

매개 변수 이름 바인딩 유형

기존 매개 변수에 바인딩 또는 매개 변수 생성여부 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[in-

parameter]

n 유형: VC:VirtualMachinen 설명: 전원을 켤 가상 시스템.

toAddress 입력 바인딩 n 로컬 매개 변수: toAddressn 소스 매개 변수: toAddress[in-

parameter]

n 유형: 문자열n 설명:이 워크플로의 결과를 알릴 사람의 이메일 주소

emailErrorCode 입력 생성 n 로컬 매개 변수:emailErrorCode

n 소스 매개 변수:emailErrorCode[attrbute]

n 유형: 문자열n 설명:이메일을 보내는 동안 모든 예외 포착

이메일 전송 실패함 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 요구합니다.

//Writes the following event in the Orchestrator database

Server.error("Couldn't send result email to '"+toAddress+"' for VM '"+vm.name+"', exception found:

"+emailErrorCode);

이메일 전송 스크립팅 가능한 작업 요소

VM 시작 및 이메일 전송 워크플로의 목적은 가상 시스템을 시작할 때 관리자에게 알리는 것입니다. 이를위해 이메일을 전송하는 스크립팅 가능한 작업을 정의해야 합니다. 이메일을 보내려면 이메일 전송 스크립팅 가능한 작업 요소에 SMTP 서버, 발신자와 수신자의 이메일 주소, 이메일 제목 및 이메일 내용이필요합니다.

다음 표에서는 이메일 전송 스크립팅 가능한 작업 요소에 필요한 입력 및 출력 매개 변수 바인딩을 보여줍니다.

1장 워크플로 개발

VMware, Inc. 143

Page 144: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑61. 이메일 전송 스크립팅 가능한 작업 요소의 바인딩

매개 변수 이름 바인딩 유형

기존 매개 변수에 바인딩 또는 매개 변수 생성여부 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[in-

parameter]

n 유형: VC:VirtualMachinen 설명: 전원을 켤 가상 시스템.

toAddress 입력 바인딩 n 로컬 매개 변수: toAddressn 소스 매개 변수: toAddress[in-

parameter]

n 유형: 문자열n 설명:이 워크플로의 결과를 알릴 사람의 이메일 주소

body 입력 바인딩 n 로컬 매개 변수: bodyn 소스 매개 변수:

body[attribute]

n 유형: 문자열n 설명: 이메일 본문

smtpHost 입력 생성 n 로컬 매개 변수: smtpHostn 소스 매개 변수:

smtpHost[attribute]

n 유형: 문자열n 설명: 이메일 SMTP 서버

fromAddress 입력 생성 n 로컬 매개 변수: fromAddressn 소스 매개 변수:

fromAddress[attribute]

n 유형: 문자열n 설명: 발신자의 이메일 주소

subject 입력 생성 n 로컬 매개 변수: subjectn 소스 매개 변수:

subject[attribute]

n 유형: 문자열n 설명: 이메일 제목

이메일 전송 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 요구합니다.

//Create an instance of EmailMessage

var myEmailMessage = new EmailMessage() ;

//Apply methods on this instance that populate the email message

myEmailMessage.smtpHost = smtpHost;

myEmailMessage.fromAddress = fromAddress;

myEmailMessage.toAddress = toAddress;

myEmailMessage.subject = subject;

myEmailMessage.addMimePart(body , "text/html");

//Apply the method that sends the email message

myEmailMessage.sendMessage();

System.log("Sent email to '"+toAddress+"'");

VMware vRealize Orchestrator를 사용한 개발

144 VMware, Inc.

Page 145: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

간단한 워크플로 예제 예외 바인딩 정의

워크플로 편집기의 스키마 탭에서 예외 바인딩을 정의합니다. 예외 바인딩은 요소에서 오류를 처리하는방식을 정의합니다.

워크플로의 startVM, vim3WaitTaskEnd, Send Email 및 vim3WaitToolsStarted 요소는 예외를 반환합니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

n “간단한 워크플로 예제의 매개 변수 정의,”(134 페이지).

n “간단한 워크플로 예제 의사 결정 바인딩 정의,”(134 페이지).

n “간단한 워크플로 예제의 작업 요소 바인딩,”(135 페이지).

n “간단한 워크플로 예제의 스크립팅된 작업 요소 바인딩,”(138 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 스키마 탭에서 startVM 작업 요소의 편집 아이콘( )을 클릭합니다.

2 예외 탭을 클릭합니다.

3 설정 안 함 버튼을 클릭합니다.

4 제시된 목록에서 errorCode를 선택합니다.

5 위 단계를 반복하여 vim3WaitTaskEnd 및 vim3WaitToolsStarted 둘 다에 대한 예외 바인딩을 errorCode로설정합니다.

6Send Email스크립팅 가능 작업 요소의 편집 아이콘( )을 클릭합니다.

7 예외 탭을 클릭합니다.

8 설정 안 함 버튼을 클릭합니다.

9 제시된 목록에서 emailErrorCode를 선택합니다.

10 워크플로 편집기의 스키마 탭의 아래쪽에 있는 저장을 클릭합니다.

예외를 반환하는 요소에 대한 예외 바인딩을 정의했습니다.

후속 작업

특성 및 매개 변수에 대한 읽기/쓰기 속성을 설정해야 합니다.

간단한 워크플로 예제의 특성에 대해 읽기-쓰기 속성 설정

매개 변수와 특성이 읽기 전용 상수인지 쓰기 가능한 변수인지 정의할 수 있습니다. 또한 사용자가 입력매개 변수로 제공할 수 있는 값에 제한을 설정할 수 있습니다.

특정 매개 변수를 읽기 전용으로 설정하면 다른 개발자가 워크플로의 핵심 기능을 손상시키지 않고 워크플로를 조정하거나 수정할 수 있습니다.

1장 워크플로 개발

VMware, Inc. 145

Page 146: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

n “간단한 워크플로 예제의 매개 변수 정의,”(134 페이지).

n “간단한 워크플로 예제 의사 결정 바인딩 정의,”(134 페이지).

n “간단한 워크플로 예제의 작업 요소 바인딩,”(135 페이지).

n “간단한 워크플로 예제의 스크립팅된 작업 요소 바인딩,”(138 페이지).

n “간단한 워크플로 예제 예외 바인딩 정의,”(145 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기 맨 위의 일반 탭을 클릭합니다.

특성 아래는 모든 정의된 특성 목록이며 각 특성 옆에 확인란이 있습니다. 이 확인란을 선택하면 특성을 읽기 전용으로 설정합니다.

2 다음 특성을 읽기 전용 상수로 설정하려면 확인란을 선택합니다.

n progress

n pollRate

n timeout

n smtpHost

n fromAddress

n subject

워크플로의 특성 중 상수와 변수를 정의했습니다.

후속 작업

매개 변수 속성을 설정하고 해당 매개 변수에 대해 가능한 값에 제약 조건을 설정하십시오.

간단한 워크플로 예제 매개 변수 속성 설정

워크플로 편집기에서 매개 변수 속성을 설정할 수 있습니다. 매개 변수 속성을 설정하면 매개 변수 동작에영향을 미치며 해당 매개 변수에 대해 가능한 값에 제약 조건을 설정합니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

n “간단한 워크플로 예제의 매개 변수 정의,”(134 페이지).

n “간단한 워크플로 예제 의사 결정 바인딩 정의,”(134 페이지).

n “간단한 워크플로 예제의 작업 요소 바인딩,”(135 페이지).

n “간단한 워크플로 예제의 스크립팅된 작업 요소 바인딩,”(138 페이지).

n “간단한 워크플로 예제 예외 바인딩 정의,”(145 페이지).

VMware vRealize Orchestrator를 사용한 개발

146 VMware, Inc.

Page 147: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 프레젠테이션 탭을 클릭합니다.

이 워크플로에 대해 정의한 두 개의 입력 매개 변수가 나열됩니다.

2 (VC:VirtualMachine)vm 매개 변수를 클릭합니다.

3 화면 아래쪽에 있는 일반 탭에 설명을 추가합니다.

예를 들어 시작할 가상 시스템을 입력합니다.

4 화면 아래쪽에 있는 속성 탭을 클릭합니다.

이 탭에서 (VC:VirtualMachine)vm 매개 변수의 속성을 설정할 수 있습니다.

5 속성 추가 아이콘( )을 클릭합니다.

6 제안된 속성 목록에서 필수 입력 속성을 선택한 다음 확인을 클릭하고 값을 예로 설정합니다.

이 속성을 사용하도록 설정하면 사용자가 시작할 가상 시스템을 제공해야만 VM 시작 및 이메일 전송 워크플로를 실행할 수 있습니다.

7 속성 추가 아이콘( )을 클릭합니다.

8 제안된 속성 목록에서 다음과 같이 값 선택을 선택하고 확인을 클릭한 다음 가능한 값의 목록에서 목록을 선택합니다.

이 속성을 설정하면 사용자가 (VC:VirtualMachine)vm 입력 매개 변수 값을 선택하는 방법을 설정하는것입니다.

9 프레젠테이션 탭 위쪽에 있는 (string)toAddress 매개 변수를 클릭합니다.

10 화면 아래쪽에 있는 설명 탭에 설명을 추가합니다.

예를 들어 알릴 사람의 이메일 주소를 입력합니다.

11(string)toAddress의 속성 탭을 클릭하고 속성 추가 아이콘( )을 클릭합니다.

12 제안된 속성 목록에서 필수 입력 속성을 선택한 다음 확인을 클릭하고 값을 예로 설정합니다.

13 속성 추가 아이콘( )을 클릭합니다.

14 제안된 속성 목록에서 일치하는 정규식을 선택하고 확인을 클릭합니다.

이 속성을 사용하면 사용자가 입력으로 제공할 수 있는 항목에 제약 조건을 설정할 수 있습니다.

15 일치하는 정규식의 값 텍스트 상자를 클릭하고 제약 조건을[a-zA-Z0-9_%-+.]+@[a-zA-Z0-9-.]+\.[a-zA-Z]{2,4}로 설정합니다.

이러한 제약 조건을 설정하면 이메일 주소에 적합한 문자로 사용자 입력이 제한됩니다. 사용자가 워크플로를 시작할 때 수신자 이메일 주소로 다른 문자를 입력하려고 하면 워크플로가 시작되지 않습니다.

두 매개 변수를 필수 항목으로 설정하고 사용자가 시작할 가상 시스템을 선택할 수 있는 방법을 정의했으며 수신자의 이메일 주소로 입력할 수 있는 문자를 제한했습니다.

후속 작업

사용자가 워크플로를 실행할 때 입력 매개 변수 값을 지정할 입력 매개 변수 대화상자의 레이아웃 또는 프레젠테이션을 만들어야 합니다.

1장 워크플로 개발

VMware, Inc. 147

Page 148: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

간단한 워크플로 예제 입력 매개 변수 대화상자의 레이아웃 설정

워크플로 편집기에서 입력 매개 변수 대화상자의 레이아웃이나 프레젠테이션을 생성합니다. 입력 매개 변수 대화 상자는 사용자가 입력 매개 변수를 필요로 하는 워크플로를 실행할 때 열립니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

n “간단한 워크플로 예제의 매개 변수 정의,”(134 페이지).

n “간단한 워크플로 예제 의사 결정 바인딩 정의,”(134 페이지).

n “간단한 워크플로 예제의 작업 요소 바인딩,”(135 페이지).

n “간단한 워크플로 예제의 스크립팅된 작업 요소 바인딩,”(138 페이지).

n “간단한 워크플로 예제 예외 바인딩 정의,”(145 페이지).

n “간단한 워크플로 예제의 특성에 대해 읽기-쓰기 속성 설정,”(145 페이지).

n “간단한 워크플로 예제 매개 변수 속성 설정,”(146 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 프레젠테이션 탭을 클릭합니다.

2 프레젠테이션 계층형 목록에서 프레젠테이션 노드를 마우스 오른쪽 버튼으로 클릭하고 표시 그룹 생성을 선택합니다.

새 단계 노드와 새 그룹 하위 노드가 프레젠테이션 노드 아래에 나타납니다.

3 새 단계를 마우스 오른쪽 버튼으로 클릭하고 삭제를 선택합니다.

이 워크플로에는 두 개의 매개 변수만 있으므로 입력 매개 변수 대화상자에 여러 개의 표시 섹션 계층이 필요하지 않습니다.

4 새 그룹을 두 번 클릭해 그룹 이름을 편집하고 Enter를 누릅니다.

예를 들어 표시 그룹의 이름을 가상 시스템이라고 지정합니다.

여기에 입력한 텍스트는 사용자가 워크플로를 시작할 때 입력 매개 변수 대화상자의 머리글로 나타납니다.

5 프레젠테이션 탭 맨 아래 일반 탭의 설명 텍스트 상자에 새 표시 그룹의 설명을 입력합니다.

예를 들어 시작할 가상 시스템 선택을 입력합니다.

여기에 입력한 텍스트는 사용자가 워크플로를 시작할 때 입력 매개 변수 대화상자의 메시지로 나타납니다.

6 (VC:VirtualMachine)vm 매개 변수를 가상 시스템 표시 그룹 아래로 끌어옵니다.

입력 매개 변수 대화상자에서 사용자가 가상 시스템 이름을 입력하는 텍스트 상자가 가상 시스템 머리말 아래에 나타납니다.

VMware vRealize Orchestrator를 사용한 개발

148 VMware, Inc.

Page 149: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

7 이전 단계를 반복하여 toAddress 매개 변수의 표시 그룹을 생성하고 다음 속성을 설정합니다.

a 표시 그룹을 만들고 이름을 수신자 이메일 주소라고 지정합니다.

b 표시 그룹의 설명을 추가합니다. 예를 들어 이 가상 시스템이 켜지면 알릴 사람의 이메일 주소 입력이라고 합니다.

c toAddress 매개 변수를 수신자의 이메일 주소 표시 그룹 아래로 끌어옵니다.

사용자가 워크플로를 실행할 때 나타나는 입력 매개 변수 대화상자의 레이아웃을 설정했습니다.

후속 작업

간단한 워크플로 예제 개발을 완료했습니다. 이제 워크플로를 검증하고 실행할 수 있습니다.

간단한 워크플로 예제 검증 및 실행

워크플로를 생성한 후 검증해 가능한 오류를 발견할 수 있습니다. 워크플로에 오류가 없으면 실행할 수 있습니다.

필수 조건

다음 작업을 완료합니다.

n “간단한 워크플로 예제 생성,”(129 페이지).

n “간단한 워크플로 예제의 스키마 생성,”(130 페이지).

n “간단한 워크플로 예제의 매개 변수 정의,”(134 페이지).

n “간단한 워크플로 예제 의사 결정 바인딩 정의,”(134 페이지).

n “간단한 워크플로 예제의 작업 요소 바인딩,”(135 페이지).

n “간단한 워크플로 예제의 스크립팅된 작업 요소 바인딩,”(138 페이지).

n “간단한 워크플로 예제 예외 바인딩 정의,”(145 페이지).

n “간단한 워크플로 예제의 특성에 대해 읽기-쓰기 속성 설정,”(145 페이지).

n “간단한 워크플로 예제 매개 변수 속성 설정,”(146 페이지).

n “간단한 워크플로 예제 입력 매개 변수 대화상자의 레이아웃 설정,”(148 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기의 스키마 탭에서 검증을 클릭합니다.

검증 도구는 워크플로 정의에 있는 모든 오류를 찾습니다.

2 오류를 제거한 후에는 워크플로 편집기 맨 아래의 저장 후 닫기를 클릭합니다.

Orchestrator 클라이언트로 돌아옵니다.

3 워크플로 보기를 클릭합니다.

4 워크플로 계층형 목록에서 워크플로 예제 > VM 시작 및 이메일 전송을 선택합니다.

5 VM 시작 및 이메일 전송 워크플로를 마우스 오른쪽 버튼으로 클릭하고 워크플로 시작을 선택합니다.

입력 매개 변수 대화상자가 열리고 시작할 가상 시스템과 알림을 보낼 이메일 주소를 묻는 메시지가나타납니다.

6 vCenter Server 인벤토리에서 시작할 가상 시스템을 선택합니다.

7 이메일 알림을 보낼 이메일 주소를 입력합니다.

1장 워크플로 개발

VMware, Inc. 149

Page 150: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

8 제출을 클릭하여 워크플로를 시작합니다.

워크플로 토큰이 VM 시작 및 이메일 전송 아래에 나타납니다.

9 워크플로 토큰을 클릭해 실행되는 워크플로의 진행률을 추적합니다.

워크플로가 성공적으로 실행되면 선택한 가상 시스템의 전원이 켜진 상태이며 정의한 이메일 수신자가 확인 이메일을 받습니다.

후속 작업

워크플로에 대한 정보를 검토할 문서를 생성할 수 있습니다. “워크플로 설명서 생성,”(126 페이지) 항목을 참조하십시오.

복잡한 워크플로 개발복잡한 예제 워크플로 개발에서는 워크플로 개발 프로세스의 가장 일반적인 단계 및 고급 시나리오(예:사용자 지정 의사 결정 및 루프 생성)를 보여 줍니다.

복잡한 워크플로 연습에서는 지정된 리소스 풀에 포함된 모든 가상 시스템의 스냅샷을 생성하는 워크플로를 개발합니다. 생성한 워크플로는 다음 작업을 수행합니다.

1 사용자에게 스냅샷을 생성할 가상 시스템이 포함된 리소스 풀을 묻는 메시지를 표시합니다.

2 리소스 풀에 실행 중인 가상 시스템이 포함되어 있는지 여부를 확인합니다.

3 리소스에 포함된 가상 시스템 중 현재 실행 중인 가상 시스템 수를 확인합니다.

4 풀에서 실행 중인 개별 가상 시스템이 생성할 스냅샷의 특정 조건을 충족하는지 확인합니다.

5 가상 시스템의 스냅샷을 생성합니다.

6 풀에 스냅샷을 생성할 추가 가상 시스템이 있는지 확인합니다.

7 워크플로에서 리소스 풀에 있는 모든 대상 가상 시스템의 스냅샷을 생성할 때까지 확인 및 스냅샷 프로세스를 반복합니다.

Orchestrator 설명서의 방문 페이지에서 다운로드할 수 있는 Orchestrator 예제의 ZIP 파일에는 리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로의 전체 버전이 포함되어 있습니다.

필수 조건

이 복잡한 워크플로를 개발하려면 “간단한 예제 워크플로 개발,”(128 페이지)의 연습을 따르십시오.복잡한 워크플로를 개발하는 절차에서는 광범위한 개발 프로세스 단계를 제공하며 간단한 워크플로 연습만큼 상세하지 않습니다.

프로시저

1 복잡한 워크플로 예제 생성(151 페이지)

Orchestrator 클라이언트에서 워크플로를 생성하여 워크플로 개발 프로세스를 시작해야 합니다.

2 복잡한 워크플로 예제에 대한 사용자 지정 작업 생성(152 페이지)

Check VM 스크립팅 가능한 요소는 Orchestrator API에 없는 작업을 호출합니다. getVMDiskModes 작업을 생성해야 합니다.

3 복잡한 워크플로 예제의 스키마 생성(153 페이지)

워크플로 편집기에서 워크플로 스키마를 생성할 수 있습니다. 워크플로 스키마는 워크플로에서 실행되는 요소를 포함하며, 워크플로의 논리적 흐름을 결정합니다.

4 (선택 사항) 복잡한 워크플로 예제 영역 생성(155 페이지)

필요에 따라 워크플로 메모를 추가하여 워크플로의 여러 영역을 강조 표시할 수 있습니다. 여러 워크플로 영역을 생성하면 복잡한 워크플로 스키마를 보다 쉽게 읽고 이해할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

150 VMware, Inc.

Page 151: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 복잡한 워크플로 예제의 매개 변수 정의(156 페이지)

워크플로 편집기에서 워크플로 매개 변수를 정의합니다. 입력 매개 변수는 워크플로에서 처리할 데이터를 제공합니다. 출력 매개 변수는 실행이 완료된 경우 워크플로에서 반환되는 데이터입니다.

6 복잡한 워크플로 예제에 대한 바인딩 생성(157 페이지)

워크플로 편집기에서 워크플로 요소를 함께 바인딩할 수 있습니다. 바인딩은 워크플로의 데이터 흐름을 정의합니다. 스크립팅 가능한 작업 요소를 해당 JavaScript 함수에 바인딩할 수도 있습니다.

7 복잡한 워크플로 예제 특성 속성 설정(165 페이지)

워크플로 편집기의 일반 탭에서 특성 속성을 설정합니다.

8 복잡한 워크플로 예제 입력 매개 변수의 레이아웃 생성(166 페이지)

워크플로 편집기의 프레젠테이션 탭에서 입력 매개 변수 대화상자의 레이아웃이나 프레젠테이션을생성합니다. 입력 매개 변수 대화 상자는 사용자가 워크플로를 실행할 때 열리며, 여기에서 사용자는 워크플로 실행에 사용되는 입력 매개 변수를 입력합니다.

9 복잡한 워크플로 예제 검증 및 실행(167 페이지)

워크플로를 생성한 후 검증하여 가능한 오류를 감지할 수 있습니다. 워크플로에 오류가 없으면 실행할 수 있습니다.

복잡한 워크플로 예제 생성

Orchestrator 클라이언트에서 워크플로를 생성하여 워크플로 개발 프로세스를 시작해야 합니다.

vCenter Server 설치 및 구성 방법에 대한 자세한 내용은 vSphere 설치 및 설정 설명서를 참조하십시오. Orchestrator 구성 방법에 대한 자세한 내용은 VMware vRealize Orchestrator 설치 및 구성을참조하십시오.

필수 조건

다음 구성 요소가 시스템에 설치 및 구성되어 있는지 확인합니다.

n 일부 가상 시스템이 포함된 리소스 풀을 제어하는 vCenter Server

n “간단한 워크플로 예제 생성,”(129 페이지)에서 생성한 워크플로 계층 목록의 워크플로 예제 폴더

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 > 워크플로 예제를 선택합니다.

3 워크플로 예제 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 워크플로를 선택합니다.

4 새 워크플로 이름을 리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성으로 지정하고 확인을 클릭합니다.

워크플로 편집기가 열립니다.

5 워크플로 편집기의 일반 탭에서 버전 번호 숫자를 클릭하여 버전 번호를 증분합니다.

워크플로를 처음 생성하는 경우 버전을 0.0.1로 설정합니다.

6 서버 재시작 동작 값을 클릭하여 서버 재시작 후 워크플로가 재개되는지 여부를 설정합니다.

7 대상 텍스트 상자에 워크플로에서 수행하는 작업에 대한 설명을 입력합니다.

8 일반 탭의 아래쪽에 있는 저장을 클릭합니다.

리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로를 생성했습니다.

후속 작업

사용자 지정 작업을 생성해야 합니다.

1장 워크플로 개발

VMware, Inc. 151

Page 152: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

복잡한 워크플로 예제에 대한 사용자 지정 작업 생성

Check VM 스크립팅 가능한 요소는 Orchestrator API에 없는 작업을 호출합니다. getVMDiskModes 작업을생성해야 합니다.

작업 생성에 대한 자세한 내용은 3장, “작업 개발,”(185 페이지) 항목을 참조하십시오.

필수 조건

리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로를 생성합니다. “복잡한 워크플로 예제 생성,”(151 페이지) 항목을 참조하십시오.

프로시저

1 저장 후 닫기를 클릭하여 워크플로 편집기를 닫습니다.

2 Orchestrator 클라이언트에서 작업 보기를 클릭합니다.

3 작업 계층 목록의 루트를 마우스 오른쪽 버튼으로 클릭하고 새 모듈을 선택합니다.

4 새 모듈의 이름을 com.vmware.example로 지정합니다.

5 com.vmware.example 모듈을 마우스 오른쪽 버튼으로 클릭하고 작업 추가를 선택합니다.

6 getVMDiskModes라는 작업을 생성합니다.

7 작업 편집기의 일반 탭에서 버전 숫자를 클릭하여 버전 번호를 증분합니다.

8 일반 탭에서 다음과 같은 작업의 설명을 추가합니다.

This action returns an array containing the disk modes of all disks on a VM.

The elements in the array each have one of the following string values:

- persistent

- independent-persistent

- nonpersistent

- independent-nonpersistent

Legacy values:

- undoable

- append

9 스크립팅 탭을 클릭합니다.

10 스크립팅 탭의 위쪽 창을 마우스 오른쪽 버튼으로 클릭하고 매개 변수 추가를 선택하여 다음 입력 매개 변수를 생성합니다.

n 이름: vm

n 유형: VC:VirtualMachine

n 설명: 디스크 모드를 반환할 가상 시스템

11 스크립팅 탭의 아래쪽에 다음 스크립팅을 추가합니다.

다음 코드는 가상 시스템의 디스크에 대한 디스크 모드 어레이를 반환합니다.

var devicesArray = vm.config.hardware.device;

var retArray = new Array();

if (devicesArray!=null && devicesArray.length!=0) {

for (i in devicesArray) {

if (devicesArray[i] instanceof VcVirtualDisk) {

retArray.push(devicesArray[i].backing.diskMode);

VMware vRealize Orchestrator를 사용한 개발

152 VMware, Inc.

Page 153: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

}

}

}

return retArray;

12 저장 후 닫기를 클릭하여 작업 팔레트를 종료합니다.

리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로에 필요한 사용자 지정 작업을 정의했습니다.

후속 작업

워크플로의 스키마를 생성합니다.

복잡한 워크플로 예제의 스키마 생성

워크플로 편집기에서 워크플로 스키마를 생성할 수 있습니다. 워크플로 스키마는 워크플로에서 실행되는요소를 포함하며, 워크플로의 논리적 흐름을 결정합니다.

필수 조건

다음 작업을 완료합니다.

n “복잡한 워크플로 예제 생성,”(151 페이지).

n “복잡한 워크플로 예제에 대한 사용자 지정 작업 생성,”(152 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 스키마 탭을 클릭합니다.

2 다음 스키마 요소를 워크플로 스키마에 추가합니다.

요소 유형 요소 이름 스키마에서의 위치

스크립팅 가능한 작업

Initializing Start 요소의 아래쪽

의사 결정 VMs to Process? Initializing 스크립팅 가능한 작업 요소의 아래쪽

스크립팅 가능한 작업

Pool Has No VMs 빨간색 화살표로 연결된 VMs to Process? 사용자 지정 의사 결정 요소의 아래쪽

사용자 지정 의사결정

Remaining VMs? 녹색 화살표로 연결된 VMs to Process? 사용자 지정 의사 결정 요소의 오른쪽

작업 getVMDiskModes 녹색 화살표로 연결된 Remaining VMs? 사용자 지정 의사 결정 요소의오른쪽

사용자 지정 의사결정

Create Snapshot? 파란색 화살표로 연결된 getVMDiskModes 작업 요소의 오른쪽

워크플로 Create a snapshot 녹색 화살표로 연결된 Create Snapshot? 사용자 지정 의사 결정 요소의 위쪽

스크립팅 가능한 작업

VM Snapshots 파란색 화살표로 연결된 Create a snapshot 워크플로의 왼쪽

스크립팅 가능한 작업

Increment 파란색 화살표로 연결된 VM Snapshots 스크립팅 가능한 작업 요소의왼쪽

스크립팅 가능한 작업

Set Output 파란색 화살표로 연결된 Pool Has No VMs 스크립팅 가능한 작업 요소의 오른쪽

1장 워크플로 개발

VMware, Inc. 153

Page 154: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

3 Log Exception 스크립팅 가능한 작업 요소를 추가합니다.

a 스냅샷 생성 워크플로와 End 요소 간의 예외 처리 링크를 생성합니다.

b 스냅샷 생성 워크플로를 End 요소에 연결하는 빨간색 파선 화살표로 스크립팅 가능한 작업 요소를 끌어옵니다.

c 스크립팅 가능한 작업 요소를 두 번 클릭하고 이름을 Log Exception으로 변경합니다.

d Log Exception 스크립팅 가능한 작업 요소를 VM Snapshots 스크립팅 가능한 작업 요소의 위쪽으로이동합니다.

4 Set Output 스크립팅 가능한 작업 요소의 오른쪽에 있는 End 요소를 제외하고 모든 End 요소의 연결을해제합니다.

5 다음 표에 설명된 대로 나머지 요소를 연결합니다.

요소 연결 대상화살표 유형 설명

getVMDiskModes 작업 요소 Log Exception 스크립팅 가능한 작업요소

빨간색 파선

예외 처리

Create Snapshot? 사용자 지정 의사 결정 요소

Increment 스크립팅 가능한 작업 요소

빨간색 False 결과

Log Exception 스크립팅 가능한 작업요소

Increment 스크립팅 가능한 작업 요소

파란색 정상적인 워크플로 진행

Increment 스크립팅 가능한 작업 요소 Remaining VMs? 사용자 지정 의사 결정 요소

파란색 정상적인 워크플로 진행

Remaining VMs? 사용자 지정 의사 결정요소

Set Output 스크립팅 가능한 작업 요소

빨간색 False 결과

6 스키마 탭의 아래쪽에 있는 저장을 클릭합니다.

다음 그림에서는 리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로의 연결된 요소를 보여 줍니다.

그림 1‑12. 리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 예제 워크플로의 연결

VMware vRealize Orchestrator를 사용한 개발

154 VMware, Inc.

Page 155: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

후속 작업

필요에 따라 워크플로 메모를 사용하여 워크플로 영역을 정의할 수 있습니다.

(선택 사항) 복잡한 워크플로 예제 영역 생성

필요에 따라 워크플로 메모를 추가하여 워크플로의 여러 영역을 강조 표시할 수 있습니다. 여러 워크플로영역을 생성하면 복잡한 워크플로 스키마를 보다 쉽게 읽고 이해할 수 있습니다.

필수 조건

다음 작업을 완료합니다.

n “복잡한 워크플로 예제 생성,”(151 페이지).

n “복잡한 워크플로 예제의 스키마 생성,”(153 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 메모를 사용하여 다음 워크플로 영역을 생성합니다.

영역의 요소 설명

요소 시작; 스크립팅 가능한 작업 초기화; 처리할 VM? 사용자 지정 의사결정

리소스 풀에서 가상 시스템 어레이를 가져오고, 어레이 카운터를 초기화하며, 처리할 첫 번째 가상 시스템(있는 경우)을 설정합니다.

풀에 VM 없음 스크립팅 가능한 작업 리소스 풀에 스냅샷을 생성할 가상 시스템이 없습니다.

남은 VM? 사용자 지정 의사 결정;getVMDisksModes 작업, 스냅샷 생성?의사 결정; 스냅샷 생성 워크플로C;VM 스냅샷 스크립팅 가능한 작업;증분 스크립팅 가능한 작업; 로그 예외 스크립팅 가능한 작업

리소스 풀에 남아 있는 가상 시스템이 있는지 확인하고, 가상 시스템이스냅샷 조건을 충족하는지 확인한 다음, 스냅샷을 생성하고, 모든 가상시스템의 스냅샷을 생성할 때까지 반복합니다.

출력 설정 스크립팅 가능한 작업; 끝요소

스냅샷을 생성한 가상 시스템의 결과 어레이를 생성합니다.

2 워크플로 메모를 선택하고 Ctrl+E를 눌러 배경색을 선택합니다.

3 워크플로 편집기의 스키마 탭의 아래쪽에 있는 저장을 클릭합니다.

워크플로 영역은 다음 다이어그램과 유사합니다.

1장 워크플로 개발

VMware, Inc. 155

Page 156: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

그림 1‑13. 리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 예제 워크플로의 스키마 다이어그램

초기화 중

처리할 VM?

없는 경우 오류 무시

스냅샷 생성

VM 설정VM 설정

증분 카운터

후속 작업

워크플로의 입력 및 출력 매개 변수를 정의해야 합니다.

복잡한 워크플로 예제의 매개 변수 정의

워크플로 편집기에서 워크플로 매개 변수를 정의합니다. 입력 매개 변수는 워크플로에서 처리할 데이터를제공합니다. 출력 매개 변수는 실행이 완료된 경우 워크플로에서 반환되는 데이터입니다.

필수 조건

다음 작업을 완료합니다.

n “복잡한 워크플로 예제 생성,”(151 페이지).

n “복잡한 워크플로 예제의 스키마 생성,”(153 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 입력 탭을 클릭합니다.

2 다음 입력 매개 변수를 정의합니다.

n 이름: resourcePool

n 유형: VC:ResourcePool

n 설명: 스냅샷을 생성할 가상 시스템이 포함된 리소스 풀

VMware vRealize Orchestrator를 사용한 개발

156 VMware, Inc.

Page 157: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

3 워크플로 편집기에서 출력 탭을 클릭합니다.

4 다음 출력 매개 변수를 정의합니다.

n 이름: snapshotVmArrayOut

n 유형: Array/VC:VirtualMachine

n 설명: 스냅샷을 생성한 가상 시스템의 어레이

워크플로의 입력 및 출력 매개 변수를 정의했습니다.

후속 작업

요소 매개 변수 간의 바인딩을 정의해야 합니다.

복잡한 워크플로 예제에 대한 바인딩 생성

워크플로 편집기에서 워크플로 요소를 함께 바인딩할 수 있습니다. 바인딩은 워크플로의 데이터 흐름을정의합니다. 스크립팅 가능한 작업 요소를 해당 JavaScript 함수에 바인딩할 수도 있습니다.

필수 조건

다음 작업을 완료합니다.

n “복잡한 워크플로 예제 생성,”(151 페이지).

n “복잡한 워크플로 예제의 스키마 생성,”(153 페이지)

n “복잡한 워크플로 예제의 매개 변수 정의,”(156 페이지)

n 정의해야 하는 바인딩을 검토합니다. “복잡한 워크플로 예제 바인딩,”(157 페이지) 항목을 참조하십시오.

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 스키마 탭을 클릭합니다.

2 바인딩을 정의합니다.

3 스키마 탭의 아래쪽에 있는 저장을 클릭합니다.

요소의 모든 입력 및 출력 매개 변수가 적절한 매개 변수 유형 및 값에 바인딩되었습니다.

후속 작업

특성 속성을 설정합니다.

복잡한 워크플로 예제 바인딩

바인딩은 간단한 워크플로 예제의 작업 요소가 입력 및 출력 매개 변수를 처리하는 방법을 정의합니다.

리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로에는 다음과 같은 입력 및 출력 매개 변수 바인딩이 필요합니다. 또한 스크립팅 가능한 작업 요소에 대한 JavaScript 함수도 정의할 수 있습니다.

기존 매개 변수에 바인딩하는 경우 이 바인딩은 원래 매개 변수에서 유형 및 설명 값을 상속합니다.

초기화 스크립팅 가능한 작업

초기화 스크립팅 가능한 작업 요소는 워크플로의 특성을 초기화합니다. 다음 표에서는 초기화 스크립팅가능한 작업 요소에 필요한 입력 및 출력 매개 변수 바인딩을 보여 줍니다.

1장 워크플로 개발

VMware, Inc. 157

Page 158: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑62. 바인딩 - 초기화 스크립팅 가능한 작업 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

resourcePool 입력 바인딩 n 로컬 매개 변수: resourcePooln 소스 매개 변수:

resourcePool[in-parameter]

n 유형: VC:ResourcePooln 설명:스냅샷을 생성할 가상 시스템이포함된 리소스 풀

allVMs 출력 생성 n 로컬 매개 변수: allVMsn 소스 매개 변수:

allVMs[attribute]

n 유형: Array/VC:VirtualMachinen 설명: 리소스 풀의 가상 시스템

numberOfVMs 출력 생성 n 로컬 매개 변수: numberOfVMsn 소스 매개 변수:

numberOfVMs[attribute]

n 유형: 숫자n 설명:리소스 풀에 있는 가상 시스템수

vmCounter 출력 생성 n 로컬 매개 변수: vmCountern 소스 매개 변수:

vmCounter[attribute]

n 유형: 숫자n 설명:어레이 내의 가상 시스템 카운터

vm 출력 생성 n 로컬 매개 변수: vmn 소스 매개 변수: vm[attribute]n 유형: VC:VirtualMachinen 설명:생성한 스냅샷이 있는 현재 가상시스템

snapshotVmArray 출력 생성 n 로컬 매개 변수: snapshotVmArrayn 소스 매개 변수:

snapshotVmArray[attribute]

n 유형: Array/VC:VirtualMachinen 설명:스냅샷을 생성한 가상 시스템의어레이

초기화 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

//Retrieve an array of virtual machines contained in the specified Resource Pool

allVMs = resourcePool.vm;

//Initialize the size of the Array and the first VM to snapshot

if (allVMs!=null && allVMs.length!=0) {

numberOfVms = allVMs.length;

vm = allVMs[0];

} else {

numberOfVms = 0;

}

VMware vRealize Orchestrator를 사용한 개발

158 VMware, Inc.

Page 159: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

//Initialize the VM counter

vmCounter = 0;

//Initializing the array of VM snapshots

snapshotVmArray = new Array();

처리할 VM? 의사 결정 요소

처리할 VM? 의사 결정 요소는 스냅샷을 생성할 가상 시스템이 리소스 풀에 있는지 여부를 결정합니다.다음 표에는 처리할 VM? 의사 결정 요소에 필요한 바인딩을 보여 줍니다.

표 1‑63. 바인딩 - 처리할 VM? 의사 결정 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

numberOfVMs 의사 결정 바인딩 n 소스 매개 변수:numberOfVMs[attribute]

n 의사 결정 문: Greater thann 값: 0.0n 설명:리소스 풀에 있는 가상 시스템수

풀에 VM 없음 스크립팅 가능한 작업 요소

풀에 VM 없음 스크립팅 가능한 작업 요소는 리소스 풀에 Orchestrator 데이터베이스의 적합한 가상 시스템이 없다는 사실을 로깅합니다. 다음 표에서는 풀에 VM 없음 스크립팅 가능한 작업 요소에 필요한 바인딩을 보여 줍니다.

표 1‑64. 바인딩 - 풀에 VM 없음 스크립팅 가능한 작업 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

resourcePool 입력 바인딩 n 로컬 매개 변수: resourcePooln 소스 매개 변수:

resourcePool[in-parameter]

n 유형: VC:ResourcePooln 설명:스냅샷을 생성할 가상 시스템이포함된 리소스 풀

풀에 VM 없음 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

//Writes the following event in the Orchestrator database

Server.warn("The specified ResourcePool "+resourcePool.name+" does not contain any VMs.");

남은 VM? 사용자 지정 의사 결정 요소

남은 VM? 사용자 지정 의사 결정 요소는 스냅샷을 생성할 가상 시스템이 리소스 풀에 남아 있는지 여부를 결정합니다. 다음 표에서는 남은 VM? 사용자 지정 의사 결정 요소에 필요한 바인딩을 보여 줍니다.

1장 워크플로 개발

VMware, Inc. 159

Page 160: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑65. 바인딩 - 남은 VM? 사용자 지정 의사 결정 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

numberOfVMs 입력 바인딩 n 소스 매개 변수:numberOfVMs[attribute]

n 의사 결정 문: Greater thann 값: 0.0n 설명:리소스 풀에 있는 가상 시스템수

vmCounter 입력 바인딩 n 로컬 매개 변수: vmCountern 소스 매개 변수:

vmCounter[attribute]

n 유형: 숫자n 설명:어레이 내의 가상 시스템 카운터

남은 VM? 사용자 지정 의사 결정 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

//Checks if the workflow has reached the end of the array of VMs

if (vmCounter < numberOfVms) {

return true;

} else {

return false;

}

getVMDisksModes 작업 요소

getVMDisksModes 작업 요소는 가상 시스템에서 실행 중인 디스크의 모드를 가져옵니다. 다음 표에서는getVMDisksModes 작업 요소에 필요한 바인딩을 보여 줍니다.

표 1‑66. 바인딩 - getVMDisksModes 작업 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[attribute]n 유형: VC:VirtualMachinen 설명:생성한 스냅샷이 있는 현재 가상시스템

actionResult 출력 생성 n 로컬 매개 변수: actionResultn 소스 매개 변수:

vmDisksModes[attribute]

n 유형: 어레이/문자열n 설명:가상 시스템의 현재 디스크 모드

errorCode 예외 생성 로컬 매개 변수: errorCode

스냅샷 생성? 사용자 지정 의사 결정 요소

스냅샷 생성? 사용자 지정 의사 결정 요소는 가상 시스템의 디스크 모드에 따라 가상 시스템의 스냅샷을생성할지 여부를 결정합니다. 다음 표에서는 스냅샷 생성? 사용자 지정 의사 결정 요소에 필요한 바인딩을 보여 줍니다.

VMware vRealize Orchestrator를 사용한 개발

160 VMware, Inc.

Page 161: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑67. 바인딩 - 스냅샷 생성? 의사 결정 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

vmDisksMode 입력 바인딩 n 로컬 매개 변수: vmDisksModen 소스 매개 변수:

vmDisksMode[attribute]

n 유형: 어레이/문자열n 설명:가상 시스템의 현재 디스크 모드

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[attribute]n 유형: VC:VirtualMachinen 설명:생성한 스냅샷이 있는 현재 가상시스템

스냅샷 생성? 사용자 지정 의사 결정 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

//A snapshot cannot be taken if one of its disks is in independent mode

// (independent-persistent or independent-nonpersistent)

var containsIndependentDisks = false;

if (vmDisksModes!=null && vmDisksModes.length>0) {

for (i in vmDisksModes) {

if (vmDisksModes[i].charAt(0)=="i") {

containsIndependentDisks = true;

}

}

} else {

//if no disk found no need to try to snapshot the VM

System.warn("Won't snapshot '"+vm.name+"', no disks found");

return false;

}

if (containsIndependentDisks) {

System.warn("Won't snapshot '"+vm.name+"', independent disk(s) found");

return false;

} else {

System.log("Snapshoting '"+vm.name+"'");

return true;

}

스냅샷 생성 워크플로 요소

스냅샷 생성 워크플로 요소는 가상 시스템의 스냅샷을 생성합니다. 다음 표에서는 스냅샷 생성 워크플로요소에 필요한 바인딩을 보여 줍니다.

1장 워크플로 개발

VMware, Inc. 161

Page 162: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑68. 바인딩 - 스냅샷 생성 워크플로 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[attribute]n 유형: VC:VirtualMachinen 설명:스냅샷을 생성할 활성 가상 시스템

name 입력 생성 n 로컬 매개 변수: namen 소스 매개 변수:

snapshotName[attribute]

n 유형: 문자열n 설명:이 스냅샷의 이름. 이름은 이 가상 시스템에 고유하지 않아도 됨

description 입력 생성 n 로컬 매개 변수: descriptionn 소스 매개 변수:

snapshotDescription[attribute]

n 유형: 문자열n 설명: 이 스냅샷의 설명

memory 입력 생성 n 로컬 매개 변수: memoryn 소스 매개 변수:

snapshotMemory[attribute]

n 유형: 부울n 값: non 설명:

TRUE이면 가상 시스템의 내부 상태 덤프(메모리 덤프)가 스냅샷에 포함됨

quiesce 입력 생성 n 로컬 매개 변수: quiescen 소스 매개 변수:

snapshotQuiesce[attribute]

n 유형: 부울n 값: yesn 설명:

TRUE이고 스냅샷을 생성할 때 가상 시스템의 전원이 켜진 경우VMware Tools를 통해 가상 시스템의 파일 시스템을 정지함

snapshot 출력 생성 n 로컬 매개 변수: snapshotn 소스 매개 변수: NULLn 유형: VC:VirtualMachineSnapshotn 설명: 스냅샷이 생성됨

errorCode 예외 생성 로컬 매개 변수: errorCode

VM 스냅샷 스크립팅 가능한 작업 요소

VM 스냅샷 스크립팅 가능한 작업 요소는 어레이에 스냅샷을 추가합니다. 다음 표에서는 VM 스냅샷 스크립팅 가능한 작업 요소에 필요한 바인딩을 보여 줍니다.

VMware vRealize Orchestrator를 사용한 개발

162 VMware, Inc.

Page 163: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑69. 바인딩 - VM 스냅샷 스크립팅 가능한 작업 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[attribute]n 유형: VC:VirtualMachinen 설명:스냅샷을 생성할 활성 가상 시스템

snapshotVmArray 입력 바인딩 n 로컬 매개 변수: snapshotVmArrayn 소스 매개 변수:

snapshotVmArray[attribute]

n 유형: Array/VC:VirtualMachinen 설명:스냅샷을 생성한 가상 시스템의어레이

snapshotVmArray 출력 바인딩 n 로컬 매개 변수: snapshotVmArrayn 소스 매개 변수:

snapshotVmArray[attribute]

n 유형: Array/VC:VirtualMachinen 설명:스냅샷을 생성한 가상 시스템의어레이

VM 스냅샷 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

//Writes the following event in the Orchestrator database

Server.log("Successfully took snapshot of the VM '"+vm.name);

//Inserts the VM snapshot in an array

snapshotVmArray.push(vm);

증분 스크립팅 가능한 작업 요소

증분 스크립팅 가능한 작업 요소는 어레이의 가상 시스템 수를 계산하는 카운터를 증분합니다. 다음 표에서는 증분 스크립팅 가능한 작업 요소에 필요한 바인딩을 보여 줍니다.

표 1‑70. 바인딩 - 증분 스크립팅 가능한 작업 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

vmCounter 입력 바인딩 n 로컬 매개 변수: vmCountern 소스 매개 변수:

vmCounter[attribute]

n 유형: 숫자n 설명:어레이 내의 가상 시스템 카운터

allVMs 입력 바인딩 n 로컬 매개 변수: allVMsn 소스 매개 변수:

allVMs[attribute]

n 유형: Array/VC:VirtualMachinen 설명: 리소스 풀의 가상 시스템

1장 워크플로 개발

VMware, Inc. 163

Page 164: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑70. 바인딩 - 증분 스크립팅 가능한 작업 요소 (계속)

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

vmCounter 출력 바인딩 n 로컬 매개 변수: vmCountern 소스 매개 변수:

vmCounter[attribute]

n 유형: 숫자n 설명:어레이 내의 가상 시스템 카운터

vm 출력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[attribute]n 유형: VC:VirtualMachinen 설명:생성한 스냅샷이 있는 현재 가상시스템

증분 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

//Increases the array VM counter

vmCounter++;

//Sets the next VM to be snapshot in the attribute vm

vm = allVMs[vmCounter];

예외 로깅 스크립팅 가능한 작업 요소

예외 로깅 스크립팅 가능한 작업 요소는 워크플로 및 작업 요소에서 예외를 처리합니다. 다음 표에서는 예외 로깅 스크립팅 가능한 작업 요소에 필요한 바인딩을 보여 줍니다.

표 1‑71. 바인딩 - 예외 로깅 작업 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

vm 입력 바인딩 n 로컬 매개 변수: vmn 소스 매개 변수: vm[attribute]n 유형: VC:VirtualMachinen 설명:생성한 스냅샷이 있는 현재 가상시스템

errorCode 입력 바인딩 n 로컬 매개 변수: errorCoden 소스 매개 변수:

errorCode[attribute]

n 유형: 문자열n 설명:가상 시스템의 스냅샷을 생성하는 동안 예외가 발생함

예외 로깅 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

//Writes the following event in the Orchestrator database

Server.error("Coudln't snapshot the VM '"+vm.name+"', exception: "+errorCode);

출력 설정 스크립팅 가능한 작업 요소

출력 설정 스크립팅 가능한 작업 요소는 스냅샷을 생성한 가상 시스템의 어레이가 포함된 워크플로의 출력 매개 변수를 생성합니다. 다음 표에서는 출력 설정 스크립팅 가능한 작업 요소에 필요한 바인딩을 보여줍니다.

VMware vRealize Orchestrator를 사용한 개발

164 VMware, Inc.

Page 165: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 1‑72. 바인딩 - 출력 설정 작업 요소

매개 변수 이름 바인딩 유형

기존 매개 변수에바인딩 또는 매개변수 생성? 바인딩 값

snapshotVmArray 입력 바인딩 n 로컬 매개 변수: snapshotVmArrayn 소스 매개 변수:

snapshotVmArray[attribute]

n 유형: Array/VC:VirtualMachinen 설명:스냅샷을 생성한 가상 시스템의어레이

snapshotVmArrayOut 출력 바인딩 n 로컬 매개 변수:snapshotVmArrayOut

n 소스 매개 변수:snapshotVmArrayOut[out-parameter]

n 유형: Array/VC:VirtualMachinen 설명:스냅샷을 생성한 가상 시스템의어레이

출력 설정 스크립팅 가능한 작업 요소는 다음과 같은 스크립팅된 함수를 수행합니다.

//Passes the value of the internal attribute to a workflow output parameter

snapshotVmArrayOut = snapshotVmArray;

복잡한 워크플로 예제 특성 속성 설정

워크플로 편집기의 일반 탭에서 특성 속성을 설정합니다.

필수 조건

다음 작업을 완료합니다.

n “복잡한 워크플로 예제 생성,”(151 페이지).

n “복잡한 워크플로 예제의 스키마 생성,”(153 페이지).

n “복잡한 워크플로 예제에 대한 바인딩 생성,”(157 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 일반 탭을 클릭합니다.

2 다음 특성의 읽기 전용 확인란을 선택해 읽기 전용 상수로 만듭니다.

n snapshotName

n snapshotDescription

n snapshotMemory

n snapshotQuiesce

워크플로의 특성 중 상수와 변수를 정의했습니다.

후속 작업

사용자가 워크플로를 실행할 때 입력 매개 변수 값을 지정할 입력 매개 변수 대화상자의 레이아웃을 만드는 워크플로 프레젠테이션을 생성해야 합니다.

1장 워크플로 개발

VMware, Inc. 165

Page 166: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

복잡한 워크플로 예제 입력 매개 변수의 레이아웃 생성

워크플로 편집기의 프레젠테이션 탭에서 입력 매개 변수 대화상자의 레이아웃이나 프레젠테이션을 생성합니다. 입력 매개 변수 대화 상자는 사용자가 워크플로를 실행할 때 열리며, 여기에서 사용자는 워크플로실행에 사용되는 입력 매개 변수를 입력합니다.

필수 조건

다음 작업을 완료합니다.

n “복잡한 워크플로 예제 생성,”(151 페이지).

n “복잡한 워크플로 예제의 스키마 생성,”(153 페이지).

n “복잡한 워크플로 예제의 매개 변수 정의,”(156 페이지).

n “복잡한 워크플로 예제에 대한 바인딩 생성,”(157 페이지).

n “복잡한 워크플로 예제 특성 속성 설정,”(165 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기에서 프레젠테이션 탭을 클릭합니다.

리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로에는 하나의 입력 매개 변수가 있으므로프레젠테이션 생성이 간단합니다.

2 프레젠테이션의 계층형 목록에서 프레젠테이션 노드를 마우스 오른쪽 버튼으로 클릭하고 표시 그룹생성을 선택합니다.

3 새 그룹 요소 위쪽에 표시된 새 단계 요소를 삭제합니다.

4 새 그룹 요소를 두 번 클릭하고 그룹 이름을 리소스 풀로 변경합니다.

5 프레젠테이션 탭 맨 아래 일반 탭의 설명 텍스트 상자에 리소스 풀 표시 그룹의 설명을 제공합니다.

예를 들어 스냅샷을 생성할 가상 시스템이 포함된 리소스 풀의 이름을 입력합니다.

6 (VC:ResourcePool)resourcePool 매개 변수를 클릭합니다.

7 (VC:ResourcePool)resourcePool에 대한 속성 탭을 클릭합니다.

8 속성 탭을 마우스 오른쪽 버튼으로 클릭하고 속성 추가 > 필수 입력을 선택합니다.

9 속성 탭을 마우스 오른쪽 버튼으로 클릭하고 속성 추가 > 값 선택을 선택합니다.

이 속성을 설정하면 사용자가 (VC:ResourcePool)resourcePool 입력 매개 변수 값을 선택하는 방법을 설정하는 것입니다.

10 (VC:ResourcePool)resourcePool 매개 변수를 리소스 풀 표시 그룹 아래로 끌어옵니다.

사용자가 워크플로를 실행할 때 표시되는 대화 상자의 레이아웃을 생성했습니다.

후속 작업

복잡한 워크플로 예제 개발을 완료했습니다. 이제 워크플로를 검증하고 실행할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

166 VMware, Inc.

Page 167: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

복잡한 워크플로 예제 검증 및 실행

워크플로를 생성한 후 검증하여 가능한 오류를 감지할 수 있습니다. 워크플로에 오류가 없으면 실행할 수있습니다.

필수 조건

워크플로를 생성하고 스키마를 배치하고 링크와 바인딩을 정의하며 매개 변수 속성을 정의한 다음 입력매개 변수 대화상자의 프레젠테이션을 생성합니다.

다음 작업을 완료합니다.

n “복잡한 워크플로 예제 생성,”(151 페이지).

n “복잡한 워크플로 예제에 대한 사용자 지정 작업 생성,”(152 페이지).

n “복잡한 워크플로 예제의 스키마 생성,”(153 페이지).

n “복잡한 워크플로 예제의 매개 변수 정의,”(156 페이지).

n “복잡한 워크플로 예제에 대한 바인딩 생성,”(157 페이지).

n “복잡한 워크플로 예제 특성 속성 설정,”(165 페이지).

n “복잡한 워크플로 예제 입력 매개 변수의 레이아웃 생성,”(166 페이지).

n 워크플로 편집기에서 편집하기 위해 워크플로를 엽니다.

프로시저

1 워크플로 편집기의 스키마 탭에서 검증을 클릭합니다.

검증 도구는 워크플로 정의에 있는 모든 오류를 감지합니다.

2 오류를 제거한 후에는 워크플로 편집기 맨 아래의 저장 후 닫기를 클릭합니다.

Orchestrator 클라이언트로 돌아옵니다.

3 워크플로 보기를 클릭합니다.

4 워크플로의 계층형 목록에서 워크플로 예제 > 리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성을선택합니다.

5 리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로를 마우스 오른쪽 버튼으로 클릭하고 워크플로 시작을 선택합니다.

입력 매개 변수 대화상자가 열리며 스냅샷을 생성할 가상 시스템이 포함된 리소스 풀을 입력하라는메시지가 나타납니다.

6 제출을 클릭하여 워크플로를 실행합니다.

리소스 풀에 있는 모든 가상 시스템의 스냅샷 생성 워크플로 아래에 워크플로 토큰이 나타납니다.

7 워크플로 토큰을 클릭해 실행되는 워크플로의 진행률을 추적합니다.

워크플로가 성공적으로 실행되면 워크플로는 선택한 리소스 풀에 있는 모든 가상 시스템의 스냅샷을 생성합니다.

후속 작업

워크플로에 대한 정보를 검토할 문서를 생성할 수 있습니다. “워크플로 설명서 생성,”(126 페이지) 항목을 참조하십시오.

1장 워크플로 개발

VMware, Inc. 167

Page 168: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator를 사용한 개발

168 VMware, Inc.

Page 169: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

스크립팅 2Orchestrator는 JavaScript를 사용해 Orchestrator에 플러그인한 기술의 API에 액세스하는 작업,워크플로 요소 및 정책을 만드는 빌딩 블록을 생성합니다.

Orchestrator는 Mozilla Rhino 1.7R4 JavaScript 엔진을 스크립팅 엔진으로 사용합니다. 스크립팅엔진은 변수 유형 확인, 이름 공간 관리, 자동 완성 및 예외 처리 기능을 제공합니다.

Orchestrator 워크플로 엔진을 사용하여 조건문, 루프, 어레이 및 문자열 등의 JavaScript 언어 기본기능을 사용할 수 있습니다. Orchestrator API가 제공하는 개체를 스크립팅에 사용하거나 플러그인을통해 Orchestrator에 가져온 그리고 JavaScript 개체에 매핑한 기타 API의 개체를 사용할 수 있습니다. Rhino에 대한 자세한 내용은 Mozilla Rhino 웹 사이트를 참조하십시오.

이 장에서는 다음 주제에 대해 설명합니다.

n “스크립팅이 필요한 Orchestrator 요소,”(169 페이지)

n “Orchestrator의 Mozilla Rhino 구현에 대한 제한 사항,”(170 페이지)

n “Orchestrator 스크립팅 API 사용,”(170 페이지)

n “vCenter Server 플러그인으로 XPath 표현식 사용,”(176 페이지)

n “예외 처리 지침,”(177 페이지)

n “Orchestrator JavaScript 예제,”(178 페이지)

스크립팅이 필요한 Orchestrator 요소모든 Orchestrator 요소에 스크립트를 작성해야 하는 것은 아닙니다. 애플리케이션의 유연성을 극대화하기 위해 JavaScript 함수를 추가해 특정 요소를 사용자 지정할 수 있습니다.

다음 Orchestrator 요소에 스크립트를 추가할 수 있습니다.

작업 작업은 스크립팅된 함수입니다. 한 작업에 대해 작성한 스크립팅을 단일 작업으로 제한하여 다른 워크플로 등 다른 요소에 의한 작업 재사용 가능성을극대화할 수 있습니다. 또는 작업 재사용 용량이 줄어들지만 워크플로의 복잡성을 제한하기 위해 작업이 여러 작업을 포함할 수 있습니다.

정책 트리거 이벤트를 감시하는 스크립트를 사용해 정책을 설정합니다. 트리거이벤트가 발생하면 정책은 스크립트에 정의한 오케스트레이션 작업을 시작합니다.

워크플로 스크립팅 가능한 작업 워크플로 요소를 사용하여 워크플로에서 사용할 수있는 사용자 지정 스크립팅된 작업이나 작업 시퀀스를 작성할 수 있습니다.또한 true 또는 false를 반환하는 스크립트에서 사용자 지정 의사 결정 요소를 위한 부울 의사 결정 구문을 정의합니다.

VMware, Inc. 169

Page 170: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Orchestrator의 Mozilla Rhino 구현에 대한 제한 사항Orchestrator에서는 Mozilla Rhino 1.7R4 JavaScript 엔진을 사용합니다. 그러나 Orchestrator의 Rhino 구현에는 몇 가지 제한 사항이 있습니다.

워크플로에 대한 스크립트를 작성할 때 Orchestrator의 Mozilla Rhino 구현에 대한 다음 제한 사항을고려해야 합니다.

n 워크플로가 실행될 때 워크플로 요소 간에 전달되는 개체는 JavaScript 개체가 아닙니다. 하나의 요소에서 다음 요소로 전달되는 것은 JavaScript 이미지가 있는 Java 개체의 직렬화입니다. 따라서전체 JavaScript 언어를 사용할 수 있는 것이 아니라 API 탐색기에 있는 클래스만 사용할 수 있습니다. 워크플로 요소 간에 함수 개체를 전달할 수 없습니다.

n Orchestrator는 Rhino 루트 컨텍스트가 아닌 컨텍스트의 스크립팅 가능한 작업 요소에서 코드를실행합니다. Orchestrator는 스크립팅 가능한 작업 요소 및 작업을 JavaScript 함수에 투명하게래핑하여 실행합니다. System.log(this);가 포함된 스크립팅 가능한 작업 요소는 this 전역 개체를 표준 Rhino 구현과 동일한 방식으로 표시하지 않습니다.

n 직렬화할 수 없는 개체를 반환하는 작업은 스크립팅에서만 호출할 수 있으며, 워크플로에서는 호출할수 없습니다. 직렬화할 수 없는 개체를 반환하는 작업을 호출하려면System.getModuleModuleName.action() 메서드를 사용하여 작업을 호출하는 스크립팅 가능한 작업요소를 작성해야 합니다.

n 워크플로 유효성 검사에서는 워크플로 특성 유형이 작업 또는 하위 워크플로의 입력 유형과 다른지여부를 확인하지 않습니다. 워크플로 입력 매개 변수의 유형을 변경(예: VIM3:VirtualMachine에서VC:VirtualMachine으로)했지만 원래 입력 유형을 사용하는 스크립팅 가능한 작업을 업데이트하지 않은경우 워크플로의 유효성은 검사되지만 워크플로가 실행되지는 않습니다.

Orchestrator 스크립팅 API 사용Orchestrator API는 JavaScript 개체 및 메서드와 마찬가지로, 플러그인을 통해 Orchestrator가 액세스하는 기술의 모든 개체 및 기능을 노출합니다.

예를 들어 Orchestrator API를 통해 vCenter Server API의 JavaScript 구현에 액세스하여 사용자가 생성한 스크립팅된 요소에 vCenter 작업을 포함할 수 있습니다. 또한 Orchestrator 서버에 설치한다른 모든 플러그인에서 개체의 JavaScript 구현에 액세스할 수도 있습니다. 타사 애플리케이션에 사용자 지정 플러그인을 생성한 경우 그 API의 개체를 Orchestrator API가 노출하는 JavaScript 개체에매핑합니다.

프로시저

1 워크플로 편집기에서 스크립팅 엔진 액세스(171 페이지)

Orchestrator 스크립팅 엔진에서는 Mozilla Rhino 1.7R4 JavaScript 엔진을 사용하여 워크플로의 스크립팅된 요소에 대한 스크립트를 작성하도록 도와줍니다. 워크플로 편집기의 스크립팅 탭에서 스크립팅된 워크플로 요소에 대한 스크립팅 엔진에 액세스할 수 있습니다.

2 작업 또는 정책 편집기에서 스크립팅 엔진 액세스(172 페이지)

Orchestrator 스크립팅 엔진에서는 Mozilla Rhino JavaScript 엔진을 사용하여 작업 또는 정책에 대한 스크립트를 작성하도록 도와줍니다. 작업 및 정책 편집기의 스크립팅 탭에서 작업 및 정책에 대한 스크립팅 엔진에 액세스할 수 있습니다.

3 Orchestrator API 탐색기 액세스(172 페이지)

Orchestrator에서는 Orchestrator API를 검색하고 스크립팅된 요소에서 사용 가능한JavaScript 개체에 대한 설명서를 보는 데 사용할 수 있는 API 탐색기를 제공합니다.

4 Orchestrator API 탐색기를 사용해 개체 찾기(172 페이지)

Orchestrator API는 전체 vCenter Server API를 포함해 모든 플러그인된 기술의 API를 노출합니다. Orchestrator API 탐색기는 스크립트에 추가해야 하는 개체를 찾도록 도와 줍니다.

VMware vRealize Orchestrator를 사용한 개발

170 VMware, Inc.

Page 171: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 스크립트 작성(173 페이지)

Orchestrator 스크립팅 엔진을 사용하여 스크립트를 쉽게 작성할 수 있습니다. 함수 자동 삽입 및스크립팅 줄 자동 완성은 스크립팅 프로세스를 가속화하고 스크립트 작성 오류의 가능성을 최소화합니다.

6 스크립트에 매개 변수 추가(175 페이지)

Orchestrator 스크립팅 엔진을 사용하여 사용 가능한 매개 변수를 스크립트로 쉽게 가져올 수 있습니다.

7 JavaScript 및 워크플로에서 Orchestrator 서버 파일 시스템 액세스(175 페이지)

Orchestrator에서는 JavaScript 및 워크플로에서 Orchestrator 서버 파일 시스템에 액세스하는 기능이 특정 디렉토리로 제한됩니다.

8 JavaScript에서 Java 클래스 액세스(176 페이지)

기본적으로 Orchestrator에서는 제한된 Java 클래스 집합으로 JavaScript 액세스가 제한됩니다. 보다 광범위한 Java 클래스에 대한 JavaScript 액세스가 필요한 경우 이 액세스를 허용하도록 Orchestrator 시스템 속성을 설정해야 합니다.

9 JavaScript에서 운영 체제 명령 액세스(176 페이지)

Orchestrator API는 Orchestrator 서버 호스트 운영 체제에서 명령을 실행하는 스크립팅 클래스인 Command를 제공합니다. Orchestrator 서버 호스트에 대한 무단 액세스를 방지하기 위해Orchestrator 애플리케이션에는 기본적으로 Command 클래스를 실행할 권한이 없습니다.

워크플로 편집기에서 스크립팅 엔진 액세스

Orchestrator 스크립팅 엔진에서는 Mozilla Rhino 1.7R4 JavaScript 엔진을 사용하여 워크플로의스크립팅된 요소에 대한 스크립트를 작성하도록 도와줍니다. 워크플로 편집기의 스크립팅 탭에서 스크립팅된 워크플로 요소에 대한 스크립팅 엔진에 액세스할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 이러한 워크플로는 Orchestrator 클라이언트의 워크플로 보기에서 워크플로를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

3 워크플로 편집기에서 스키마 탭을 클릭합니다.

4 스크립팅 가능한 작업 요소 또는 사용자 지정 의사 결정 요소를 워크플로 스키마에 추가합니다.

5 스크립팅 가능한 요소의 스크립팅 탭을 클릭합니다.

워크플로 요소의 스크립팅된 기능을 정의하기 위해 스크립팅 엔진에 액세스했습니다. 스크립팅 탭에서는API를 탐색하고, 개체에 대한 설명서를 참조하고, 개체를 검색하고, JavaScript를 작성할 수 있습니다.

후속 작업

API 탐색기를 사용하여 Orchestrator API를 검색합니다.

2장 스크립팅

VMware, Inc. 171

Page 172: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

작업 또는 정책 편집기에서 스크립팅 엔진 액세스

Orchestrator 스크립팅 엔진에서는 Mozilla Rhino JavaScript 엔진을 사용하여 작업 또는 정책에대한 스크립트를 작성하도록 도와줍니다. 작업 및 정책 편집기의 스크립팅 탭에서 작업 및 정책에 대한 스크립팅 엔진에 액세스할 수 있습니다.

프로시저

1 스크립팅을 편집할 요소의 유형에 따라 Orchestrator 클라이언트의 드롭다운 메뉴에서 옵션을 선택합니다.

옵션 설명

설계 작업 요소의 스크립팅을 편집하려면 이 옵션을 선택합니다.

실행 정책의 스크립팅을 편집하려면 이 옵션을 선택합니다.

2 작업 또는 정책 보기에서 작업 또는 정책을 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

3 작업 또는 정책 편집기에서 스크립팅 탭을 클릭합니다.

작업 또는 정책 요소의 스크립팅된 기능을 정의하기 위해 스크립팅 엔진에 액세스했습니다. 스크립팅 탭에서는 API를 탐색하고, 개체에 대한 설명서를 참조하고, 개체를 검색하고, JavaScript를 작성할 수 있습니다.

후속 작업

API 탐색기를 사용하여 Orchestrator API를 검색합니다.

Orchestrator API 탐색기 액세스

Orchestrator에서는 Orchestrator API를 검색하고 스크립팅된 요소에서 사용 가능한 JavaScript 개체에 대한 설명서를 보는 데 사용할 수 있는 API 탐색기를 제공합니다.

Orchestrator 설명서 홈 페이지에서 vCenter Server 플러그인에 대한 스크립팅 API의 온라인 버전을참조할 수 있습니다.

프로시저

1 Orchestrator 클라이언트에 로그인합니다.

2 도구 > API 탐색기를 선택합니다.

API 탐색기가 표시됩니다. 이를 사용하여 Orchestrator API의 모든 개체 및 기능을 검색할 수 있습니다.

후속 작업

API 탐색기를 사용하여 스크립팅 가능한 요소에 대한 스크립트를 작성합니다.

Orchestrator API 탐색기를 사용해 개체 찾기

Orchestrator API는 전체 vCenter Server API를 포함해 모든 플러그인된 기술의 API를 노출합니다. Orchestrator API 탐색기는 스크립트에 추가해야 하는 개체를 찾도록 도와 줍니다.

필수 조건

API 탐색기를 엽니다.

VMware vRealize Orchestrator를 사용한 개발

172 VMware, Inc.

Page 173: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

프로시저

1 API 탐색기의 검색 텍스트 상자에 개체의 이름이나 이름 중 일부를 입력하고 검색을 클릭합니다.

특정 개체 유형으로 검색을 제한하려면 스크립팅 클래스, 특성 및 메서드 그리고 유형 및 열거형 확인란을 선택하거나 선택을 취소합니다.

2 제안된 목록에서 요소를 두 번 클릭합니다.

개체는 왼쪽 계층형 목록에 강조 표시됩니다. 계층형 목록 아래 문서 창은 개체에 대한 정보를 표시합니다.

후속 작업

스크립트에서 찾은 개체를 사용하십시오.

API 탐색기의 JavaScript 개체

Orchestrator API 탐색기는 스크립팅 탭 왼쪽의 계층형 트리 또는 API 탐색기 대화상자에 있는 다양한종류의 JavaScript 개체를 식별하고 그룹화합니다. API 탐색기는 아이콘을 사용해 다양한 종류의 개체를 식별할 수 있도록 도와줍니다.

다음 표는 Orchestrator API의 개체를 설명하고 그 아이콘을 보여줍니다.

표 2‑1. Orchestrator API의 JavaScript 개체

개체 계층형 목록의 아이콘 설명

Type 유형

함수 세트 정적 메서드 세트를 포함하는 내부 유형

기본 기본 유형

개체 표준 Orchestrator 스크립팅 개체

특성 JavaScript 특성

메서드 JavaScript 메서드

생성자 JavaScript 생성자

열거형 JavaScript 열거형

문자열 세트 문자열 세트, 기본값

모듈 작업 모음

플러그인 플러그인이 정의하는 이미지 플러그인이 Orchestrator에 노출하는 API

스크립트 작성

Orchestrator 스크립팅 엔진을 사용하여 스크립트를 쉽게 작성할 수 있습니다. 함수 자동 삽입 및 스크립팅 줄 자동 완성은 스크립팅 프로세스를 가속화하고 스크립트 작성 오류의 가능성을 최소화합니다.

필수 조건

편집할 스크립팅된 요소를 열고 해당 스크립팅 탭을 클릭합니다.

프로시저

1 스크립팅 탭 왼쪽에 있는 개체의 계층형 목록을 탐색하거나 API 탐색기 검색 기능을 사용하여 스크립트에 추가할 유형, 클래스 또는 메서드를 선택합니다.

2장 스크립팅

VMware, Inc. 173

Page 174: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

2 유형, 클래스 또는 메서드를 마우스 오른쪽 버튼으로 클릭하고 복사를 선택합니다.

스크립팅 엔진이 선택한 요소의 복사를 허용하지 않는 경우 이 개체는 스크립트 컨텍스트에서 사용할수 없습니다.

3 스크립팅 패드를 마우스 오른쪽 버튼으로 클릭하고 복사한 요소를 스크립트의 적절한 위치에 붙여넣습니다.

스크립팅 엔진이 요소를 스크립트에 입력하고 해당 생성자 및 인스턴스 이름으로 완성합니다.

예를 들어 Date 개체를 복사한 경우 스크립팅 엔진은 다음 코드를 스크립트에 붙여넣습니다.

var myDate = new Date();

4 스크립트에 추가할 메서드를 복사하여 붙여넣습니다.

스크립팅 엔진이 필요한 특성을 추가하여 메서드 호출을 완성합니다.

예를 들어 com.vmware.library.vc.vm 모듈에서 cloneVM() 메서드를 복사한 경우 스크립팅 엔진은 다음코드를 스크립트에 붙여넣습니다.

System.getModule("com.vmware.library.vc.vm").cloneVM(vm,folder,name,spec)

스크립팅 엔진은 사용자가 요소에 이미 정의한 매개 변수를 강조 표시합니다. 정의되지 않은 매개 변수는 강조 표시되지 않은 상태로 유지됩니다.

5 스크립트에 붙여넣은 요소의 끝에 커서를 두고 Ctrl+스페이스바를 눌러 개체가 호출할 수 있는 메서드 및 특성에 대한 상황에 맞는 목록에서 선택합니다.

참고 자동 완성 기능은 현재 실험 단계입니다.

스크립트에 개체 및 함수를 추가했습니다.

후속 작업

스크립트에 매개 변수를 추가합니다.

스크립팅 키워드의 색 코딩

스크립팅된 워크플로 요소의 스크립팅 탭에서 스크립트를 추가한 경우 코드의 가독성을 개선하기 위해 특정 유형의 키워드가 서로 다른 색으로 표시됩니다.

별도로 지정하지 않는 한 모든 스크립팅은 표준 검정으로 표시됩니다.

표 2‑2. 스크립팅 키워드의 색 코딩

키워드 유형 스크립팅 탭의 텍스트 색

표준 JavaScript 키워드(예: if, else, for 및 new) 검정(굵게)

변수 선언, 즉 var 녹색

루프의 한정자(예: in) 빨강

Null 변수 값 자주색

Null이 아닌 변수 값 녹색

코드 주석 회색(기울임꼴)

Orchestrator 플러그인 개체 유형(예:VC:VirtualMachine 또는 VC:Host)

녹색

출력 텍스트 녹색

워크플로 특성 분홍색

워크플로 입력 분홍색

워크플로 출력 분홍색

VMware vRealize Orchestrator를 사용한 개발

174 VMware, Inc.

Page 175: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

스크립트에 매개 변수 추가

Orchestrator 스크립팅 엔진을 사용하여 사용 가능한 매개 변수를 스크립트로 쉽게 가져올 수 있습니다.

편집할 요소의 매개 변수를 이미 정의한 경우 스크립팅 탭 도구 모음에 링크로 표시됩니다.

필수 조건

편집할 스크립팅된 요소와 해당 스크립팅 탭을 엽니다.

프로시저

1 스크립팅 탭의 스크립팅 패드에서 스크립트의 적절한 위치로 커서를 이동합니다.

2 스크립팅 탭 도구 모음에서 매개 변수 링크를 클릭합니다.

Orchestrator가 커서의 위치에 매개 변수를 삽입합니다.

3 값이 null인 매개 변수를 스크립트에 삽입합니다.

정수, 부울 및 문자열과 같은 기본 유형에 null 값을 전달하면 Orchestrator 스크립팅 API가 이 인수의 기본값으로 자동으로 설정합니다.

스크립트에 매개 변수를 추가했습니다.

후속 작업

스크립트에 Java 클래스에 대한 액세스를 추가합니다.

JavaScript 및 워크플로에서 Orchestrator 서버 파일 시스템 액세스

Orchestrator에서는 JavaScript 및 워크플로에서 Orchestrator 서버 파일 시스템에 액세스하는 기능이 특정 디렉토리로 제한됩니다.

JavaScript 함수 및 워크플로에는 영구 디렉토리 c:\orchestrator에 대한 읽기, 쓰기 및 실행 권한만 있습니다.

Orchestrator 관리자는 시스템 속성을 설정하여 JavaScript 함수 및 워크플로에서 읽고, 쓰고, 실행할수 있는 폴더를 수정할 수 있습니다. 시스템 속성을 설정하는 방법에 대한 자세한 내용은VMware vRealize Orchestrator 설치 및 구성을 참조하십시오.

JavaScript 함수 및 워크플로에는 서버 시스템 기본 임시 I/O 폴더에 대한 읽기, 쓰기 및 실행 권한도있습니다. 기본 임시 I/O 폴더에 쓰기는 모든 권한으로 파일 시스템에 액세스할 수 있는 이식 가능하고보장된 구성 독립적인 방법입니다. 그러나 임시 I/O 폴더에 쓴 파일은 서버를 재부팅하면 손실됩니다.

JavaScript 함수에서 System.getTempDirectory 메서드를 호출하여 기본 임시 I/O 폴더를 가져올 수 있습니다.

System.getTempDirectory 메서드를 사용하여 서버 파일 시스템 액세스

관리자가 적절한 권한을 설정한 Orchestrator 서버 시스템의 폴더에 쓰는 대신 기본 임시 I/O 폴더에쓸 수 있습니다.

Orchestrator은 기본적으로 기본 임시 I/O 폴더에 대한 전체 읽기, 쓰기 및 실행 권한이 있습니다.JavaScript 함수에서 System.getTempDirectory 메서드를 사용하여 기본 임시 I/O 폴더를 가져올 수 있습니다.

프로시저

u JavaScript 함수에 다음 코드 줄을 포함하여 java.io.temp-dir 폴더에 액세스합니다.

var tempDir = System.getTempDirectory()

2장 스크립팅

VMware, Inc. 175

Page 176: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

JavaScript에서 Java 클래스 액세스

기본적으로 Orchestrator에서는 제한된 Java 클래스 집합으로 JavaScript 액세스가 제한됩니다. 보다 광범위한 Java 클래스에 대한 JavaScript 액세스가 필요한 경우 이 액세스를 허용하도록Orchestrator 시스템 속성을 설정해야 합니다.

기본적으로 Orchestrator JavaScript 엔진은 java.util.* 패키지의 클래스에만 액세스할 수 있습니다.

Orchestrator 관리자는 시스템 속성을 설정하여 JavaScript 함수에서 다른 Java 클래스에 액세스하도록 허용할 수 있습니다. 시스템 속성을 설정하는 방법에 대한 자세한 내용은VMware vRealize Orchestrator 설치 및 구성을 참조하십시오.

JavaScript에서 운영 체제 명령 액세스

Orchestrator API는 Orchestrator 서버 호스트 운영 체제에서 명령을 실행하는 스크립팅 클래스인Command를 제공합니다. Orchestrator 서버 호스트에 대한 무단 액세스를 방지하기 위해 Orchestrator애플리케이션에는 기본적으로 Command 클래스를 실행할 권한이 없습니다.

Orchestrator 관리자는 com.vmware.js.allow-local-process=true 시스템 속성을 설정하여 Command 스크립팅클래스에 액세스하도록 허용할 수 있습니다.

시스템 속성을 설정하는 방법에 대한 자세한 내용은 VMware vCenter Orchestrator 설치 및 구성을참조하십시오.

시스템 속성을 설정하는 방법에 대한 자세한 내용은 VMware vCenter Orchestrator 설치 및 구성을참조하십시오.

vCenter Server 플러그인으로 XPath 표현식 사용vCenter Server 플러그인에서 찾기 메서드를 사용하여 vCenter Server 인벤토리 개체에 대해 쿼리할 수 있습니다. XPath 표현식을 사용하여 검색 매개 변수를 정의할 수 있습니다.

vCenter Server 플러그인에는 getAllDatastores(), getAllResourcePools(), findAllForType()과 같은 개체찾기 메서드 집합이 포함되어 있습니다. 이러한 메서드를 사용하여 Orchestrator 서버에 연결된vCenter Server 인스턴스의 인벤토리에 액세스하고 ID, 이름 또는 기타 속성별로 개체를 검색할 수 있습니다.

성능상의 이유로 찾기 메서드는 검색 쿼리에서 속성 집합을 지정하지 않는 한, 쿼리된 개체의 속성을 반환하지 않습니다.

Orchestrator 설명서 홈 페이지에서 vCenter Server 플러그인에 대한 스크립팅 API의 온라인 버전을참조할 수 있습니다.

중요 XPath 표현식을 기반으로 하는 쿼리는 찾기 메서드가 vCenter Server 측에서 지정된 유형의모든 개체를 반환하고 쿼리 필터가 vCenter Server 플러그인 측에 적용되기 때문에 Orchestrator 성능에 영향을 줄 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

176 VMware, Inc.

Page 177: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

vCenter Server 플러그인으로 XPath 표현식 사용

찾기 메서드를 호출할 때 XPath 쿼리 언어를 기반으로 하는 표현식을 사용할 수 있습니다. 검색은XPath 표현식과 일치하는 모든 인벤토리 개체를 반환합니다. 임의의 속성을 쿼리하려면 이러한 속성을포함하여 문자열 어레이 양식으로 스크립트를 검색할 수 있습니다.

다음 JavaScript 예제는 VcPlugin 스크립팅 개체 및 XPath 표현식을 사용하여 vCenter Server 관리개체의 일부이고 해당 개체의 이름에 ds 문자열이 포함된 모든 데이터스토어 개체의 이름을 반환합니다.

var datastores = VcPlugin.getAllDatastores(null, "xpath:name[contains(.,'ds')]");

for each (datastore in datastores){

System.log(datastore.name);

}

Server 스크립팅 개체 및 findAllForType 찾기 메서드를 사용하여 동일한 XPath 표현식을 호출할 수 있습니다.

var datastores = Server.findAllForType("VC:Datastore", "xpath:name[contains(.,'ds')]");

for each (datastore in datastores){

System.log(datastore.name);

}

다음 스크립트 예제는 ID가 숫자 1로 시작하는 모든 호스트 시스템 개체의 이름을 반환합니다.

var hosts = VcPlugin.getAllHostSystems(null, "xpath:id[starts-with(.,'1')]");

for each (host in hosts){

System.log(host.name);

}

다음 스크립트는 개체 이름에 대문자 또는 소문자로 DC 문자열을 포함하는 모든 데이터센터 개체의 이름및 ID를 반환합니다. 스크립트는 태그 속성도 검색합니다.

var datacenters = VcPlugin.getAllDatacenters(['tag'], "xpath:name[contains(translate(., 'DC', 'dc'),

'dc')]");

for each (datacenter in datacenters){

System.log(datacenter.name + “ ” + datacenter.id);

}

예외 처리 지침Mozilla Rhino JavaScript 엔진의 Orchestrator 구현은 오류를 처리할 수 있도록 예외 처리를 지원합니다. 스크립트에서 예외 처리기를 작성할 때 다음 지침을 사용해야 합니다.

n 다음 ECMA(European Computer Manufacturers Association) 오류 유형을 사용합니다.Error를 플러그인 함수에서 반환되는 일반 예외 및 다음 특정 오류 유형으로 사용합니다.

n TypeError

n RangeError

n EvalError

n ReferenceError

n URIError

n SyntaxError

2장 스크립팅

VMware, Inc. 177

Page 178: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

다음 예제에서는 URIError 정의를 보여 줍니다.

try {

...

throw new URIError("VirtualMachine with ID 'vm-0056'

not found on 'vcenter-test-1'") ;

...

} catch ( e if e instanceof URIError ) {

}

n 스크립트에서 인식하지 않는 모든 예외는 다음 예제와 같이 <type>:SPACE<human readable message> 형식의 단순한 문자열 개체여야 합니다.

throw "ValidationError: The input parameter 'myParam' of type 'string' is too short."

n 사용자가 읽을 수 있는 메시지를 가능한 한 명확하게 작성합니다.

n 단순한 문자열 예외 유형 검사에서는 다음 패턴을 사용해야 합니다.

try {

throw "VMwareNoSpaceLeftOnDatastore: Datastore 'myDatastore' has no space left" ;

} catch ( e if (typeof(e)=="string" && e.indexOf("VMwareNoSpaceLeftOnDatastore:") == 0) ) {

System.log("No space left on device") ;

// Do something useful here

}

n 단순한 문자열 예외 유형 검사에서는 워크플로의 스크립팅된 요소에서 다음 패턴을 사용해야 합니다.

if (typeof(errorCode)=="string"

&& errorCode.indexOf("VMwareNoSpaceLeftOnDatastore:")

== 0) {

// Do something useful here

}

Orchestrator JavaScript 예제일반적인 오케스트레이션 작업을 위한 JavaScript 작성에 도움이 되는 Orchestrator JavaScript 예제를 자르고 붙여넣어 적용할 수 있습니다.

n 기본 스크립팅 예제(179 페이지)

워크플로 스크립팅된 요소, 작업 및 정책에는 공통 작업의 기본 스크립팅이 필요합니다. 스크립팅된요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

n 이메일 스크립팅 예제(180 페이지)

워크플로 스크립팅된 요소는 일반적인 이메일 관련 작업의 스크립팅을 포함할 수 있습니다. 스크립팅된 요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

n 파일 시스템 스크립팅 예제(182 페이지)

워크플로 스크립팅된 요소, 작업 및 정책에는 공통 파일 시스템 작업에 대한 스크립팅이 필요합니다. 스크립팅된 요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

n LDAP 스크립팅 예제(182 페이지)

워크플로 스크립트된 요소, 작업 및 정책에는 공통 LDAP 작업 스크립팅이 필요합니다. 스크립트된요소에 이러한 예제를 자르고 붙여넣어 적용할 수 있습니다.

n 로깅 스크립팅 예제(183 페이지)

워크플로 스크립트된 요소, 작업 및 정책에는 공통 로깅 작업 스크립팅이 필요합니다. 스크립트된요소에 이러한 예제를 자르고 붙여넣어 적용할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

178 VMware, Inc.

Page 179: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 네트워킹 스크립팅 예제(183 페이지)

워크플로 스크립트된 요소, 작업 및 정책에는 공통 네트워킹 작업 스크립팅이 필요합니다. 스크립팅된 요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

n 워크플로 스크립팅 예제(183 페이지)

워크플로 스크립트된 요소, 작업 및 정책에는 공통 워크플로 작업의 예제 스크립팅이 필요합니다.스크립팅된 요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

기본 스크립팅 예제

워크플로 스크립팅된 요소, 작업 및 정책에는 공통 작업의 기본 스크립팅이 필요합니다. 스크립팅된 요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

XML 문서 액세스

다음 JavaScript 예제에서는 Orchestrator JavaScript API의 E4X(ECMAScript for XML) 구현을 사용하여 JavaScript에서 XML 문서에 액세스할 수 있습니다.

참고 Orchestrator는 JavaScript API의 E4X 구현 외에 XML 플러그인의 DOM(문서 개체 모델)도 제공합니다. XML 플러그인과 해당 샘플 워크플로에 대한 자세한 내용은 vRealize Orchestrator플러그인 사용을 참조하십시오.

var people = <people>

<person id="1">

<name>Moe</name>

</person>

<person id="2">

<name>Larry</name>

</person>

</people>;

System.log("'people' = " + people);

// built-in XML type

System.log("'people' is of type : " + typeof(people));

// list-like interface System.log("which contains a list of " +

people.person.length() + " persons");

System.log("whose first element is : " + people.person[0]);

// attribute 'id' is mapped to field '@id'

people.person[0].@id='47';

// change Moe's id to 47

// also supports search by constraints

System.log("Moe's id is now : " + people.person.(name=='Moe').@id);

// suppress Moe from the list

delete people.person[0];

System.log("Moe is now removed.");

// new (sub-)document can be built from a string

people.person[1] = new XML("<person id=\"3\"><name>James</name></person>");

System.log("Added James to the list, which is now :");

for each(var person in people..person)

2장 스크립팅

VMware, Inc. 179

Page 180: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

for each(var person in people..person){

System.log("- " + person.name + " (id=" + person.@id + ")");

}

해시 테이블에서 속성 설정 및 가져오기

다음 JavaScript 예제에서는 해시 테이블에서 속성을 설정하고 해시 테이블에서 속성을 가져옵니다. 다음 예제는 키는 항상 문자열이고, 값은 개체, 숫자, 부울 또는 문자열입니다.

var table = new Properties() ;

table.put("myKey",new Date()) ;

// get the object back

var myDate= table.get("myKey") ;

System.log("Date is : "+myDate) ;

문자열 내용 바꾸기

다음 JavaScript 예제에서는 문자열의 내용을 새 내용으로 바꿉니다.

var str1 = "'hello'" ;

var reg = new RegExp("(')", "g");

var str2 = str1.replace(reg,"\\'") ;

System.log(""+str2) ; // result : \'hello\'

유형 비교

다음 JavaScript 예제에서는 개체가 지정된 개체 유형과 일치하는지 확인합니다.

var path = 'myurl/test';

if(typeof(path, string)){

throw("string");

else {

throw("other");

}

Orchestrator 서버에서 명령 실행

다음 JavaScript 예제에서는 Orchestrator 서버에서 명령줄을 실행할 수 있습니다. 서버를 시작하는데 사용한 것과 동일한 자격 증명을 사용합니다.

참고 기본적으로 파일 시스템에 대한 액세스가 제한됩니다.

var cmd = new Command("ls -al") ;

cmd.execute(true) ;

System.log(cmd.output) ;

이메일 스크립팅 예제

워크플로 스크립팅된 요소는 일반적인 이메일 관련 작업의 스크립팅을 포함할 수 있습니다. 스크립팅된요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

메일 워크플로를 실행하는 경우 이 워크플로는 메일 구성 워크플로에 설정한 기본 메일 서버 구성을 사용합니다. 워크플로 스크립팅된 요소에서 사용자 지정 값을 정의하거나 입력 매개 변수를 사용하여 기본값을 재정의할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

180 VMware, Inc.

Page 181: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

이메일 주소 가져오기

다음 JavaScript 예제에서는 실행 중인 스크립트의 현재 소유자에 대한 이메일 주소를 가져옵니다.

var emailAddress = Server.getRunningUser().emailAddress ;

이메일 보내기

다음 JavaScript 예제에서는 SMTP 서버를 통해 정의된 내용이 포함된 이메일을 정의된 받는 사람에게보냅니다.

var message = new EmailMessage() ;

message.smtpHost = "smtpHost" ;

message.subject= "my subject" ;

message.toAddress = "[email protected]" ;

message.fromAddress = "[email protected]" ;

message.addMimePart("This is a simple message","text/html") ;

message.sendMessage() ;

이메일 메시지 검색

다음 JavaScript 예제에서는 MailClient 클래스에서 제공하는 스크립팅 API를 사용하여 이메일 계정의메시지를 삭제하지 않고 검색합니다.

var myMailClient = new MailClient();

myMailClient.setProtocol(mailProtocol);

if(useSSL){

myMailClient.enableSSL();

}

myMailClient.connect( mailServer, mailPort, mailUsername, mailPassword);

System.log("Successfully login!");

try {

myMailClient.openFolder("Inbox");

var messages = myMailClient.getMessages();

System.log("Reading messages...!");

if ( messages != null && messages.length > 0 ) {

System.log( "You have " + messages.length + " email(s) in your inbox" );

for (i = 0; i < messages.length; i++) {

System.log("");

System.log("-----MSG-------");

System.log("Headers: ");

var headerProp = messages[i].getHeaders();

for each(key in headerProp.keys){

System.log(key+": "+headerProp.get(key));

}

System.log("");

System.log( "Message["+ i +"] with from: " + messages[i].from + " to: " + messages[i].to);

System.log( "Message["+ i +"] with subject: " + messages[i].subject);

var content = messages[i].getContent();

System.log("Msg content as string: " + content);

}

} else {

2장 스크립팅

VMware, Inc. 181

Page 182: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

System.warn( "No messages found" );

}

} finally {

myMailClient.closeFolder();

myMailClient.close();

}

파일 시스템 스크립팅 예제

워크플로 스크립팅된 요소, 작업 및 정책에는 공통 파일 시스템 작업에 대한 스크립팅이 필요합니다. 스크립팅된 요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

간단한 텍스트 파일에 컨텐츠 추가

다음 JavaScript 예제는 텍스트 파일에 컨텐츠를 추가합니다.

var tempDir = System.getTempDirectory() ;

var fileWriter = new FileWriter(tempDir + "/readme.txt") ;

fileWriter.open() ;

fileWriter.writeLine("File written at : "+new Date()) ;

fileWriter.writeLine("Another line") ;

fileWriter.close() ;

파일 컨텐츠 가져오기

다음 JavaScript 예제는 Orchestrator 서버 호스트 컴퓨터에서 파일 컨텐츠를 가져옵니다.

var tempDir = System.getTempDirectory() ;

var fileReader = new FileReader(tempDir + "/readme.txt") ;

fileReader.open() ;

var fileContentAsString = fileReader.readAll();

fileReader.close() ;

LDAP 스크립팅 예제

워크플로 스크립트된 요소, 작업 및 정책에는 공통 LDAP 작업 스크립팅이 필요합니다. 스크립트된 요소에 이러한 예제를 자르고 붙여넣어 적용할 수 있습니다.

LDAP 개체를 Active Directory 개체로 변환

다음 JavaScript는 LDAP 그룹 요소를 Active Directory 사용자 그룹 개체로 변환하고 되돌리는 예제입니다.

var ldapGroup ;

// convert from ldap element to Microsoft:UserGroup object

var adGroup = ActiveDirectory.search("UserGroup",ldapGroup.commonName) ;

// convert back to LdapGroup element

var ldapElement = Server.getLdapElement(adGroup.distinguishedName) ;

VMware vRealize Orchestrator를 사용한 개발

182 VMware, Inc.

Page 183: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

로깅 스크립팅 예제

워크플로 스크립트된 요소, 작업 및 정책에는 공통 로깅 작업 스크립팅이 필요합니다. 스크립트된 요소에이러한 예제를 자르고 붙여넣어 적용할 수 있습니다.

영구 로깅

다음 JavaScript 예제는 영구 로그 항목을 생성합니다.

Server.log("This is a persistant message", "enter a long description here");

Server.warn("This is a persistant warning", "enter a long description here");

Server.error("This is a persistant error", "enter a long description here");

비영구 로깅

다음 JavaScript 예제는 비영구 로그 항목을 생성합니다.

System.log("This is a non-persistant log message");

System.warn("This is a non-persistant log warning");

System.error("This is a non-persistant log error");

네트워킹 스크립팅 예제

워크플로 스크립트된 요소, 작업 및 정책에는 공통 네트워킹 작업 스크립팅이 필요합니다. 스크립팅된 요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

URL에서 텍스트 가져오기

다음 JavaScript 예제는 URL에 액세스하여 텍스트를 가져온 다음 문자열로 변환합니다.

var url = new URL("http://www.vmware.com") ;

var htmlContentAsString = url.getContent() ;

워크플로 스크립팅 예제

워크플로 스크립트된 요소, 작업 및 정책에는 공통 워크플로 작업의 예제 스크립팅이 필요합니다. 스크립팅된 요소에 이러한 예제를 자르고 붙여넣고 해당 요소에 맞게 조정할 수 있습니다.

현재 사용자의 모든 워크플로 실행을 반환

다음 JavaScript 예제는 서버에서 실행되는 모든 워크플로를 가져와 현재 사용자에게 속하는지 여부를확인합니다.

var allTokens = Server.findAllForType('WorkflowToken');

var currentUser = Server.getCredential().username;

var res = [];

for(var i = 0; i<res.length; i++){

if(allTokens[i].runningUserName == currentUser){

res.push(allTokens[i]);

}

}

return res;

2장 스크립팅

VMware, Inc. 183

Page 184: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

현재 워크플로 토큰에 액세스

workflow 변수를 사용해 현재 워크플로 토큰에 액세스할 수 있습니다. 현재 워크플로 실행에 액세스를 제공하는 WorkflowToken 유형의 개체입니다. 다음 JavaScript 예제는 워크플로 토큰의 ID와 시작 날짜를 가져옵니다.

System.log("Current workflow run ID: " + workflow.id);

System.log("Current workflow run start date: "+workflow.startDate);

워크플로 스케줄링

다음 JavaScript 예제는 지정된 속성 집합을 사용해 워크플로를 시작한 다음 한 시간 후에 시작하도록스케줄링합니다.

var workflowToLaunch = myWorkflow ;

// create parameters

var workflowParameters = new Properties() ;

workflowParameters.put("name","John Doe") ;

// change the task name

workflowParameters.put("__taskName","Workflow for John Doe") ;

// create scheduling date one hour in the future

var workflowScheduleDate = new Date() ;

var time = workflowScheduleDate.getTime() + (60*60*1000) ;

workflowScheduleDate.setTime(time) ; var scheduledTask =

workflowToLaunch.schedule(workflowParameters,workflowScheduleDate);

루프의 선택한 개체에서 워크플로 실행

다음 JavaScript 예제는 가상 시스템의 어레이를 가져와 For 루프의 각 어레이에서 워크플로를 실행합니다. VMs 및 workflowToRun은 워크플로 입력입니다.

var len=VMs.length;

for (var i=0; i < len; i++ )

{

var VM = VMs[i];

//var workflowToLaunch = Server.getWorkflowWithId("workflowId");

var workflowToLaunch = workflowToRun;

if (workflowToLaunch == null) {

throw "Workflow not found";

}

var workflowParameters = new Properties();

workflowParameters.put("vm",VM);

var wfToken = workflowToLaunch.execute(workflowParameters);

System.log ("Ran workflow on " +VM.name);

}

VMware vRealize Orchestrator를 사용한 개발

184 VMware, Inc.

Page 185: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

작업 개발 3Orchestrator에서는 미리 정의된 작업 라이브러리를 제공합니다. 작업은 워크플로 및 스크립트에서 빌딩 블록을 사용하는 개별 함수를 나타냅니다.

작업은 JavaScript 함수로서, 여러 입력 매개 변수를 사용하고 단일 반환 값을 제공합니다.Orchestrator API의 모든 개체 또는 플러그인을 사용하여 Orchestrator로 가져온 API의 개체를 호출할 수 있습니다.

워크플로가 실행되면 작업은 해당 워크플로의 특성에서 입력 매개 변수를 가져옵니다. 이러한 특성은 워크플로의 초기 입력 매개 변수 또는 워크플로가 실행될 때 워크플로의 다른 요소가 설정하는 특성일 수 있습니다.

이 장에서는 다음 주제에 대해 설명합니다.

n “작업 재사용,”(185 페이지)

n “작업 보기 액세스,”(185 페이지)

n “작업 보기의 구성 요소,”(186 페이지)

n “작업 생성,”(186 페이지)

n “작업 버전 기록 사용,”(188 페이지)

n “삭제된 작업 복원,”(189 페이지)

작업 재사용스크립트 가능한 작업 워크플로 요소에 직접 코딩하는 대신 개별 함수를 작업으로 정의하면 라이브러리에이를 노출하는 것입니다. 라이브러리가 작업에 표시되면 다른 워크플로가 이를 사용할 수 있습니다.

작업을 호출하는 워크플로와 독립적으로 정의하면 더 쉽게 작업을 업데이트하거나 최적화할 수 있습니다.개별 작업을 정의하면 다른 워크플로가 작업을 재사용할 수도 있습니다. 워크플로가 실행되면Orchestrator는 워크플로가 처음 작업을 실행할 때만 각 작업을 캐시합니다. 이후에는 Orchestrator가 캐시된 작업을 재사용할 수 있습니다. 캐싱 작업은 워크플로 또는 빠른 루프에서 재귀 호출에 유용합니다.

계층형 작업 목록에서 작업을 복제하거나, 다른 워크플로 또는 패키지로 내보내거나, 다른 모듈로 이동할수 있습니다.

작업 보기 액세스Orchestrator 클라이언트 인터페이스에는 Orchestrator 서버의 작업 라이브러리에 대한 액세스를 제공하는 작업 보기가 있습니다.

Orchestrator 클라이언트 인터페이스의 작업 보기에서는 Orchestrator 서버에서 사용할 수 있는 모든작업의 계층 목록을 제공합니다.

VMware, Inc. 185

Page 186: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 작업 보기를 클릭합니다.

3 작업 계층 목록의 노드를 확장하여 작업 라이브러리를 찾아봅니다.

작업 보기를 사용하여 라이브러리의 작업에 대한 정보를 보고 작업을 생성 및 편집할 수 있습니다.

작업 보기의 구성 요소작업 계층 목록에서 작업을 클릭하면 해당 작업에 대한 정보가 Orchestrator 클라이언트의 오른쪽 창에표시됩니다.

작업 보기에는 4개의 탭이 있습니다.

일반 이름, 버전 번호, 권한, 설명 등 작업에 대한 일반 정보를 표시합니다.

스크립팅 작업의 반환 유형, 입력 매개 변수, 작업의 기능을 정의하는 JavaScript코드를 표시합니다.

이벤트 이 작업에서 발생하거나 트리거된 모든 이벤트를 표시합니다.

사용 권한 이 작업에 대한 액세스 권한이 있는 사용자 및 사용자 그룹을 표시합니다.

작업 생성워크플로와 같은 다른 요소에서 사용할 수 있는 작업으로 개별 함수를 정의할 수 있습니다. 작업은 정의된입력 및 출력 매개 변수와 사용 권한이 있는 JavaScript 함수입니다.

n 작업 생성(186 페이지)

스크립트 가능한 작업 워크플로 요소에 직접 코딩하는 대신 개별 함수를 작업으로 정의하면 다른 워크플로에서 사용할 수 있도록 라이브러리에 이를 노출할 수 있습니다.

n 작업을 구현하는 요소 찾기(187 페이지)

작업을 편집하고 해당 동작을 변경하는 경우 이 작업을 구현하는 워크플로 또는 애플리케이션을 실수로 단절시킬 수 있습니다. Orchestrator는 지정된 요소를 구현하는 모든 작업, 워크플로 또는패키지를 찾을 수 있는 기능을 제공합니다. 요소를 수정할 경우 다른 요소의 작업에 미치는 영향이있는지 확인할 수 있습니다.

n 작업 코딩 지침(187 페이지)

워크플로 성능을 최적화하고 작업 재사용 가능성을 극대화하기 위해서는 작업을 만들 때 몇 가지 기본 코딩 지침을 따라야 합니다.

작업 생성

스크립트 가능한 작업 워크플로 요소에 직접 코딩하는 대신 개별 함수를 작업으로 정의하면 다른 워크플로에서 사용할 수 있도록 라이브러리에 이를 노출할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 작업 보기를 클릭합니다.

3 작업 계층 목록의 루트를 확장하고 작업을 생성할 모듈로 이동합니다.

4 모듈을 마우스 오른쪽 버튼으로 클릭하고 작업 추가를 선택합니다.

VMware vRealize Orchestrator를 사용한 개발

186 VMware, Inc.

Page 187: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

5 텍스트 상자에 작업 이름을 입력하고 확인을 클릭합니다.

사용자 지정 작업이 작업 라이브러리에 추가됩니다.

6 작업을 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

7 스크립팅 탭을 클릭합니다.

8 기본 반환 유형을 변경하려면 무효 링크를 클릭합니다.

9 화살표 아이콘을 클릭하여 작업 입력 매개 변수를 추가합니다.

10 작업 스크립트를 작성합니다.

11 작업 매개 변수를 설정합니다.

12 저장 후 닫기를 클릭합니다.

사용자 지정 작업을 만들고 작업 입력 매개 변수를 추가했습니다.

후속 작업

워크플로에서 새 사용자 지정 작업을 사용할 수 있습니다.

작업을 구현하는 요소 찾기

작업을 편집하고 해당 동작을 변경하는 경우 이 작업을 구현하는 워크플로 또는 애플리케이션을 실수로단절시킬 수 있습니다. Orchestrator는 지정된 요소를 구현하는 모든 작업, 워크플로 또는 패키지를 찾을 수 있는 기능을 제공합니다. 요소를 수정할 경우 다른 요소의 작업에 미치는 영향이 있는지 확인할 수있습니다.

중요 이 요소를 사용하는 요소 찾기 기능은 모든 패키지, 워크플로 및 정책을 확인하지만 스크립트에서확인하는 것이 아닙니다. 따라서 작업을 수정하면 이 요소를 사용하는 요소 찾기 기능이 식별하지 못한 스크립트에서 해당 작업을 호출하는 요소가 영향을 받을 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 작업 보기를 클릭합니다.

3 작업 계층 목록의 노드를 확장하여 지정된 작업으로 이동합니다.

4 작업을 마우스 오른쪽 버튼으로 클릭하고 이 요소를 사용하는 요소 찾기를 선택합니다.

이 작업을 구현하는 모든 요소(예: 워크플로 또는 패키지)가 대화 상자에 표시됩니다.

5 결과 목록에서 요소를 두 번 클릭하여 Orchestrator 클라이언트에 해당 요소를 표시합니다.

작업을 구현하는 모든 요소를 찾았습니다.

후속 작업

이 요소를 수정할 경우 다른 요소에 미치는 영향이 있는지 확인할 수 있습니다.

작업 코딩 지침

워크플로 성능을 최적화하고 작업 재사용 가능성을 극대화하기 위해서는 작업을 만들 때 몇 가지 기본 코딩 지침을 따라야 합니다.

기본 작업 지침

작업을 만들 때 기본 지침을 사용해야 합니다.

n 모든 작업은 해당 역할 및 기능에 대한 설명을 포함해야 합니다.

3장 작업 개발

VMware, Inc. 187

Page 188: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 간단한 기본 작업을 작성하여 워크플로에서 결합합니다.

n 여러 기능을 수행하는 작업을 작성하면 작업의 재사용 가능성이 제한되므로 이러한 작업을 작성하지마십시오.

n 장시간 실행되는 작업을 작성하지 마십시오. 대신 워크플로에 루프를 만들고 작업 요소 뒤에 대기 이벤트 또는 대기 타이머 요소를 포함하십시오.

n 작업에서 체크포인트를 작성하지 마십시오. 워크플로가 각 요소 실행의 시작 및 끝 지점에 체크포인트를 설정합니다.

n 작업에서 루프를 작성하지 마십시오. 대신 워크플로에 루프를 만드십시오. 서버가 다시 시작되면 실행 중인 워크플로가 요소 시작 지점의 마지막 체크포인트에서 재개됩니다. 작업 내에 루프를 작성한경우 워크플로가 해당 작업을 실행하는 동안 서버가 다시 시작되면 워크플로가 해당 작업의 시작 지점에 있는 체크포인트에서 재개되고 루프가 처음부터 다시 시작됩니다.

작업 이름 지정 지침

작업 이름을 지정할 때 기본 지침을 사용합니다.

n 작업 이름을 영어로 작성합니다.

n 소문자로 작업 이름을 시작합니다. 이름에서 결합된 각 단어의 시작 부분에는 대문자를 사용합니다(예: myAction).

n 작업의 기능이 명확하도록 작업 이름을 가능한 한 명시적으로 작성합니다 (예: backupAllVMsInPool).

n 모듈 이름을 가능한 한 명시적으로 작성합니다.

n 모듈 이름은 고유해야 합니다.

n 모듈 이름에 역방향 인터넷 주소 형식을 사용합니다 (예: com.vmware.myactions.myAction).

작업 매개 변수 지침

작업 매개 변수 정의를 작성할 때 기본 지침을 사용합니다.

n 매개 변수 이름을 영어로 작성합니다.

n 소문자로 매개 변수 이름을 시작합니다.

n 매개 변수 이름을 가능한 한 명시적으로 작성합니다.

n 매개 변수 이름을 한 단어로 제한하는 것이 좋습니다. 이름에 여러 단어를 포함해야 하는 경우 이름에서 결합된 각 단어의 시작 부분에는 대문자를 사용합니다 (예: myParameter).

n 개체 어레이를 나타내는 매개 변수에는 복수 형식을 사용합니다.

n 변수 이름은 명확해야 합니다(예: displayName).

n 각 매개 변수의 용도를 나타내는 설명을 포함합니다.

n 단일 작업에 지나치게 많은 매개 변수를 사용하지 마십시오.

작업 버전 기록 사용버전 기록을 사용하여 작업을 이전 버전으로 되돌릴 수 있습니다. 작업 상태를 이전 또는 이후 작업 버전으로 되돌릴 수 있습니다. 또한 작업의 현재 상태와 저장된 버전 간의 차이점을 비교할 수 있습니다.

Orchestrator는 사용자가 작업 버전을 높이고 저장한 경우 각 작업에 대한 새 버전 기록 항목을 생성합니다. 이후에 작업을 변경하더라도 현재 버전 항목은 변경되지 않습니다. 예를 들어 작업 버전 1.0.0을만들고 저장하면 작업의 상태가 데이터베이스에 저장됩니다. 이 작업을 변경한 경우 Orchestrator 클라이언트에 작업 상태를 저장할 수 있지만 변경 내용을 작업 버전 1.0.0에 적용할 수는 없습니다. 변경 내용을 데이터베이스에 저장하려면 후속 작업 버전을 만들고 저장해야 합니다. 버전 기록은 작업 자체와 함께 데이터베이스에 유지됩니다.

VMware vRealize Orchestrator를 사용한 개발

188 VMware, Inc.

Page 189: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

작업을 삭제한 경우 Orchestrator는 해당 요소의 버전 기록을 데이터베이스에서 삭제하지 않고 해당 요소를 데이터베이스에서 삭제된 것으로 표시합니다. 따라서 삭제된 작업을 복원할 수 있습니다. “삭제된작업 복원,”(189 페이지) 항목을 참조하십시오.

필수 조건

편집할 작업을 엽니다.

프로시저

1 작업 편집기에서 일반 탭을 클릭합니다.

2 버전 기록 표시를 클릭합니다.

버전 기록 창이 표시됩니다.

3 작업 버전을 선택하고 현재 버전과의 차이점을 클릭하여 차이점을 비교할 수 있습니다.

현재 작업 버전과 선택한 작업 버전 간의 차이점이 표시된 창이 나타납니다.

4 작업 버전을 선택하고 되돌리기를 클릭하여 작업의 상태를 복원합니다.

주의 현재 작업 버전을 저장하지 않은 경우 버전 기록에서 삭제되므로 현재 버전으로 다시 되돌릴수 없습니다.

작업 상태가 선택한 버전의 상태로 되돌려집니다.

삭제된 작업 복원라이브러리에서 삭제된 작업을 복원할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 작업 보기를 클릭합니다.

3 삭제된 작업을 복원할 폴더로 이동합니다.

4 폴더를 마우스 오른쪽 버튼으로 클릭하고 삭제된 작업 복원을 선택합니다.

5 복원할 작업을 하나 이상 선택하고 복원을 클릭합니다.

선택한 폴더에 작업이 표시됩니다.

3장 작업 개발

VMware, Inc. 189

Page 190: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator를 사용한 개발

190 VMware, Inc.

Page 191: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

리소스 요소 생성 4사용자가 Orchestrator와 독립적으로 만든 개체를 워크플로에서 특성으로 사용해야 할 수 있습니다. 워크플로에서 외부 개체를 특성으로 사용하려면 해당 개체를 리소스 요소로 Orchestrator 서버에 가져옵니다.

워크플로에서 리소스 요소로 사용할 수 있는 개체에는 이미지 파일, 스크립트, XML 템플릿, HTML 파일 등이 있습니다. Orchestrator 서버에서 실행되는 모든 워크플로에서는 Orchestrator로 가져온 모든 리소스 요소를 사용할 수 있습니다.

개체를 리소스 요소로 Orchestrator에 가져오면 단일 위치에서 개체를 변경하고 이러한 변경 내용을 해당 리소스 요소를 사용하는 모든 워크플로에 자동으로 전파할 수 있습니다.

리소스 요소를 폴더로 구성할 수 있습니다. 리소스 요소의 최대 크기는 16MB입니다.

이 장에서는 다음 주제에 대해 설명합니다.

n “리소스 요소 보기,”(191 페이지)

n “리소스 요소로 사용할 외부 개체 가져오기,”(192 페이지)

n “리소스 요소 정보 및 액세스 권한 편집,”(192 페이지)

n “파일에 리소스 요소 저장,”(193 페이지)

n “리소스 요소 업데이트,”(193 페이지)

n “워크플로에 리소스 요소 추가,”(194 페이지)

리소스 요소 보기Orchestrator 클라이언트에서 기존 리소스 요소를 보고, 해당 컨텐츠를 검사하고, 이 리소스 요소를 사용하는 워크플로를 검색할 수 있습니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 리소스 보기를 클릭합니다.

3 계층형 트리 뷰어를 확장하여 리소스 요소로 이동합니다.

4 리소스 요소를 클릭하여 관련 정보를 오른쪽 창에 표시합니다.

5 뷰어 탭을 클릭하여 리소스 요소의 컨텐츠를 표시합니다.

6 리소스 요소를 마우스 오른쪽 버튼으로 클릭하고 이 요소를 사용하는 요소 찾기를 선택합니다.

이 리소스 요소를 사용하는 모든 워크플로가 나열됩니다.

VMware, Inc. 191

Page 192: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

후속 작업

리소스 요소를 가져와 편집합니다.

리소스 요소로 사용할 외부 개체 가져오기사용자가 Orchestrator와 독립적으로 만든 개체를 워크플로에서 특성으로 사용해야 할 수 있습니다. 워크플로에서 외부 개체를 특성으로 사용하려면 해당 개체를 리소스 요소로 Orchestrator 서버에 가져와야 합니다.

필수 조건

가져올 이미지 파일, 스크립트, XML 템플릿, HTML 파일 또는 다른 유형의 개체가 있는지 확인합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 리소스 보기를 클릭합니다.

3 계층형 목록 또는 루트에서 리소스 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 폴더를 선택하여 리소스 요소를 저장할 폴더를 만듭니다.

4 리소스 요소를 가져올 리소스 폴더를 마우스 오른쪽 버튼으로 클릭하고 리소스 가져오기를 선택합니다.

5 가져올 리소스를 선택하고 열기를 클릭합니다.

Orchestrator에서 선택한 폴더에 리소스 요소를 추가합니다.

리소스 요소를 Orchestrator 서버로 가져왔습니다.

후속 작업

리소스 요소의 일반적인 정보를 편집하고 사용자 액세스 권한을 설정합니다.

리소스 요소 정보 및 액세스 권한 편집Orchestrator 서버에 리소스 요소로 개체를 가져온 후 해당 리소스 요소의 세부 정보 및 사용 권한을 편집할 수 있습니다.

필수 조건

리소스 요소로 이미지, 스크립트, XML/HTML 파일 또는 기타 개체 유형을 Orchestrator로 가져왔는지 확인합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 리소스 보기를 클릭합니다.

3 리소스 요소를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

4 일반 탭을 클릭하고 리소스 요소 이름, 버전 및 설명을 설정합니다.

5 사용 권한 탭을 클릭한 다음 액세스 권한 추가 아이콘( )을 클릭하여 사용자 그룹에 대한 사용 권한을 정의합니다.

6 필터 텍스트 상자에 사용자 그룹 이름을 입력합니다.

7 사용자 그룹을 선택하고 확인을 클릭합니다.

8 사용자 그룹을 마우스 오른쪽 버튼으로 클릭하고 액세스 권한 추가를 선택합니다.

VMware vRealize Orchestrator를 사용한 개발

192 VMware, Inc.

Page 193: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

9 해당 확인란을 선택하여 이 사용자 그룹에 대한 사용 권한 수준을 설정하고 확인을 클릭합니다.

사용 권한은 누적되지 않습니다. 사용자가 리소스 요소를 보고, 자신의 워크플로에서 사용하고, 사용권한을 변경하도록 허용하려면 모든 확인란을 선택해야 합니다.

10 저장 및 닫기를 클릭하여 편집기를 종료합니다.

리소스 요소에 대한 일반적인 정보를 편집하고 사용자 액세스 권한을 설정했습니다.

후속 작업

리소스 요소를 파일에 저장하여 업데이트하거나, 리소스 요소를 워크플로에 추가합니다.

파일에 리소스 요소 저장로컬 시스템의 파일에 리소스 요소를 저장할 수 있습니다. 리소스 요소를 파일로 저장하면 해당 리소스 요소를 편집할 수 있습니다.

Orchestrator 클라이언트에서는 리소스 요소를 편집할 수 없습니다. 예를 들어 리소스 요소가 XML 구성 파일 또는 스크립트인 경우 로컬로 저장해야 수정할 수 있습니다.

필수 조건

Orchestrator 서버에 파일로 저장할 수 있는 리소스 요소가 있는지 확인합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 리소스 보기를 클릭합니다.

3 리소스 요소를 마우스 오른쪽 버튼으로 클릭하고 파일에 저장을 선택합니다.

4 필요한 대로 파일을 수정합니다.

리소스 요소를 파일에 저장했습니다.

후속 작업

Orchestrator 서버에서 리소스 요소를 업데이트합니다.

리소스 요소 업데이트리소스 요소를 업데이트하려면 파일 시스템으로 내보내 적절한 도구를 사용하여 내보낸 파일을 편집하고편집된 파일을 가져와 리소스 요소를 업데이트해야 합니다.

필수 조건

리소스 요소로 이미지, 스크립트, XML/HTML 파일 또는 기타 개체 유형을 Orchestrator로 가져왔는지 확인합니다.

프로시저

1 로컬 시스템에서 리소스 요소의 소스 파일을 수정합니다.

2 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

3 리소스 보기를 클릭합니다.

4 계층형 목록에서 업데이트한 리소스 요소로 이동합니다.

5 리소스 요소를 마우스 오른쪽 버튼으로 클릭하고 리소스 업데이트를 선택합니다.

6 (선택 사항) 뷰어 탭을 클릭하여 Orchestrator에서 해당 리소스 요소를 업데이트했는지 확인합니다.

4장 리소스 요소 생성

VMware, Inc. 193

Page 194: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Orchestrator 서버에 포함된 리소스 요소를 업데이트했습니다.

워크플로에 리소스 요소 추가리소스 요소는 Orchestrator 서버로 가져와 실행 중인 워크플로에서 특성으로 사용할 수 있는 외부 개체입니다. 예를 들어 워크플로에서는 가져온 XML 파일을 사용하여 데이터 유형을 변환하는 맵을 정의하거나 실행할 함수를 지정하는 스크립트를 정의할 수 있습니다.

필수 조건

Orchestrator 서버에 다음 개체가 있는지 확인합니다.

n 리소스 요소로 Orchestrator로 가져온 이미지, 스크립트, XML/HTML 파일 또는 기타 개체 유형.

n 리소스 요소를 특성으로 사용해야 하는 워크플로

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 설계를 선택합니다.

2 워크플로 보기를 클릭합니다.

3 계층형 트리 뷰어를 확장하여 리소스 요소를 특성으로 사용해야 하는 워크플로로 이동합니다.

4 워크플로를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

5 일반 탭의 특성 창에서 특성 추가 아이콘( )을 클릭합니다.

6 특성 이름을 클릭하고 특성의 새 이름을 입력합니다.

7 유형을 클릭하여 특성 유형을 설정합니다.

8 유형 선택 대화상자의 필터 상자에 resource를 입력하고 개체 유형을 검색합니다.

옵션 작업

단일 리소스 요소를 특성으로 정의합니다.

목록에서 ResourceElement를 선택합니다.

다중 리소스 요소를 특성으로 포함하는 폴더를 정의합니다.

목록에서 ResourceElementCategory를 선택합니다.

9 값을 클릭하고 필터 텍스트 상자에 리소스 요소의 이름 또는 리소스 요소의 범주를 입력합니다.

10 제시된 목록에서 리소스 요소 또는 리소스 요소가 포함된 폴더를 선택하고 선택을 클릭합니다.

11 저장 및 닫기를 클릭하여 편집기를 종료합니다.

리소스 요소 또는 리소스 요소 폴더를 워크플로에 특성으로 추가했습니다.

VMware vRealize Orchestrator를 사용한 개발

194 VMware, Inc.

Page 195: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

패키지 생성 5패키지는 Orchestrator 서버 간에 컨텐츠를 배포하는 데 사용됩니다. 패키지는 워크플로, 작업, 정책 템플릿, 구성 또는 리소스를 포함할 수 있습니다.

패키지에 요소를 추가하면 Orchestrator가 종속성을 검사하고 패키지에 종속 요소를 추가합니다. 예를들어 작업이나 다른 워크플로를 사용하는 워크플로를 추가하면 Orchestrator가 해당 작업과 워크플로를패키지에 추가합니다.

패키지를 가져오면 서버는 그 컨텐츠에서 서로 다른 요소의 버전을 일치하는 로컬 요소와 비교합니다. 비교 결과는 로컬 요소와 가져온 요소 간의 버전 차이를 보여줍니다. 관리자는 패키지를 가져올지 결정하거나 가져올 특정 요소를 선택할 수 있습니다.

패키지는 디지털 권한 관리를 사용하여 받는 서버에서 패키지의 컨텐츠를 사용하는 방법을 제어합니다.Orchestrator는 패키지에 서명하고 데이터 보호를 위해 패키지를 암호화합니다. 패키지는 X509 인증서를 사용하여 요소를 내보내고 재배포하는 사용자를 추적할 수 있습니다.

패키지 사용에 대한 자세한 내용은 VMware vRealize Orchestrator 클라이언트 사용을 참조하십시오.

n 패키지 생성(195 페이지)

워크플로, 정책 템플릿, 작업, 플러그인 참조, 리소스 및 구성 요소를 패키지로 내보낼 수 있습니다.패키지의 요소가 구현하는 모든 요소가 패키지에 자동으로 추가되므로 버전 간의 호환성이 유지됩니다. 참조된 요소를 추가하지 않으려는 경우 패키지 편집기에서 삭제할 수 있습니다.

n 패키지에서 사용자 사용 권한 설정(196 페이지)

패키지에 대해 각각 다른 사용 권한 수준을 설정하여 서로 다른 사용자 또는 사용자 그룹이 패키지컨텐츠에 대해 가질 수 있는 액세스 수준을 제한합니다.

패키지 생성워크플로, 정책 템플릿, 작업, 플러그인 참조, 리소스 및 구성 요소를 패키지로 내보낼 수 있습니다. 패키지의 요소가 구현하는 모든 요소가 패키지에 자동으로 추가되므로 버전 간의 호환성이 유지됩니다. 참조된 요소를 추가하지 않으려는 경우 패키지 편집기에서 삭제할 수 있습니다.

필수 조건

워크플로, 작업, 정책 템플릿 등 패키지에 추가할 수 있는 요소가 Orchestrator 서버에 포함되어 있는지확인합니다.

프로시저

1 Orchestrator 클라이언트의 드롭다운 메뉴에서 관리를 선택합니다.

2 패키지 보기를 클릭합니다.

3 왼쪽 창에서 마우스 오른쪽 버튼을 클릭하고 패키지 추가를 선택합니다.

VMware, Inc. 195

Page 196: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

4 새 패키지의 이름을 입력하고 확인을 클릭합니다.

패키지 이름에 대한 구문은 domain.your_company.folder.package_name입니다.

예: com.vmware.myfolder.mypackage.

5 패키지를 마우스 오른쪽 버튼으로 클릭하고 편집을 선택합니다.

패키지 편집기가 열립니다.

6 일반 탭에서 패키지에 대한 설명을 추가합니다.

7 워크플로 탭에서 패키지에 워크플로를 추가합니다.

n 워크플로 삽입(목록 검색)을 클릭하여 선택 대화 상자에서 워크플로를 검색한 후 선택합니다.

n 워크플로 삽입(트리 탐색)을 클릭하여 계층 목록에서 워크플로의 폴더를 찾아서 선택합니다.

8 정책 템플릿, 작업, 구성, 리소스 및 사용한 플러그인 탭에서 패키지에 정책 템플릿, 작업, 구성 요소,리소스 요소 및 플러그인을 추가합니다.

9 저장 및 닫기를 클릭하여 편집기를 종료합니다.

패키지를 생성하고 요소를 추가했습니다.

후속 작업

이 패키지에 대한 사용자 권한을 설정합니다.

패키지에서 사용자 사용 권한 설정패키지에 대해 각각 다른 사용 권한 수준을 설정하여 서로 다른 사용자 또는 사용자 그룹이 패키지 컨텐츠에 대해 가질 수 있는 액세스 수준을 제한합니다.

Orchestrator LDAP 또는 vCenter Single Sign-On 서버의 사용자 및 사용자 그룹에서 사용 권한을설정할 서로 다른 사용자 및 사용자 그룹을 선택할 수 있습니다. Orchestrator는 사용자 또는 그룹에 적용 가능한 사용 권한의 수준을 정의합니다.

보기 사용자는 패키지의 요소는 볼 수 있지만 스키마나 스크립팅은 볼 수 없습니다.

검사 사용자는 스키마와 스크립팅을 포함해 패키지의 요소를 볼 수 있습니다.

편집 사용자는 패키지의 요소를 편집할 수 있습니다.

관리 사용자는 패키지의 요소에 대한 사용 권한을 설정할 수 있습니다.

필수 조건

패키지를 생성하고 패키지 편집기에서 편집하기 위해 열고 패키지에 필요한 요소를 추가합니다.

프로시저

1 패키지 편집기의 사용 권한 탭을 클릭합니다.

2 액세스 권한 추가 아이콘( )을 클릭해 새 사용자나 사용자 그룹의 사용 권한을 정의합니다.

3 사용자 또는 사용자 그룹을 검색합니다.

검색 결과와 일치하는 모든 사용자와 사용자 그룹이 표시됩니다.

4 사용자 또는 사용자 그룹을 선택합니다.

5 해당 확인란을 선택하여 이 사용자에 대한 사용 권한 수준을 설정하고 선택을 클릭합니다.

사용자가 요소를 보고 스키마와 스크립팅을 검사하며 요소를 실행하고 편집하며 사용 권한을 변경할수 있게 하려면 모든 확인란을 선택해야 합니다.

VMware vRealize Orchestrator를 사용한 개발

196 VMware, Inc.

Page 197: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

6 저장 및 닫기를 클릭하여 편집기를 종료합니다.

패키지를 생성하고 해당 사용자 사용 권한을 설정했습니다.

5장 패키지 생성

VMware, Inc. 197

Page 198: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator를 사용한 개발

198 VMware, Inc.

Page 199: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

플러그인 개발 6Orchestrator는 개방형 플러그인 아키텍처를 통해 관리 및 운영 솔루션과의 통합을 지원합니다.Orchestrator 클라이언트를 사용하여 플러그인 워크플로를 실행 및 생성하고 플러그인 API에 액세스할수 있습니다.

이 장에서는 다음 주제에 대해 설명합니다.

n “플러그인 개요,”(199 페이지)

n “플러그인 내용 및 구조,”(206 페이지)

n “Orchestrator 플러그인 API 참조,”(210 페이지)

n “vso.xml 플러그인 정의 파일의 요소,”(219 페이지)

n “Orchestrator 플러그인 개발에 대한 모범 사례,”(235 페이지)

플러그인 개요Orchestrator 플러그인은 표준 구성 요소 집합을 포함하며 표준 아키텍처를 준수해야 합니다. 이러한방식을 통해 다양한 외부 기술에서 광범위하게 가능한 플러그인을 만들 수 있습니다.

n Orchestrator 플러그인의 구조(200 페이지)

Orchestrator 플러그인에는 특정 기능을 구현하는 여러 유형의 계층으로 구성된 공통 구조가 있습니다.

n Orchestrator에 외부 API 노출(201 페이지)

Orchestrator 플러그인을 만들어 외부 제품의 API를 Orchestrator 플랫폼에 노출할 수 있습니다. Orchestrator에서 사용 가능한 JavaScript 개체에 매핑할 수 있는 API를 노출하는 모든 기술에 대한 플러그인을 만들 수 있습니다.

n 플러그인의 구성 요소(201 페이지)

플러그인은 플러그인된 기술의 개체를 Orchestrator 플랫폼에 노출하는 구성 요소의 표준 집합으로 구성됩니다.

n vso.xml 파일의 역할(202 페이지)

vso.xml 파일을 사용하여 플러그인된 기술의 개체, 클래스, 메서드 및 특성을 Orchestrator 인벤토리 개체, 스크립팅 유형, 스크립팅 클래스, 스크립팅 메서드 및 특성에 매핑할 수 있습니다. 또한vso.xml 파일은 플러그인의 구성 및 시작 동작을 정의합니다.

n 플러그인 어댑터의 역할(203 페이지)

플러그인 어댑터는 플러그인이 Orchestrator 서버로 향하는 진입접입니다. 플러그인 어댑터는Orchestrator 서버에서 플러그인된 기술의 데이터스토어 역할을 하며 플러그인 팩토리를 만들고플러그인된 기술에서 발생하는 이벤트를 관리합니다.

VMware, Inc. 199

Page 200: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

n 플러그인 팩토리의 역할(203 페이지)

플러그인 팩토리는 플러그인된 기술에서 Orchestrator가 개체를 찾아 개체에 대한 작업을 수행하는 방법을 정의합니다.

n 찾기 개체의 역할(204 페이지)

찾기 개체는 플러그인된 기술에서 관리 개체 유형의 특정 인스턴스를 식별하고 찾습니다.Orchestrator는 찾기 개체에 대한 워크플로를 실행하여 플러그인된 기술에서 발견한 개체를 수정하고 상호 작용할 수 있습니다.

n 스크립팅 개체의 역할(204 페이지)

스크립팅 개체는 플러그인된 기술의 개체에 대한 JavaScript 표현입니다. 플러그인의 스크립팅 개체는 Orchestrator Javascript API에 표시되며, 워크플로 및 작업의 스크립팅된 요소에서 이를사용할 수 있습니다.

n 이벤트 처리기의 역할(205 페이지)

이벤트는 Orchestrator가 플러그인된 기술에서 찾은 개체의 상태 또는 특성 변경입니다.Orchestrator는 이벤트 처리기를 구현하여 이벤트를 모니터링합니다.

Orchestrator 플러그인의 구조

Orchestrator 플러그인에는 특정 기능을 구현하는 여러 유형의 계층으로 구성된 공통 구조가 있습니다.

Orchestrator 플러그인의 세 가지 하위 계층(인프라 클래스, 래핑 클래스 및 스크립팅 개체)은 플러그인된 기술과 Orchestrator 간의 연결을 구현합니다.

Orchestrator 플러그인의 사용자 표시 부분은 작업, 빌딩 블록 및 상위 수준 워크플로로 구성된 세 가지상위 계층입니다.

그림 6‑1. Orchestrator 플러그인의 구조

상위 수준 워크플로

빌딩 블록 워크플로

작업

스크립팅 개체

래핑 클래스

인프라 클래스

인프라 클래스 플러그인된 기술과 Orchestrator 간의 연결을 제공하는 클래스 집합입니다. 인프라 클래스에는 플러그인 팩토리, 플러그인 어댑터 등 플러그인 정의에 따라 구현할 클래스가 포함됩니다. 또한 도우미, 캐싱, 인벤토리 등 일반적인 작업 및 개체에 대한 기능을 제공하는 클래스가 포함됩니다.

래핑 클래스 플러그인된 기술의 개체 모델을 Orchestrator 내에 노출할 개체 모델에맞게 조정하는 클래스 집합입니다.

스크립팅 개체 플러그인된 기술의 래핑 클래스, 메서드 및 특성에 대한 액세스를 제공하는JavaScript 개체 유형입니다. vso.xml 파일에서 Orchestrator에 노출할플러그인된 기술의 래핑 클래스, 특성 및 메서드를 정의할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

200 VMware, Inc.

Page 201: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

작업 워크플로 및 스크립팅 작업에서 직접 사용할 수 있는 JavaScript 함수 집합입니다. 여러 입력 매개 변수를 사용하고 단일 반환 값을 제공할 수 있습니다.

빌딩 블록 워크플로 플러그인과 함께 제공하려는 모든 일반 기능을 포함하는 워크플로 집합입니다. 일반적으로 빌딩 블록 워크플로는 오케스트레이션된 기술의 사용자 인터페이스에서 수행되는 작업을 나타냅니다. 빌딩 블록 워크플로는 직접 사용되거나 상위 수준 워크플로 내에 포함될 수 있습니다.

상위 수준 워크플로 플러그인의 특정 기능을 포함하는 워크플로 집합입니다. 상위 수준 워크플로를 제공하여 구체적인 요구 사항을 충족하거나 복잡한 플러그인 사용 예를 보여 줄 수 있습니다.

Orchestrator에 외부 API 노출

Orchestrator 플러그인을 만들어 외부 제품의 API를 Orchestrator 플랫폼에 노출할 수 있습니다.Orchestrator에서 사용 가능한 JavaScript 개체에 매핑할 수 있는 API를 노출하는 모든 기술에 대한플러그인을 만들 수 있습니다.

플러그인은 Orchestrator 스크립팅 API에 추가한 JavaScript 개체에 Java 개체 및 메서드를 매핑합니다. 외부 기술이 Java API를 노출하는 경우 Orchestrator용 JavaScript에 API를 직접 매핑하여워크플로 및 작업에서 사용할 수 있습니다.

WSDL(웹 서비스 정의 언어), REST(Representational State Transfer) 또는 메시징 서비스를 사용하여 노출된 API를 Java 개체와 통합하는 방식으로 Java가 아닌 다른 언어로 API를 노출하는 애플리케이션의 플러그인을 만들 수 있습니다. 그런 다음 사용할 Orchestrator용 JavaScript에 통합된Java 개체를 매핑합니다.

플러그인된 기술은 Orchestrator에 독립적입니다. 소스 코드 대신 Java 압축 파일(JAR 파일)과 같은이진 코드에만 액세스할 수 있는 경우에도 외부 제품용 Orchestrator 플러그인을 만들 수 있습니다.

플러그인의 구성 요소

플러그인은 플러그인된 기술의 개체를 Orchestrator 플랫폼에 노출하는 구성 요소의 표준 집합으로 구성됩니다.

플러그인의 기본 구성 요소는 플러그인 어댑터, 팩토리 및 이벤트 구현입니다. 사용자는 어댑터, 팩토리및 이벤트 구현에 정의된 개체와 작업을 vso.xml이라는 XML 정의 파일의 Orchestrator 개체에 매핑합니다. vso.xml 파일은 플러그인된 기술의 개체와 함수를 Orchestrator JavaScript API에 나타나는JavaScript 스크립팅 개체에 매핑합니다. vso.xml 파일은 또한 플러그인된 기술의 개체 유형을Orchestrator 인벤토리 탭에 나타나는 찾기에 매핑합니다.

플러그인은 다음 구성 요소로 구성됩니다.

플러그인 모듈 Java 클래스 집합, vso.xml 파일 및 플러그인을 통해 액세스하는 개체와 상호 작용하는 워크플로와 작업의 패키지에 의해 정의된 플러그인 자체. 플러그인 모듈은 필수 항목입니다.

플러그인 어댑터 플러그인된 기술과 Orchestrator 서버 간의 인터페이스를 정의합니다. 어댑터는 플러그인이 Orchestrator 플랫폼으로 향하는 진입점입니다. 어댑터는 플러그인 팩토리를 만들고 플러그인의 로드와 언로드를 관리하며 플러그인된 기술의 개체에서 발생하는 이벤트를 관리합니다. 플러그인 어댑터는필수 항목입니다.

플러그인 팩토리 플러그인된 기술에서 Orchestrator가 개체를 찾아 작업을 수행하는 방법을 정의합니다. 어댑터는 Orchestrator와 플러그인된 기술 간에 열리는클라이언트 세션을 위해 팩토리를 생성합니다. 팩토리를 사용하여 모든 클라이언트 연결 간 세션을 공유하거나 클라이언트 연결마다 하나의 세션을열 수 있습니다. 플러그인 팩토리는 필수 항목입니다.

6장 플러그인 개발

VMware, Inc. 201

Page 202: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

구성 Orchestrator는 플러그인이 그 구성을 저장할 표준 방식을 정의하지 않습니다. Windows 레지스트리, 정적 구성 파일을 사용하고, 데이터베이스또는 XML 파일에 정보를 저장해 구성 정보를 저장할 수 있습니다.Orchestrator 플러그인은 Orchestrator 클라이언트에서 구성 워크플로를 실행해 구성할 수 있습니다.

찾기 Orchestrator가 플러그인된 기술에서 개체를 찾고 나타내는 방법을 정의하는 상호 작용 규칙입니다. 찾기는 플러그인된 기술이 Orchestrator에노출한 개체 집합에서 개체를 검색합니다. vso.xml 파일에 개체 간의 관계를정의해 개체 네트워크를 탐색할 수 있습니다. Orchestrator는 인벤토리탭에 플러그인된 기술의 개체 모델을 나타냅니다. 플러그인된 기술의 개체를 Orchestrator에 노출하려면 찾기는 필수 항목입니다.

스크립팅 개체 플러그인된 기술의 개체, 작업 및 특성에 대한 액세스를 제공하는JavaScript 개체 유형입니다. 스크립팅 개체는 Orchestrator가JavaScript를 통해 플러그인된 기술의 개체 모델에 액세스하는 방법을 정의합니다. 사용자는 플러그인된 기술의 클래스와 메서드를 vso.xml 파일의JavaScript 개체에 매핑합니다. Orchestrator 스크립팅 API의JavaScript 개체에 액세스해 이를 Orchestrator 스크립팅 작업(task,action) 및 워크플로에 통합할 수 있습니다. 스크립팅 유형, 클래스 및 메서드를 Orchestrator JavaScript API에 추가하려면 스크립팅 개체는필수 항목입니다.

인벤토리 Orchestrator 클라이언트의 인벤토리 보기에 나타나는 찾기를 사용해Orchestrator가 찾는 플러그인된 기술의 개체 인스턴스입니다. 인벤토리에서 워크플로를 실행해 인벤토리의 개체에서 작업을 수행할 수 있습니다.인벤토리는 선택 사항입니다. 사용자는 Orchestrator JavaScript API에 스크립팅 유형과 클래스만 추가하고 인벤토리의 개체 인스턴스는 노출하지 않는 플러그인을 만들 수 있습니다.

이벤트 플러그인된 기술에서 개체 상태의 변경입니다. Orchestrator는 플러그인된 기술에서 발생하는 이벤트를 수동으로 수신할 수 있습니다.Orchestrator는 또한 플러그인된 기술에서 이벤트를 능동적으로 트리거할 수도 있습니다. 이벤트는 선택 사항입니다.

vso.xml 파일의 역할

vso.xml 파일을 사용하여 플러그인된 기술의 개체, 클래스, 메서드 및 특성을 Orchestrator 인벤토리 개체, 스크립팅 유형, 스크립팅 클래스, 스크립팅 메서드 및 특성에 매핑할 수 있습니다. 또한 vso.xml 파일은 플러그인의 구성 및 시작 동작을 정의합니다.

vso.xml 파일은 다음과 같은 주요 역할을 수행합니다.

시작 및 구성 동작 플러그인이 정의한 구성 구현을 시작하고 찾는 방식을 정의합니다. 플러그인 어댑터를 로드합니다.

인벤토리 개체 플러그인이 플러그인된 기술에서 액세스하는 개체의 유형을 정의합니다. 플러그인 팩토리 구현의 찾기 메서드는 이러한 개체의 인스턴스를 찾아Orchestrator 인벤토리에 표시합니다.

스크립팅 유형 인벤토리의 다양한 개체 유형을 표현하는 데 사용할 수 있는 스크립팅 유형을 Orchestrator JavaScript API에 추가합니다. 이러한 스크립팅 유형을 워크플로의 입력 매개 변수로 사용할 수 있습니다.

스크립팅 클래스 워크플로, 작업, 정책 등의 스크립팅된 요소에서 사용할 수 있는 클래스를Orchestrator JavaScript API에 추가합니다.

VMware vRealize Orchestrator를 사용한 개발

202 VMware, Inc.

Page 203: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

스크립팅 메서드 워크플로, 작업, 정책 등의 스크립팅된 요소에서 사용할 수 있는 메서드를Orchestrator JavaScript API에 추가합니다.

스크립팅 특성 워크플로, 작업, 정책 등의 스크립팅된 요소에서 사용할 수 있는 플러그인된 기술의 개체 특성을 Orchestrator JavaScript API에 추가합니다.

플러그인 어댑터의 역할

플러그인 어댑터는 플러그인이 Orchestrator 서버로 향하는 진입접입니다. 플러그인 어댑터는Orchestrator 서버에서 플러그인된 기술의 데이터스토어 역할을 하며 플러그인 팩토리를 만들고 플러그인된 기술에서 발생하는 이벤트를 관리합니다.

플러그인 어댑터를 만들려면 IPluginAdaptor 인터페이스를 구현하는 Java 클래스를 만듭니다.

사용자가 만든 플러그인 어댑터 클래스는 플러그인된 기술에서 플러그인 팩토리, 이벤트 및 트리거를 관리합니다. IPluginAdaptor 인터페이스는 이러한 작업을 수행하기 위해 사용하는 메서드를 제공합니다.

플러그인 어댑터는 다음과 같은 주요 역할을 수행합니다.

팩토리 생성 플러그인 어댑터의 가장 중요한 역할은 모든 연결에 대해 하나의 플러그인팩토리 인스턴스를 Orchestrator에서 플러그인된 기술로 로드 및 언로드하는 것입니다. 플러그인 어댑터 클래스는IPluginAdaptor.createPluginFactory() 메서드를 호출해 IPluginFactory 인터페이스를 구현하는 클래스의 인스턴스를 생성합니다.

이벤트 관리 플러그인 어댑터는 Orchestrator 서버와 플러그인된 기술 간의 인터페이스입니다. 플러그인 어댑터는 플러그인된 기술에서 Orchestrator가 개체에 대해 수행하거나 감시하는 이벤트를 관리합니다. 어댑터는 이벤트 게시자를 통해 이벤트를 관리합니다. 이벤트 게시자는 어댑터가IPluginAdaptor.registerEventPublisher() 메서드를 호출해 생성하는IPluginEventPublisher 인터페이스의 인스턴스입니다. 이벤트 게시자는 플러그인된 기술에서 개체에 대한 트리거와 게이지를 설정해 개체에서 특정 이벤트가 발생하거나 개체의 값이 특정 임계값을 초과하면 Orchestrator가정의된 작업을 실행하도록 합니다. 마찬가지로 장기 실행 워크플로에서 대기 이벤트 요소가 기다리는 이벤트를 정의하는 PluginTrigger 및PluginWatcher 인스턴스를 정의할 수 있습니다.

플러그인 이름 설정 vso.xml 파일에서 플러그인의 이름을 제공합니다. 플러그인 어댑터는vso.xml 파일에서 이 이름을 가져와 Orchestrator 클라이언트 인벤토리 보기에 이를 게시합니다.

라이센스 설치 플러그인된 기술이 어댑터를 구현할 때 필요한 라이센스 파일을 설치하기위해 메서드를 호출할 수 있습니다.

IPluginAdaptor 인터페이스, 포함된 모든 메서드 및 플러그인 API의 기타 모든 클래스에 대한 자세한 내용은 “Orchestrator 플러그인 API 참조,”(54 페이지) 항목을 참조하십시오.

플러그인 팩토리의 역할

플러그인 팩토리는 플러그인된 기술에서 Orchestrator가 개체를 찾아 개체에 대한 작업을 수행하는 방법을 정의합니다.

플러그인 팩토리를 만들려면 Orchestrator 플러그인 API에서 IPluginFactory 인터페이스를 구현 및 확장해야 합니다. 사용자가 생성한 플러그인 팩토리 클래스는 Orchestrator가 플러그인된 기술의 개체에 액세스하기 위해 사용하는 finder 함수를 정의합니다. 팩토리를 사용하면 Orchestrator 서버가 개체의ID, 다른 개체와의 관계 또는 쿼리 문자열을 검색해 개체를 찾을 수 있습니다.

6장 플러그인 개발

VMware, Inc. 203

Page 204: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

플러그인 팩토리는 다음과 같은 주요 작업을 수행합니다.

개체 찾기 개체의 이름과 유형에 따라 개체를 찾는 함수를 만들 수 있습니다.IPluginFactory.find() 메서드를 사용해 이름과 유형을 기준으로 개체를 찾습니다.

다른 개체와 관련된 개체찾기

주어진 관계 유형에 따라 주어진 개체와 관련된 개체를 찾는 함수를 만들수 있습니다. vso.xml 파일에 관계를 정의합니다. 또한 찾기를 생성해 주어진 관계 유형을 기준으로 모든 상위 개체와 관련된 종속 하위 개체를 찾을수 있습니다. IPluginFactory.findRelation() 메서드를 구현해 주어진 관계 유형을 기준으로 주어진 상위 개체와 관련된 모든 개체를 찾습니다.IPluginFactory.hasChildrenInRelation() 메서드를 구현해 상위 인스턴스에 대해 하나 이상의 하위 개체가 존재하는지 검색합니다.

자체 기준에 따라 개체를찾는 쿼리 정의

정의한 쿼리 규칙을 구현하는 개체 찾기를 만들 수 있습니다.IPluginFactory.findAll() 메서드를 구현해 팩토리가 메서드를 호출할 때 정의한 쿼리 규칙을 만족하는 모든 개체를 찾습니다. 정의한 쿼리 규칙과 일치하는 발견된 모든 개체의 목록을 포함하는 QueryResult 개체에서 findAll()메서드의 결과를 가져옵니다.

IPluginFactory 인터페이스, 포함된 모든 메서드 및 플러그인 API의 기타 모든 클래스에 대한 자세한 내용은 “Orchestrator 플러그인 API 참조,”(54 페이지) 항목을 참조하십시오.

찾기 개체의 역할

찾기 개체는 플러그인된 기술에서 관리 개체 유형의 특정 인스턴스를 식별하고 찾습니다. Orchestrator는 찾기 개체에 대한 워크플로를 실행하여 플러그인된 기술에서 발견한 개체를 수정하고 상호 작용할 수있습니다.

플러그인된 기술의 지정된 관리 개체 유형에 대한 모든 인스턴스에는 Orchestrator 찾기 개체가 찾을수 있도록 고유 식별자가 있습니다. 플러그인된 기술에서는 개체 인스턴스에 대한 고유 식별자를 문자열로 제공합니다. 워크플로가 실행되면 Orchestrator는 발견한 개체의 고유 식별자를 워크플로 특성 값으로 설정합니다. 지정된 유형의 개체가 입력 매개 변수로 필요한 워크플로는 해당 개체 유형의 특정 인스턴스에서 실행됩니다.

플러그인에서 Orchestrator JavaScript API에 추가한 찾기 개체에는 플러그인 이름이 접두사로 사용됩니다. 예를 들어 vCenter Server API의 VirtualMachine 관리 개체 유형은 Orchestrator에VC:VirtualMachine JavaScript 유형으로 표시됩니다.

또한 Orchestrator는 가상 시스템의 id 특성을 고유 식별자로 사용하는 찾기 개체를 구현하여 vCenterServer 플러그인을 통해 특정 VC:VirtualMachine 인스턴스에 액세스합니다. 이 개체 인스턴스를 워크플로요소에 특성 값으로 전달할 수 있습니다.

Orchestrator 플러그인은 플러그인된 기술의 개체를 vso.xml 파일의 <finder> 요소 내 해당Orchestrator 찾기 개체에 매핑합니다. <finder> 요소는 플러그인된 기술에서 개체의 특정 인스턴스에대한 고유 식별자를 가져오는 메서드 또는 함수를 식별합니다. 또한 <finder> 요소는 개체 간의 관계를 정의하여 다른 개체에 관련된 방식을 기준으로 개체를 찾습니다.

찾기 개체는 Orchestrator 인벤토리 탭에서 해당 개체가 속해 있는 플러그인 아래에 표시됩니다.

스크립팅 개체의 역할

스크립팅 개체는 플러그인된 기술의 개체에 대한 JavaScript 표현입니다. 플러그인의 스크립팅 개체는Orchestrator Javascript API에 표시되며, 워크플로 및 작업의 스크립팅된 요소에서 이를 사용할 수있습니다.

플러그인의 스크립팅 개체는 Orchestrator JavaScript API에 JavaScript 모듈, 유형 및 클래스로표시됩니다. 대부분의 찾기 개체에는 스크립팅 개체 표현이 있습니다. JavaScript 클래스는 플러그인된기술의 API에서 개체에 대한 메서드 및 특성을 나타내는 메서드 및 특성을 Orchestrator JavaScriptAPI에 추가할 수 있습니다. 플러그인된 기술은 Orchestrator에 독립적으로 개체, 유형, 클래스, 특성

VMware vRealize Orchestrator를 사용한 개발

204 VMware, Inc.

Page 205: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

및 메서드 구현을 제공합니다. 예를 들어 vCenter Server 플러그인은 vCenter Server API에서 정의하는 모든 클래스, 메서드 및 특성에 대한 JavaScript 표현과 함께 vCenter Server API의 모든 개체를 Orchestrator JavaScript API에서 JavaScript 개체로 표현합니다. vCenter Server 스크립팅클래스와 해당 클래스가 정의하는 메서드 및 특성을 Orchestrator 스크립팅 함수에서 사용할 수 있습니다.

예를 들어 vCenter Server API의 VirtualMachine 관리 개체 유형은 VC:VirtualMachine 찾기를 통해 검색되며, Orchestrator JavaScript API에 VcVirtualMachine JavaScript 클래스로 표시됩니다.Orchestrator JavaScript API의 VcVirtualMachine JavaScript 클래스는 동일한 모든 메서드 및 특성을 vCenter Server API의 VirtualMachine 관리 개체로 정의합니다.

Orchestrator 플러그인은 플러그인된 기술의 개체, 유형, 클래스, 특성 및 메서드를 vso.xml 파일의<scripting-objects> 요소 내 해당 Orchestrator JavaScript 개체, 유형, 클래스, 특성 및 메서드에 매핑합니다.

이벤트 처리기의 역할

이벤트는 Orchestrator가 플러그인된 기술에서 찾은 개체의 상태 또는 특성 변경입니다.Orchestrator는 이벤트 처리기를 구현하여 이벤트를 모니터링합니다.

Orchestrator 플러그인은 플러그인된 기술에서 이벤트를 모니터링할 수 있는 여러 가지 방법을 제공합니다. Orchestrator 플러그인 API를 사용하면 다음과 같은 유형의 이벤트 처리기를 만들어 플러그인된기술에서 이벤트를 모니터링할 수 있습니다.

수신기 플러그인된 기술에서 개체의 상태 변경을 소극적으로 모니터링합니다. 플러그인된 기술 또는 플러그인 구현에서는 수신기가 모니터링하는 이벤트를 정의합니다. 수신기는 이벤트를 시작하는 것이 아니라 이벤트가 발생한 경우Orchestrator에 알립니다. 수신기는 플러그인된 기술을 폴링하거나 플러그인된 기술에서 알림을 수신하여 이벤트를 감지합니다. 이벤트가 발생하면해당 이벤트를 대기 중인 Orchestrator 정책 또는 워크플로가Orchestrator 서버에서 작업을 시작하여 반응할 수 있습니다. 수신기 구성 요소는 선택 사항입니다.

정책 플러그인된 기술에서 특정 이벤트를 모니터링하고, 이벤트가 발생한 경우Orchestrator 서버에서 작업을 시작합니다. 정책은 정책 트리거 및 정책게이지를 모니터링할 수 있습니다. 정책 트리거는 플러그인된 기술에서 이벤트를 정의합니다. 이러한 이벤트가 발생한 경우 실행 중인 정책이Orchestrator 서버에서 작업(예: 워크플로 실행)을 시작하게 됩니다. 정책 게이지는 플러그인된 기술에서 개체의 특성 값 범위를 정의합니다. 이러한 범위를 초과한 경우 Orchestrator에서 작업을 시작하게 됩니다. 정책은 선택 사항입니다.

워크플로 트리거 실행 중인 워크플로에 이벤트 대기 요소가 포함된 경우 이 요소에 도달하면워크플로가 실행을 일시 중단하고 플러그인된 기술에서 이벤트가 발생할 때까지 대기합니다. 워크플로 트리거는 플러그인된 기술에서 워크플로의 이벤트 대기 요소가 기다리는 이벤트를 정의합니다. 감시자에 워크플로 트리거를 등록합니다. 워크플로 트리거는 선택 사항입니다.

감시자 워크플로의 이벤트 대기 요소를 대신해 플러그인된 기술에서 특정 이벤트에대한 워크플로 트리거를 감시합니다. 이벤트가 발생한 경우 감시자는 해당이벤트를 대기 중인 모든 워크플로에 알립니다. 감시자는 선택 사항입니다.

6장 플러그인 개발

VMware, Inc. 205

Page 206: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

플러그인 내용 및 구조Orchestrator 플러그인은 표준 구성 요소 집합을 포함하고, 표준 파일 구조를 준수해야 합니다. 플러그인이 표준 파일 구조를 준수하려면 특정 폴더 및 파일을 포함해야 합니다.

Orchestrator 플러그인을 만들려면 Orchestrator에서 플러그인된 기술의 개체에 액세스하고 상호 작용하는 방법을 정의합니다. 또한 vso.xml 파일에서 플러그인된 기술의 모든 개체 및 함수를Orchestrator 개체 및 함수에 매핑합니다.

vso.xml 파일은 모든 유형의 개체에 대한 참조 또는 Orchestrator에 노출할 작업을 포함해야 합니다. 플러그인된 기술에서 플러그인이 찾는 모든 개체에는 사용자가 제공한 고유 식별자가 있어야 합니다.vso.xml 파일에서 finder 요소와 개체 요소에 개체 이름을 정의합니다.

플러그인을 표준 Java 보관 파일(JAR) 또는 ZIP 파일로 제공할 수 있지만 어느 경우든 파일 이름을 .dar 확장명으로 변경해야 합니다.

참고 Orchestrator 제어 센터를 사용하여 DAR 파일을 Orchestrator 서버로 가져올 수 있습니다.

n vso.xml 파일에서 애플리케이션 매핑 정의(206 페이지)

vso.xml 파일에 포함한 개체는 Orchestrator 스크립팅 API에 스크립팅 개체로 표시되거나Orchestrator 인벤토리 탭에 찾기 개체로 표시됩니다.

n vso.xml 플러그인 정의 파일의 형식(207 페이지)

vso.xml 파일은 Orchestrator 서버가 플러그인된 기술과 상호 작용하는 방식을 정의합니다. 모든유형의 개체에 대한 참조 또는 Orchestrator에 노출할 작업을 vso.xml 파일에 포함해야 합니다.

n 플러그인 개체 이름 지정(208 페이지)

플러그인된 기술에서 플러그인이 찾는 모든 개체에는 고유한 식별자를 제공해야 합니다. 개체 이름은 vso.xml파일의 <finder> 요소와 <object> 요소에 정의합니다.

n 플러그인 개체 명명 규칙(208 페이지)

플러그인의 모든 개체에 대한 이름을 지정할 때 Java 클래스 명명 규칙을 따라야 합니다.

n 플러그인의 파일 구조(209 페이지)

플러그인은 표준 파일 구조를 준수해야 하며 특정 폴더 및 파일을 포함해야 합니다. 플러그인은 표준 Java 아카이브(JAR) 또는 ZIP 파일로 제공하며 .dar 확장명으로 이름을 바꿔야 합니다.

vso.xml 파일에서 애플리케이션 매핑 정의

vso.xml 파일에 포함한 개체는 Orchestrator 스크립팅 API에 스크립팅 개체로 표시되거나Orchestrator 인벤토리 탭에 찾기 개체로 표시됩니다.

vso.xml 파일은 Orchestrator 서버에 다음 정보를 제공합니다.

n 플러그인의 버전, 이름 및 설명

n 플러그인된 기술의 클래스 및 연결된 플러그인 어댑터에 대한 참조

n Orchestrator 서버가 시작되면 플러그인 초기화

n 플러그인된 기술의 개체 유형을 나타내는 스크립팅 유형

n Orchestrator 인벤토리에 개체가 표시되는 방식을 정의하는 개체 유형 간의 관계

n 플러그인된 기술의 개체 및 작업을 Orchestrator JavaScript API의 함수 및 개체 유형에 매핑하는 스크립팅 클래스

n 특정 유형의 모든 개체에 적용되는 상수 값 목록을 정의하는 열거형

n Orchestrator가 플러그인된 기술에서 모니터링하는 이벤트

VMware vRealize Orchestrator를 사용한 개발

206 VMware, Inc.

Page 207: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

vso.xml 파일은 Orchestrator 플러그인의 XML 스키마 정의를 준수해야 합니다. VMware 지원 사이트에서 스키마 정의에 액세스할 수 있습니다.

http://www.vmware.com/support/orchestrator/plugin-4-1.xsd

vso.xml 파일의 모든 요소에 대한 설명은 “vso.xml 플러그인 정의 파일의 요소,”(63 페이지) 항목을참조하십시오.

vso.xml 플러그인 정의 파일의 형식

vso.xml 파일은 Orchestrator 서버가 플러그인된 기술과 상호 작용하는 방식을 정의합니다. 모든 유형의개체에 대한 참조 또는 Orchestrator에 노출할 작업을 vso.xml 파일에 포함해야 합니다.

vso.xml 파일에 포함한 개체는 Orchestrator 스크립팅 API에 스크립팅 개체로 표시되거나Orchestrator 인벤토리 탭에 찾기 개체로 표시됩니다.

플러그인의 표준화된 구현 및 개방형 아키텍처의 일부인 vso.xml 파일은 표준 형식을 준수해야 합니다.

다음 다이어그램에서는 요소가 서로 중첩되는 방식 및 vso.xml 플러그인 정의 파일의 형식을 보여 줍니다.

그림 6‑2. vso.xml 플러그인 정의 파일의 형식

6장 플러그인 개발

VMware, Inc. 207

Page 208: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

플러그인 개체 이름 지정

플러그인된 기술에서 플러그인이 찾는 모든 개체에는 고유한 식별자를 제공해야 합니다. 개체 이름은vso.xml파일의 <finder> 요소와 <object> 요소에 정의합니다.

팩토리 구현에서 정의한 찾기 작업은 플러그인된 기술에서 개체를 찾습니다. 플러그인이 개체를 찾으면Orchestrator 워크플로에서 이를 사용하여 한 워크플로 요소에서 다른 요소로 전달할 수 있습니다. 개체에 제공한 고유 식별자를 사용해 워크플로에서 요소 간에 전달할 수 있습니다.

Orchestrator 서버는 처리하는 각 개체의 유형과 식별자만 저장하며 Orchestrator가 개체를 가져온위치나 방법에 대한 정보는 저장하지 않습니다. 플러그인에서 가져온 개체를 추적할 수 있도록 플러그인구현에서 개체 이름을 일관되게 지정해야 합니다.

워크플로 실행 중 Orchestrator 서버가 중지된 경우 서버를 다시 시작하면 서버가 중지되었을 때 실행중이었던 워크플로 요소에서 워크플로가 재개됩니다. 워크플로는 서버가 중지되었을 때 요소가 처리 중이었던 개체를 검색하기 위해 식별자를 사용합니다.

플러그인 개체 명명 규칙

플러그인의 모든 개체에 대한 이름을 지정할 때 Java 클래스 명명 규칙을 따라야 합니다.

중요 워크플로 엔진이 데이터 직렬화를 수행하는 방식으로 인해 개체 이름에 다음 문자열 시퀀스를 사용해서는 안 됩니다. 개체 식별자에 이러한 문자 시퀀스를 사용하면 워크플로 엔진이 워크플로 구문을 잘못분석하여 워크플로를 실행할 때 예기치 않은 동작이 발생할 수 있습니다.

n #;#

n #,#

n #=#

플러그인의 개체 이름을 지정할 때 다음 지침을 사용하십시오.

n 이름의 각 단어에 대한 첫 글자에는 대문자를 사용합니다.

n 공백을 사용하여 단어를 구분하지 마십시오.

n 문자의 경우 표준 문자 A~Z 및 a~z만 사용합니다.

n 악센트와 같은 특수 문자를 사용하지 마십시오.

n 이름의 첫 글자로 숫자를 사용하지 마십시오.

n 가급적 10자 미만을 사용합니다.

표 6‑1에는 개별 개체 유형에 적용되는 규칙이 나와 있습니다.

VMware vRealize Orchestrator를 사용한 개발

208 VMware, Inc.

Page 209: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑1. 플러그인 개체 명명 규칙

개체 유형 명명 규칙

플러그인 n vso.xml 파일의 <module> 요소에 정의됩니다.n Java 클래스 명명 규칙을 준수해야 합니다.n 고유해야 합니다. 하나의 Orchestrator 서버에서 이름이 같은 플러그인 두 개를 실행할 수 없습니다.

찾기 개체 n vso.xml 파일의 <finder> 요소에 정의됩니다.n Java 클래스 명명 규칙을 준수해야 합니다.n 플러그인에서 고유해야 합니다.

Orchestrator는 Orchestrator 스크립팅 API의 찾기 개체 유형에 사용되는 찾기 개체 이름에 플러그인 이름과 콜론을 추가합니다. 예를 들어 vCenter Server 플러그인의VirtualMachine 개체 유형은 Orchestrator 스크립팅 API에 VC:VirtualMachine으로 표시됩니다.

스크립팅 개체 n vso.xml 파일의 <scripting-object> 요소에 정의됩니다.n Java 클래스 명명 규칙을 준수해야 합니다.n Orchestrator 서버에서 고유해야 합니다.n 스크립팅 개체가 같은 이름의 찾기 개체 또는 다른 플러그인의 스크립팅 개체와 혼동되는 것을 방지하기 위해 항상 플러그인 이름을 스크립팅 개체 이름의 접두사로 사용합니다(이때 콜론은 추가하지 않음). 예를 들어 vCenter Server 플러그인의VirtualMachine 클래스는 Orchestrator 스크립팅 API에 VcVirtualMachine 클래스로표시됩니다.

플러그인의 파일 구조

플러그인은 표준 파일 구조를 준수해야 하며 특정 폴더 및 파일을 포함해야 합니다. 플러그인은 표준Java 아카이브(JAR) 또는 ZIP 파일로 제공하며 .dar 확장명으로 이름을 바꿔야 합니다.

DAR 아카이브의 내용은 다음 폴더 구조 및 이름 지정 규칙을 사용해야 합니다.

표 6‑2. DAR 아카이브의 구조

폴더 설명

플러그인_이름\VSO-INF\ 플러그인된 기술의 개체를 Orchestrator 개체로 매핑하는 내용을 정의하는 vso.xml 파일을 포함합니다.

VSO-INF 폴더와 vso.xml 파일은 필수 항목입니다.

플러그인_이름\lib\ 플러그인된 기술의 바이너리를 포함하는 JAR 파일을 포함하고 있습니다. 또한 플러그인의 어댑터, 팩토리, 알림처리기 및 기타 인터페이스 구현을 포함한 JAR 파일도포함하고 있습니다.

lib 폴더와 JAR 파일은 필수 항목입니다.

플러그인_이름\resources\ 플러그인에 필요한 리소스 파일을 포함하고 있습니다.resources 폴더는 다음 요소 유형을 포함할 수 있습니다.n 플러그인의 개체를 Orchestrator 인벤토리 탭에 표시하는 이미지 파일입니다.

n 플러그인을 시작할 때 초기화 동작을 정의하는 스크립트입니다.

n 플러그인을 사용해 액세스하는 개체와 상호 작용하는사용자 지정 워크플로, 작업 및 기타 리소스를 포함할수 있는 Orchestrator 패키지입니다.

리소스를 하위 폴더에 구성할 수 있습니다. 예를 들어resources\images\, resources\scripts\ 또는resources\packages\와 같이 합니다.

resources 폴더는 선택 사항입니다.

Orchestrator 제어 센터를 사용하여 DAR 파일을 Orchestrator 서버로 가져옵니다.

6장 플러그인 개발

VMware, Inc. 209

Page 210: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Orchestrator 플러그인 API 참조Orchestrator 플러그인 API는 플러그인을 생성할 IPluginAdaptor 및 IPluginFactory 구현을 개발할 때 구현 및 확장할 Java 인터페이스와 클래스를 정의합니다.

모든 클래스는 달리 명시되지 않는 한 ch.dunes.vso.sdk.api 패키지에 포함되어 있습니다.

IAop 인터페이스

IAop 인터페이스는 플러그인된 기술의 개체를 가져오고 속성을 설정하는 메서드를 제공합니다.

public interface IAop

IAop 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

get(java.lang.String propertyName,java.lang.Object object,java.lang.Object sdkObject)

java.lang.Object 플러그인의 지정된 개체에서 속성을가져옵니다.

set(java.lang.String propertyName,java.lang.String propertyValue,java.lang.Object object)

Void 플러그인의 지정된 개체에 대한 속성을 설정합니다.

IDynamicFinder 인터페이스

IDynamicFinder 인터페이스는 vso.xml 파일의 ID와 속성을 정의하는 대신 찾기의 ID와 속성을 프로그래밍방식으로 반환합니다.

IDynamicFinder 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

getIdAccessor(java.lang.Stringtype)

java.lang.String 개체 ID를 프로그래밍 방식으로 가져오기 위한 OGNL 표현식을 제공합니다.

getProperties(java.lang.Stringtype)

java.util.List<SDKFinderProperty> 개체 속성 목록을 프로그래밍 방식으로 제공합니다.

IPluginAdaptor 인터페이스

플러그인 팩토리, 이벤트 및 감시자를 관리하기 위해 IPluginAdaptor 인터페이스를 구현합니다.IPluginAdaptor 인터페이스는 플러그인과 Orchestrator 서버 간 어댑터를 정의합니다.

IPluginAdaptor 인스턴스는 세션 관리를 담당합니다. IPluginAdaptor 인터페이스는 다음 메서드를 정의합니다.

VMware vRealize Orchestrator를 사용한 개발

210 VMware, Inc.

Page 211: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 반환 설명

addWatcher(PluginWatcher watcher) Void 특정 이벤트를 모니터링할 감시자 추가

createPluginFactory(java.lang.String sessionID, java.lang.Stringusername, java.lang.Stringpassword,IPluginNotificationHandlernotificationHandler)

IPluginFactory IPluginFactory 인스턴스를 생성합니다. Orchestrator 서버는 ID, 다른개체와의 관계 등을 기준으로 플러그인된 기술에서 개체를 가져오기 위해팩토리를 사용합니다.

세션 ID를 사용하면 실행 중인 세션을식별할 수 있습니다. 예를 들어 사용자가 두 개의 서로 다른Orchestrator 클라이언트에 로그인해 동시에 두 개의 세션을 실행할 수있습니다.

마찬가지로 워크플로를 시작하면 워크플로가 시작된 클라이언트와 독립적인세션이 생성됩니다. 워크플로는Orchestrator 클라이언트를 종료해도 계속 실행됩니다.

installLicenses(PluginLicense[]licenses)

Void VMware가 제공하는 표준 플러그인의 라이센스 정보 설치

registerEventPublisher(java.lang.String type, java.lang.String id,IPluginEventPublisher publisher)

Void 인벤토리의 요소에 트리거와 게이지설정

removeWatcher(java.lang.StringwatcherId)

Void 감시자 제거

setPluginName(java.lang.StringpluginName)

Void vso.xml 파일에서 플러그인 이름을 가져옴

setPluginPublisher(IPluginPublisher pluginPublisher)

Void 플러그인의 게시자 설정

uninstallPluginFactory(IPluginFactory plugin)

Void 플러그인 팩토리 제거

unregisterEventPublisher(java.lang.String type, java.lang.String id,IPluginEventPublisher publisher)

Void 인벤토리의 요소에서 트리거와 게이지제거

IPluginEventPublisher 인터페이스

IPluginEventPublisher 인터페이스는 Orchestrator 정책이 모니터링할 이벤트 알림 버스에서 게이지와 트리거를 게시합니다.

플러그인 어댑터 구현에서 직접 IPluginEventPublisher 인스턴스를 생성하거나 별도 이벤트 생성기 클래스에서 생성할 수 있습니다.

IPluginEventPublisher 인터페이스를 구현하여 플러그인된 기술의 이벤트를 Orchestrator 정책 엔진에 게시할 수 있습니다. 플러그인된 기술의 개체에 대한 정책 트리거 및 게이지를 설정하는 메서드와 이러한 개체에서 이벤트를 수신하는 이벤트 수신기를 만들 수 있습니다.

정책은 플러그인된 기술의 개체를 모니터링할 게이지 또는 트리거를 구현할 수 있습니다. 정책 게이지는개체의 특성을 모니터링하여 개체 값이 특정 제한을 초과하는 경우 Orchestrator 서버에 이벤트를 푸시합니다. 정책 트리거는 개체를 모니터링하여 해당 개체에서 정의된 이벤트가 발생한 경우 Orchestrator서버에 이벤트를 푸시합니다. Orchestrator 정책에서 모니터링할 수 있도록 정책 게이지 및 트리거를IPluginEventPublisher 인스턴스에 등록합니다.

IPluginEventPublisher 인터페이스는 다음 메서드를 정의합니다.

6장 플러그인 개발

VMware, Inc. 211

Page 212: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

유형 반환 설명

pushGauge(java.lang.String type,java.lang.String id,java.lang.String gaugeName,java.lang.String deviceName,java.lang.Double gaugeValue)

Void 모니터링할 정책의 게이지를 게시합니다. 다음 매개 변수를 사용합니다.n type: 모니터링할 개체의 유형.n id: 모니터링할 개체의 식별자.n gaugeName: 이 게이지의 이름.n deviceName: 게이지가 모니터하는특성의 유형에 대한 이름.

n gaugeValue: 게이지가 개체를 모니터하는 값.

pushTrigger(java.lang.String type,java.lang.String id,java.lang.String triggerName,java.util.PropertiesadditionalProperties)

Void 모니터링할 정책의 트리거를 게시합니다. 다음 매개 변수를 사용합니다.n type: 모니터링할 개체의 유형.n id: 모니터링할 개체의 식별자.n triggerName: 이 트리거의 이름.n additionalProperties: 모니터링할 트리거의 추가 속성.

IPluginFactory 인터페이스

IPluginAdaptor는 IPluginFactory 인스턴스를 반환합니다. IPluginFactory 인스턴스는 플러그인된 애플리케이션에서 명령을 실행하고 Orchestrator 작업을 수행할 개체를 찾습니다.

IPluginFactory 인터페이스는 다음 필드를 정의합니다.

static final java.lang.String RELATION_CHILDREN

IPluginFactory 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

executePluginCommand(java.lang.String cmd)

Void 명령을 실행하려면 이 플러그인을 사용합니다. 이 메서드를 사용하지 않는것이 좋습니다.

find(java.lang.String type,java.lang.String id)

java.lang.Object 개체를 찾으려면 이 플러그인을 사용합니다. ID와 유형으로 개체를 식별합니다.

findAll(java.lang.String type,java.lang.String query)

QueryResult 특정 유형이며 쿼리 문자열과 일치하는 개체를 찾으려면 이 플러그인을 사용합니다. 이 플러그인의IPluginFactory 구현에서 쿼리의 구문을 정의합니다. 쿼리 구문을 정의하지않으면 findAll()는 지정된 유형의 모든 개체를 반환합니다.

findRelation(java.lang.StringparentType, java.lang.StringparentId, java.lang.StringrelationName)

java.util.List 개체에 하위 항목이 있는지 확인합니다.

hasChildrenInRelation(java.lang.String parentType, java.lang.StringparentId, java.lang.StringrelationName)

HasChildrenResult 특정 관계를 기준으로 주어진 상위 항목과 관련된 모든 하위 항목을 찾습니다.

invalidate(java.lang.String type,java.lang.String id)

Void 유형과 ID로 개체를 무효화합니다.

void invalidateAll() Void 캐시의 모든 개체를 무효화합니다.

VMware vRealize Orchestrator를 사용한 개발

212 VMware, Inc.

Page 213: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

IPluginNotificationHandler 인터페이스

IPluginNotificationHandler는 Orchestrator가 플러그인을 통해 액세스하는 개체에서 발생하는 다양한 이벤트 종류에 대해 Orchestrator에 알리는 메서드를 정의합니다.

IPluginNotificationHandler 인터페이스는 다음 메서드를 정의합니다.

메서드 반환 설명

getSessionID() java.lang.String 현재 세션 ID를 반환

notifyElementDeleted(java.lang.String type, java.lang.String id)

Void 주어진 유형과 ID를 가진 개체가 삭제되었음을 시스템에 알림

notifyElementInvalidate(java.lang.String type, java.lang.String id)

Void 개체의 관계가 변경되었음을 시스템에알림. notifyElementInvalidate() 메서드를 사용해 개체를 무효화하는 관계 변경뿐만 아니라 개체 간의 모든관계 변경을 Orchestrator에 알릴수 있습니다. 예를 들어 상위 개체에하위 개체를 추가하면 두 개체 간 관계가 변경됩니다.

notifyElementUpdated(java.lang.String type, java.lang.String id)

Void 시스템에 개체 특성이 수정되었음을알림

notifyMessage(ch.dunes.vso.sdk.api.ErrorLevel severity,java.lang.String type,java.lang.String id,java.lang.String message)

Void 현재 모듈과 관련된 오류 메시지 게시

IPluginPublisher 인터페이스

IPluginPublisher 인터페이스는 모니터링할 장기 실행 워크플로 이벤트 대기 요소에 대한 이벤트 알림 버스의 감시자 이벤트를 게시합니다.

워크플로 트리거가 플러그인된 기술의 이벤트를 시작하면 해당 트리거를 감시하고 IPluginPublisher 인스턴스에 등록된 플러그인 감시자는 대기 중인 모든 워크플로에 이벤트가 발생했음을 알립니다.

IPluginPublisher 인터페이스는 다음 메서드를 정의합니다.

Type 값 설명

pushWatcherEvent(java.lang.Stringid, java.util.Propertiesproperties)

Void 이벤트 알림 버스의 감시자 이벤트 게시

WebConfigurationAdaptor 인터페이스

WebConfigurationAdaptor 인터페이스는 IConfigurationAdaptor를 구현하고 플러그인의 구성 탭에서 웹 애플리케이션을 찾아서 설치할 메서드를 정의합니다.

참고 WebConfigurationAdaptor 인터페이스는 Orchestrator 4.1부터 사용되지 않습니다. 웹 애플리케이션을 구성에 추가하려면 IConfigurationAdaptor를 구현하고 vso.xml 파일에서 configuration-war 특성을 사용하여 웹 애플리케이션을 식별합니다.

WebConfigurationAdaptor 인터페이스는 다음 메서드를 정의합니다.

6장 플러그인 개발

VMware, Inc. 213

Page 214: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 반환 설명

getWebAppContext() 문자열 구성 탭에 대한 웹 애플리케이션의WAR 파일을 찾습니다. DAR 파일에서 /webapps 디렉토리의 WAR 파일에대한 이름 및 경로를 문자열로 제공합니다.

setWebConfiguration(booleanwebConfiguration)

부울 구성 탭의 컨텐츠가 웹 애플리케이션에 의해 정의되는지 여부를 결정합니다.

PluginTrigger 클래스

PluginTrigger 클래스는 워크플로의 대기 이벤트 요소를 대신해 플러그인된 기술에서 모니터링할 개체와이벤트에 대한 정보를 가져오는 트리거 모듈을 생성합니다.

PluginTrigger 클래스는 모니터링할 개체의 유형 및 이름, 이벤트의 속성 및 시간 초과 기간을 가져오거나설정하는 메서드를 정의합니다.

워크플로의 대기 이벤트 요소에서 배타적으로 사용할 PluginTrigger 클래스의 구현을 만들 수 있습니다. 이벤트를 정의하고 IPluginEventPublisher.pushTrigger() 메서드를 구현하는 클래스에서 Orchestrator 정책에 대한 정책 트리거를 정의합니다.

public class PluginTrigger

extends java.lang.Object

implements java.io.Serializable

PluginTrigger 클래스는 다음 메서드를 정의합니다.

메서드 반환 설명

getModuleName() java.lang.String 트리거 모듈의 이름을 가져옵니다.

getProperties() java.util.Properties 트리거의 속성 목록을 가져옵니다.

getSdkId() java.lang.String 플러그인된 기술에서 모니터링할 개체의 ID를 가져옵니다.

getSdkType() java.lang.String 플러그인된 기술에서 모니터링할 개체의 유형을 가져옵니다.

getTimeout() Long 트리거 시간 초과 기간을 가져옵니다.

setModuleName(java.lang.StringmoduleName)

Void 트리거 모듈의 이름을 설정합니다.

setProperties(java.util.Propertiesproperties)

Void 트리거의 속성 목록을 설정합니다.

setSdkId(java.lang.String sdkId) Void 플러그인된 기술에서 모니터링할 개체의 ID를 설정합니다.

setSdkType(java.lang.StringsdkType)

Void 플러그인된 기술에서 모니터링할 개체의 유형을 설정합니다.

setTimeout(long timeout) Void 시간 초과 기간을 초 단위로 설정합니다. 음수 값은 시간 초과를 비활성화합니다.

생성자

n PluginTrigger()

n PluginTrigger(java.lang.String moduleName, long timeout, java.lang.String sdkType, java.lang.String

sdkId)

VMware vRealize Orchestrator를 사용한 개발

214 VMware, Inc.

Page 215: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

PluginWatcher 클래스

PluginWatcher 클래스는 장기 실행 워크플로 대기 이벤트 요소를 대신해 플러그인된 기술의 정의된 이벤트에 대해 트리거 모듈을 감시합니다.

PluginWatcher 클래스는 플러그인 감시자 인스턴스를 만드는 데 사용할 수 있는 생성자를 정의합니다.PluginWatcher 클래스는 감시할 워크플로 트리거의 이름 및 시간 초과 기간을 가져오거나 설정하는 메서드를 정의합니다.

public class PluginWatcher

extends java.lang.Object

implements java.io.Serializable

PluginWatcher 클래스는 다음 메서드를 정의합니다.

메서드 반환 설명

getId() java.lang.String 트리거의 ID를 가져옵니다

getModuleName() java.lang.String 트리거 모듈의 이름을 가져옵니다

getTimeoutDate() Long 트리거 시간 초과 날짜를 가져옵니다

getTrigger() Void 트리거를 가져옵니다

setId(java.lang.String id) Void 트리거의 ID를 설정합니다

setTimeoutDate() Void 트리거 시간 초과 날짜를 설정합니다

생성자

PluginWatcher(PluginTrigger trigger)

QueryResult 클래스

QueryResult 클래스는 Orchestrator가 플러그인을 통해 액세스한 개체에서 만든 find 쿼리의 결과를 포함하고 있습니다.

public class QueryResult

extends java.lang.Object

implements java.io.Serializable

검색된 결과의 총 개수가 쿼리가 반환하는 결과의 개수를 초과하는 경우 totalCount 값은 QueryResult가 반환하는 요소의 개수보다 클 수 있습니다. 쿼리가 반환하는 결과의 개수는 vso.xml 파일의 쿼리 구문에 정의되어 있습니다.

QueryResult 클래스는 다음 메서드를 정의합니다.

메서드 반환 설명

addElement(java.lang.Objectelement)

Void QueryResult에 요소를 추가합니다

addElements(java.util.Listelements)

Void QueryResult에 요소의 목록을 추가합니다

getElements() java.util.List 플러그인된 애플리케이션에서 요소를가져옵니다

getTotalCount() Long 플러그인된 기술에서 사용 가능한 모든 요소의 개수를 가져옵니다

isPartialResult() 부울 가져온 결과가 완전한지 확인합니다

removeElement(java.lang.Objectelement)

Void 플러그인된 기술에서 요소를 제거합니다

6장 플러그인 개발

VMware, Inc. 215

Page 216: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 반환 설명

setElements(java.util.Listelements)

Void 플러그인된 기술에서 요소를 설정합니다

setTotalCount(long totalCount) Void 플러그인된 기술에서 사용 가능한 요소의 총 개수를 설정합니다

생성자

n QueryResult()

n QueryResult(java.util.List ret)

n QueryResult(java.util.List elements, long totalCount)

SDKFinderProperty 클래스

SDKFinderProperty 클래스는 Orchestrator 찾기 개체가 플러그인된 기술에서 찾은 개체의 속성을 가져오고 설정하기 위한 메서드를 정의합니다. IDynanmicFinder.getProperties 메서드는 SDKFinderProperty 개체를반환합니다.

public class SDKFinderProperty

extends java.lang.Object

SDKFinderProperty 클래스는 다음 메서드를 정의합니다.

메서드 반환 설명

getAttributeName() java.lang.String 개체 특성 이름을 가져옵니다

getBeanProperty() java.lang.String Java bean 속성을 가져옵니다

getDescription() java.lang.String 개체 설명을 가져옵니다

getDisplayName() java.lang.String 개체 표시 이름을 가져옵니다

getPossibleResultType() java.lang.String 찾기가 반환하는 결과로 가능한 유형을 가져옵니다

getPropertyAccessor() java.lang.String 개체 속성 접근자를 가져옵니다

getPropertyAccessorTree() java.lang.Object 개체 속성 접근자 트리를 가져옵니다

isHidden() 부울 개체를 표시하거나 숨깁니다

isShowInColumn() 부울 데이터베이스 열에서 개체를 표시하거나 숨깁니다

isShowInDescription() 부울 개체 설명을 표시하거나 숨깁니다

setAttributeName(java.lang.StringattributeName)

Void 개체 특성 이름을 설정합니다

setBeanProperty(java.lang.StringbeanProperty)

Void Java bean에서 속성을 설정합니다

setDescription(java.lang.Stringdescription)

Void 개체 설명을 설정합니다

setDisplayName(java.lang.StringdisplayName)

Void 개체 표시 이름을 설정합니다

setHidden(boolean hidden) Void 개체를 표시하거나 숨깁니다

setPossibleResultType(java.lang.String possibleResultType)

Void 찾기가 반환하는 결과로 가능한 유형을 설정합니다

setPropertyAccessor(java.lang.String propertyAccessor)

Void 개체 속성 접근자를 설정합니다

VMware vRealize Orchestrator를 사용한 개발

216 VMware, Inc.

Page 217: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 반환 설명

setPropertyAccessorTree(java.lang.Object propertyAccessorTree)

Void 개체 속성 접근자 트리를 설정합니다

setShowInColumn(booleanshowInTable)

Void 데이터베이스 열에서 개체를 표시하거나 숨깁니다

setShowInDescription(booleanshowInDescription)

Void 개체 설명을 표시하거나 숨깁니다

생성자

SDKFinderProperty(java.lang.String attributeName, java.lang.String displayName, java.lang.String

beanProperty, java.lang.String propertyAccessor)

PluginExecutionException 클래스

PluginExecutionException 클래스는 플러그인이 작업을 실행할 때 예외가 발생하면 오류 메시지를 반환합니다.

public class PluginExecutionException

extends java.lang.Exception

implements java.io.Serializable

PluginExecutionException 클래스는 다음 메서드를 class java.lang.Throwable에서 상속합니다.

fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace,printStackTrace, printStackTrace, setStackTrace, toStringfillInStackTrace, getCause, getLocalizedMessage,getMessage, getStackTrace, initCause, printStackTrace

생성자

PluginExecutionException(java.lang.String message)

PluginOperationException 클래스

PluginOperationException 클래스는 플러그인 작업 중 발생한 오류를 처리합니다.

public class PluginOperationException

extends java.lang.RuntimeException

implements java.io.Serializable

PluginOperationException 클래스는 다음 메서드를 class java.lang.Throwable에서 상속합니다.

fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace,printStackTrace, printStackTrace, setStackTrace, toString

생성자

PluginOperationException(java.lang.String message)

HasChildrenResult 열거형

HasChildrenResult 열거형은 지정된 상위 항목에 하위 항목이 있는지 여부를 선언합니다.IPluginFactory.hasChildrenInRelation 메서드는 HasChildrenResult 개체를 반환합니다.

public enum HasChildrenResult

extends java.lang.Enum<HasChildrenResult>

implements java.io.Serializable

6장 플러그인 개발

VMware, Inc. 217

Page 218: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

HasChildrenResult 열거형은 다음 상수를 정의합니다.

n public static final HasChildrenResult Yes

n public static final HasChildrenResult No

n public static final HasChildrenResult Unknown

HasChildrenResult 열거형은 다음 메서드를 정의합니다.

메서드 반환 설명

getValue() int 다음 값 중 하나를 반환합니다.

1 상위 항목에 하위 항목있음

-1 상위 항목에 하위 항목없음

0 알 수 없거나 잘못된 매개 변수

valueOf(java.lang.String name) static HasChildrenResult 지정된 이름을 가진 이 유형의 열거형상수를 반환합니다. 이 유형의 열거형상수를 선언하는 데 사용된 식별자와문자열이 정확히 일치해야 합니다. 공백 문자는 열거형 이름에 사용할 수없습니다.

values() static HasChildrenResult[] 이 열거형 유형의 상수가 포함된 어레이를 선언된 순서대로 반환됩니다. 이메서드는 다음과 같이 상수에서 반복될 수 있습니다.

for (HasChildrenResult c :HasChildrenResult.values()) System.out.println(c);

HasChildrenResult 열거형은 class java.lang.Enum에서 다음 메서드를 상속합니다.

clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf

ScriptingAttribute 주석 유형

ScriptingAttribute 주석 유형은 플러그인된 기술에서 스크립팅의 속성으로 사용할 개체의 특성을 주석으로답니다.

@Retention(value=RUNTIME)

@Target(value={METHOD,FIELD})

public @interface ScriptingAttribute

ScriptingAttribute 주석 유형은 다음 값을 가집니다.

public abstract java.lang.String value

ScriptingFunction 주석 유형

ScriptingFunction 주석 유형은 스크립팅에서 속성으로 사용할 메서드를 주석으로 답니다.

@Retention(value=RUNTIME)

@Target(value={METHOD,CONSTRUCTOR})

public @interface ScriptingFunction

VMware vRealize Orchestrator를 사용한 개발

218 VMware, Inc.

Page 219: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

ScriptingFunction 주석 유형은 다음 값을 가집니다.

public abstract java.lang.String value

ScriptingParameter 주석 유형

ScriptingParameter 주석 유형은 스크립팅에서 속성으로 사용할 매개 변수를 주석으로 답니다.

@Retention(value=RUNTIME)

@Target(value=PARAMETER)

public @interface ScriptingParameter

ScriptingParameter 주석 유형은 다음 값을 가집니다.

public abstract java.lang.String value

vso.xml 플러그인 정의 파일의 요소vso.xml 파일에는 표준 요소 집합이 포함되어 있습니다. 여기에는 필수 요소와 선택적 요소가 있습니다.각 요소에는 Orchestrator 개체 및 작업에 매핑되는 값을 정의하는 특성이 있습니다.

또한 요소에는 하위 요소가 없을 수도 있고 여러 개가 있을 수도 있습니다. 하위 요소는 상위 요소를 추가로 정의합니다. 동일한 하위 요소가 여러 상위 요소에 표시될 수 있습니다. 예를 들어 description 요소는하위 요소가 없지만 module, example, trigger, gauge, finder, constructor, method, object, enumeration 등의여러 상위 요소에 대한 하위 요소로 표시됩니다.

다음 각 요소 정의는 해당 특성, 상위 요소 및 하위 요소를 나열합니다.

모듈 요소

모듈은 Orchestrator에서 사용할 수 있도록 플러그인 개체 집합을 설명합니다.

모듈은 플러그인된 기술의 데이터가 Java 클래스에 매핑되는 방법, 버전 관리, 모듈을 배포하는 방법 그리고 플러그인이 Orchestrator 인벤토리에 표시되는 방법에 대한 정보를 포함하고 있습니다.

<module> 요소는 선택 사항입니다. <module> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

name 문자열 플러그인에 있는 모든 <finder> 요소의 유형을 정의합니다. 필수 특성입니다.

version 숫자 플러그인 버전 번호로 새 플러그인 버전에서 패키지를 다시 로드할 때 사용합니다. 필수 특성입니다.

build-number 숫자 플러그인 빌드 번호로 새 플러그인 버전에서 패키지를 다시 로드할 때 사용합니다. 필수 특성입니다.

image 이미지 파일 Orchestrator 인벤토리에 표시할 아이콘입니다. 필수 특성입니다.

display-name 문자열 Orchestrator 인벤토리에 나타나는이름입니다. 선택적 특성입니다.

interface-mapping-allowed true 또는 false 인터페이스 매핑을 사용하면 안 됩니다. 선택적 특성입니다.

6장 플러그인 개발

VMware, Inc. 219

Page 220: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑3. 요소 계층

상위 요소 하위 요소

없음 n <description>

n <installation>

n <configuration>

n <finder-datasources>

n <inventory>

n <finders>

n <scripting-objects>

n <enumerations>

description 요소

<description> 요소는 API 탐색기 설명서에 표시되는 플러그인 요소에 대한 설명을 제공합니다.

API 탐색기 설명서에서 <description> 태그와 </description> 태그 사이에 표시되는 텍스트를 추가합니다.

<description> 요소는 선택 사항입니다. <description> 요소에는 특성이 없습니다.

표 6‑4. 요소 계층

상위 요소 하위 요소

n <module>

n <example>

n <trigger>

n <gauge>

n <finder>

n <constructor>

n <method>

n <object>

n <enumeration>

없음

deprecated 요소

<deprecated> 요소는 API 탐색기 설명서에서 사용되지 않는 개체 및 메서드를 표시합니다.

API 탐색기 설명서에서 <deprecated> 태그와 </deprecated> 태그 사이에 표시되는 텍스트를 추가합니다.

<deprecated> 요소는 선택 사항입니다. <deprecated> 요소에는 특성이 없습니다.

표 6‑5. 요소 계층

상위 요소 하위 요소

n <method>

n <object>

없음

url 요소

<url> 요소는 개체 또는 열거형에 대한 외부 문서를 가리키는 URL을 제공합니다.

사용자가 <url> 및 </url> 태그 사이에 URL을 제공합니다.

<url> 요소는 선택 사항입니다. <url> 요소에는 특성이 없습니다.

VMware vRealize Orchestrator를 사용한 개발

220 VMware, Inc.

Page 221: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑6. 요소 계층

상위 요소 하위 요소

n <enumeration>

n <object>

없음

설치 요소

<installation> 요소를 사용하면 패키지를 설치하거나 서버가 시작될 때 스크립트를 실행할 수 있습니다.

<installation> 요소는 선택 사항입니다. <installation> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

mode always, never 또는 version Orchestrator 서버가 시작될 때 다음 동작의 mode 값 결과를 설정합니다.n 작업 always 실행n 작업 never 실행n 서버가 새 플러그인 버전을 감지했을 때 작업 실행

필수 특성입니다.

표 6‑7. 요소 계층

상위 요소 하위 요소

<module> <action>

action 요소

<action> 요소는 Orchestrator 서버가 시작될 때 실행되는 작업을 지정합니다.

<action> 요소 특성은 플러그인의 시작 시 동작을 정의하는 Orchestrator 패키지 또는 스크립트의 경로를 제공합니다.

<action> 요소는 선택 사항입니다. 플러그인의 <action> 요소 수에는 제한이 없습니다. <action> 요소에는다음과 같은 특성이 있습니다.

특성 값 설명

resource 문자열 dar 파일 루트의 Java 패키지 또는스크립트 경로입니다. 필수 특성입니다.

type install-package 또는 execute-script

지정된 Orchestrator 패키지를Orchestrator 서버에 설치하거나 지정된 스크립트를 실행합니다. 필수 특성입니다.

표 6‑8. 요소 계층

상위 요소 하위 요소

<installation> 없음

finder-datasources 요소

<finder-datasources> 요소는 <finder-datasource> 요소의 컨테이너입니다.

<finder-datasources> 요소는 선택 사항입니다. <finder-datasources> 요소에는 특성이 없습니다.

6장 플러그인 개발

VMware, Inc. 221

Page 222: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑9. 요소 계층

상위 요소 하위 요소

<module> <finder-datasource>

finder-datasource 요소

<finder-datasource> 요소는 플러그인에 대해 만든 IPluginAdaptor 구현의 Java 클래스 파일을 가리킵니다.

<finder-datasource> 요소에서 Orchestrator가 플러그인된 기술의 개체에 액세스하는 방법을 설정할 수있습니다. <finder-datasource> 요소는 사용자가 만든 플러그인 어댑터의 Java 클래스를 식별합니다. 플러그인 어댑터 클래스는 사용자가 만든 플러그인 팩토리를 인스턴스화합니다. 플러그인 팩토리는 플러그인된 기술의 개체를 찾는 메서드를 정의합니다. <finder-datasource> 요소에서 팩토리가 수행하는 finder 메서드 호출에 대한 시간 초과를 설정할 수 있습니다. IPluginFactory 인터페이스의 다양한 finder 메서드에서로 다른 시간 초과가 적용됩니다.

<finder-datasource> 요소는 선택 사항입니다. 플러그인의 <finder-datasources> 요소 수에는 제한이 없습니다. <finder-datasource> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

name 문자열 <finder> 요소 datasource 특성에서데이터 소스를 식별합니다. XML id에 해당합니다. 필수 특성입니다.

adaptor-class Java 클래스 플러그인 어댑터를 만들기 위해 정의한 IPluginAdaptor 구현(예:com.vmware.plugins.sample.Adaptor)을 가리킵니다. 필수 특성입니다.

concurrent-call true(기본값) 또는 false 여러 사용자가 동시에 어댑터에 액세스하도록 허용합니다. 플러그인이 동시 호출을 지원하지 않으면concurrent-call을 false로 설정해야합니다. 선택적 특성입니다.

invoker-mode direct(기본값) 또는 timeout finder 함수에 대한 시간 초과를 설정합니다. direct로 설정하면 finder 함수 호출이 시간 초과되지 않습니다.timeout으로 설정하면 Orchestrator서버에서 finder 메서드에 해당하는시간 초과 기간을 적용합니다. 선택적특성입니다.

anonymous-login-mode never(기본값) 또는 always 사용자의 사용자 이름 및 암호를 플러그인으로 전달하거나 전달하지 않습니다. 선택적 특성입니다.

timeout-fetch-relation 숫자(기본값: 30초) findRelation()에서의 호출에 적용됩니다. 선택적 특성입니다.

timeout-find-all 숫자(기본값: 60초) findAll()에서의 호출에 적용됩니다.선택적 특성입니다.

timeout-find 숫자(기본값: 60초) find()에서의 호출에 적용됩니다. 선택적 특성입니다.

timeout-has-children-in-relation 숫자(기본값: 2초) findChildrenInRelation()에서의 호출에 적용됩니다. 선택적 특성입니다.

timeout-execute-plugin-command 숫자(기본값: 30초) executePluginCommand()에서의 호출에 적용됩니다. 선택적 특성입니다.

VMware vRealize Orchestrator를 사용한 개발

222 VMware, Inc.

Page 223: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑10. 요소 계층

상위 요소 하위 요소

<finder-datasources> 없음

인벤토리 요소

<inventory> 요소는 Orchestrator 클라이언트 인벤토리 보기 및 개체 선택 대화상자에 나타나는 플러그인의 계층형 목록 중 루트를 정의합니다.

<inventory> 요소는 플러그인 애플리케이션의 개체를 나타내는 것이 아니라 Orchestrator 스크립팅 API의 개체로서 플러그인 자체를 나타냅니다.

<inventory> 요소는 선택 사항입니다. <inventory> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

type Orchestrator 개체 유형 개체의 계층에서 루트를 나타내는<finder> 요소의 유형. 필수 특성입니다.

표 6‑11. 요소 계층

상위 요소 하위 요소

<module> 없음

finders 요소

<finders> 요소는 모든 <finder> 요소의 컨테이너입니다.

<finders> 요소는 선택 사항입니다. <finders> 요소에는 특성이 없습니다.

표 6‑12. 요소 계층

상위 요소 하위 요소

<module> <finder>

finder 요소

<finder> 요소는 Orchestrator 클라이언트에서 플러그인을 통해 찾을 수 있는 개체 유형을 나타냅니다.

<finder> 요소는 개체 찾기가 나타내는 개체를 정의하는 Java 클래스를 식별합니다. <finder> 요소는Orchestrator 클라이언트 인터페이스에 개체가 표시되는 방식을 정의합니다. 또한 Orchestrator 스크립팅 API가 이 개체를 나타내기 위해 정의하는 스크립팅 개체를 식별합니다.

찾기는 여러 유형의 플러그인된 기술에 사용되는 개체 형식 간의 인터페이스 역할을 합니다.

<finder> 요소는 선택 사항입니다. 플러그인의 <finder> 요소 수에는 제한이 없습니다. <finder> 요소는 다음과 같은 특성을 정의합니다.

특성 값 설명

type Orchestrator 개체 유형 찾기가 나타내는 개체 유형입니다. 필수 특성입니다.

datasource <finder-datasource name> 특성 refid 데이터 소스를 사용하여 개체를정의하는 Java 클래스를 식별합니다.필수 특성입니다.

6장 플러그인 개발

VMware, Inc. 223

Page 224: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

특성 값 설명

dynamic-finder Java 메서드 vso.xml 파일에서 정의하는 대신IDynamicFinder 인스턴스에서 찾기의ID 및 속성을 프로그래밍 방식으로 반환하도록 구현한 사용자 지정 finder메서드를 정의합니다. 선택적 특성입니다.

hidden true 또는 false(기본값) true인 경우 Orchestrator 클라이언트에서 찾기를 숨깁니다. 선택적 특성입니다.

image 그래픽 파일의 경로 Orchestrator 클라이언트의 계층 목록에서 찾기를 나타내는 16x16 아이콘입니다. 선택적 특성입니다.

java-class Java 클래스의 이름 찾기에서 찾아서 스크립팅 개체에 매핑하는 개체를 정의하는 Java 클래스입니다. 선택적 특성입니다.

script-object <scripting-object type> 특성 이 찾기를 매핑할 <scripting-object>유형입니다(있는 경우). 선택적 특성입니다.

표 6‑13. 요소 계층

상위 요소 하위 요소

<finders> n <id>

n <description>

n <properties>

n <default-sorting>

n <inventory-children>

n <relations>

n <inventory-tabs>

n <events>

속성 요소

<properties> 요소는 <finder><property> 요소의 컨테이너입니다.

<properties> 요소는 선택 사항입니다. <properties> 요소에는 특성이 없습니다.

표 6‑14. 요소 계층

상위 요소 하위 요소

<finder> <property>

속성 요소

<property> 요소는 발견한 개체의 속성을 Java 속성 또는 메서드 호출에 매핑합니다.

사용자는 처리할 플러그인 팩토리 구현의 속성을 가져오기 위해 플러그인 팩토리를 구현할 때SDKFinderProperty 클래스의 메서드에서 호출할 수 있습니다.

Orchestrator 클라이언트의 보기에서 개체 속성을 표시하거나 숨길 수 있습니다. 개체 속성을 정의하기위해 열거형을 사용할 수도 있습니다.

<property> 요소는 선택 사항입니다. 플러그인의 <property> 요소 수에는 제한이 없습니다. <property> 요소에는 다음과 같은 특성이 있습니다.

VMware vRealize Orchestrator를 사용한 개발

224 VMware, Inc.

Page 225: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

특성 값 설명

name 찾기 이름 요소를 저장하기 위해 FinderResult가사용하는 이름. 필수 특성입니다.

display-name 찾기 이름 표시된 속성 이름. 선택적 특성입니다.

bean-property 속성 이름 get 및 set 작업을 사용해 가져올 속성을 식별하기 위해 bean-property 특성을 사용합니다. 이름이 MyProperty인 속성을 식별하면 플러그인은getMyProperty 및 setMyProperty 작업을 정의합니다.

bean-property 또는 property-accessor 중 하나를 설정하며 둘 다는할 수 없습니다. 선택적 특성입니다.

property-accessor 개체에서 속성 값을 가져오는 메서드 property-accessor 특성을 사용하면개체의 속성을 검증할 OGNL 표현식을 정의할 수 있습니다.

bean-property 또는 property-accessor 중 하나를 설정하며 둘 다는할 수 없습니다. 선택적 특성입니다.

show-in-column true(기본값) 또는 false true이면 이 속성이 Orchestrator클라이언트 결과 표에 표시됩니다. 선택적 특성입니다.

show-in-description true(기본값) 또는 false true이면 이 속성이 개체 설명에 표시됩니다. 선택적 특성입니다.

hidden true 또는 false(기본값) true이면 이 속성이 항상 숨겨집니다.선택적 특성입니다.

linked-enumeration 열거형 이름 찾기 속성을 열거형에 연결합니다. 선택적 특성입니다.

표 6‑15. 요소 계층

상위 요소 하위 요소

<properties> 하위 요소

관계 요소

<relations> 요소는 <finder><relation> 요소의 컨테이너입니다.

<relations> 요소는 선택 사항입니다. <relations> 요소에는 특성이 없습니다.

표 6‑16. 요소 계층

상위 요소 하위 요소

<finder> <relation>

관계 요소

<relation> 요소는 개체가 다른 개체와 관계를 맺는 방법을 정의합니다.

<relation> 요소에 관계 이름을 정의합니다.

<relation> 요소는 선택 사항입니다. 플러그인의 <relation> 요소 수에는 제한이 없습니다. <relation> 요소에는 다음과 같은 특성이 있습니다.

6장 플러그인 개발

VMware, Inc. 225

Page 226: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

특성 값 설명

name 관계 이름 이 관계의 이름입니다. 필수 특성입니다.

type Orchestrator 개체 유형 이 관계에 의해 다른 개체와 관련된개체의 유형입니다. 필수 특성입니다.

cardinality to-one 또는 to-many 개체 간의 관계를 일대일 또는 일대다로 정의합니다. 선택적 특성입니다.

표 6‑17. 요소 계층

상위 요소 하위 요소

<relations> 없음

id 요소

<id> 요소는 찾기가 식별하는 개체의 고유 ID를 가져오기 위한 메서드를 정의합니다.

<id> 요소는 선택 사항입니다. <id> 요소에는 다음과 같은 특성이 있습니다.

특성 값 설명

accessor 메서드 이름 accessor 특성을 사용하면 개체의 속성을 검증할 OGNL 표현식을 정의할수 있습니다. 필수 특성입니다.

표 6‑18. 요소 계층

상위 요소 하위 요소

<finder> 없음

인벤토리-하위 항목 요소

<inventory-children> 요소는 Orchestrator 클라이언트 인벤토리 보기 및 개체 선택 상자에서 개체를 표시하는 목록의 계층을 정의합니다.

<inventory-children> 요소는 선택 사항입니다. <inventory-children> 요소에는 특성이 없습니다.

표 6‑19. 요소 계층

상위 요소 하위 요소

<finder> <relation-link>

관계-링크 요소

<relation-link> 요소는 인벤토리 탭의 상위 개체와 하위 개체 간 계층 구조를 정의합니다.

<relation-link> 요소는 선택 사항입니다. 플러그인의 <relation-link> 요소 수에는 제한이 없습니다.<relation-link> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 관계 이름 관계 이름에 대한 refid입니다. 필수특성입니다.

VMware vRealize Orchestrator를 사용한 개발

226 VMware, Inc.

Page 227: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑20. 요소 계층

상위 요소 하위 요소

<inventory-children> 없음

events 요소

<events> 요소는 <trigger> 및 <gauge> 요소의 컨테이너입니다.

<events> 요소는 트리거 또는 게이지를 무제한으로 포함할 수 있습니다.

<events> 요소는 선택 사항입니다. <events> 요소에는 특성이 없습니다.

표 6‑21. 요소 계층

상위 요소 하위 요소

<finder> n <trigger>

n <gauge>

trigger 요소

<trigger> 요소는 이 찾기에 사용할 수 있는 트리거를 선언합니다. 트리거를 설정하려면 IPluginAdaptor의registerEventPublisher() 및 unregisterEventPublisher() 메서드를 구현해야 합니다.

<trigger> 요소는 선택 사항입니다. <trigger> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 트리거 이름 이 트리거의 이름입니다. 필수 특성입니다.

표 6‑22. 요소 계층

상위 요소 하위 요소

<events> n <description>

n <trigger-properties>

trigger-properties 요소

<trigger-properties> 요소는 <trigger-property> 요소의 컨테이너입니다.

<trigger-properties> 요소는 선택 사항입니다. <trigger-properties> 요소에는 특성이 없습니다.

표 6‑23. 요소 계층

상위 요소 하위 요소

<trigger> <trigger-property>

trigger-properties 요소

<trigger-property> 요소는 트리거 개체를 식별하는 속성을 정의합니다.

<trigger-property> 요소는 선택 사항입니다. 플러그인의 <trigger-property> 요소 수에는 제한이 없습니다.<trigger-property> 요소에는 다음과 같은 특성이 있습니다.

6장 플러그인 개발

VMware, Inc. 227

Page 228: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Type 값 설명

name 트리거 이름 트리거의 이름. 선택적 특성입니다.

display-name 트리거 이름 Orchestrator 클라이언트에 표시되는 이름입니다. 선택적 특성입니다.

type 트리거 유형 트리거를 정의하는 개체 유형입니다.필수 특성입니다.

표 6‑24. 요소 계층

상위 요소 하위 요소

<trigger-properties> 없음

gauge 요소

<gauge> 요소는 이 찾기에 사용할 수 있는 게이지를 정의합니다. 게이지를 설정하려면 IPluginAdaptor의registerEventPublisher() 및 unregisterEventPublisher() 메서드를 구현해야 합니다.

<gauge> 요소는 선택 사항입니다. 플러그인의 <gauge> 요소 수에는 제한이 없습니다. <gauge> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 게이지 이름 게이지의 이름입니다. 필수 특성입니다.

min-value 숫자 최소 임계값입니다. 선택적 특성입니다.

max-value 숫자 최대 임계값입니다. 선택적 특성입니다.

unit 개체 유형 게이지를 정의하는 개체 유형입니다.필수 특성입니다.

format 문자열 모니터링되는 값의 형식입니다. 선택적 특성입니다.

표 6‑25. 요소 계층

상위 요소 하위 요소

<events> <description>

scripting-objects 요소

<scripting-objects> 요소는 <object> 요소의 컨테이너입니다.

<scripting-objects> 요소는 선택 사항입니다. <scripting-objects> 요소에는 특성이 없습니다.

표 6‑26. 요소 계층

상위 요소 하위 요소

<module> <object>

VMware vRealize Orchestrator를 사용한 개발

228 VMware, Inc.

Page 229: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

개체 요소

<object> 요소는 플러그인된 기술의 생성자, 특성 및 메서드를 Orchestrator 스크립팅 API가 노출하는JavaScript 개체 유형에 매핑합니다.

개체 이름 지정 규칙은 “플러그인 개체 이름 지정,”(52 페이지) 항목을 참조하십시오.

<object> 요소는 선택 사항입니다. 플러그인의 <object> 요소 수에는 제한이 없습니다. <object> 요소에는다음과 같은 특성이 있습니다.

Type 값 설명

script-name JavaScript 이름 클래스의 스크립팅 이름. 전체에서 고유해야 합니다. 필수 특성입니다.

java-class Java 클래스 이 JavaScript 클래스가 래핑한Java 클래스. 필수 특성입니다.

create true(기본값) 또는 false true이면 이 클래스의 새 인스턴스를생성할 수 있습니다. 선택적 특성입니다.

strict true 또는 false(기본값) true이면 vso.xml 파일에 주석을 달거나 선언한 메서드만 호출할 수 있습니다. 선택적 특성입니다.

is-deprecated true 또는 false(기본값) true이면 개체가 사용되지 않는 Java클래스를 매핑합니다. 선택적 특성입니다.

since-version 문자열 Java 클래스를 사용하지 않게 된 후의 버전. 선택적 특성입니다.

표 6‑27. 요소 계층

상위 요소 하위 요소

<scripting-objects> n <description>

n <deprecated>

n <url>

n <constructors>

n <attributes>

n <methods>

n <singleton>

constructors 요소

<constructors> 요소는 <object><constructor> 요소의 컨테이너입니다.

<constructors> 요소는 선택 사항입니다. <constructors> 요소에는 특성이 없습니다.

표 6‑28. 요소 계층

상위 요소 하위 요소

<object> <constructor>

6장 플러그인 개발

VMware, Inc. 229

Page 230: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

constructor 요소

<constructor> 요소는 생성자 메서드를 정의합니다. <constructor> 메서드는 API 탐색기에서 설명서를 생성합니다.

<constructor> 요소는 선택 사항입니다. 플러그인의 <constructor> 요소 수에는 제한이 없습니다.<constructor> 요소에는 특성이 없습니다.

표 6‑29. 요소 계층

상위 요소 하위 요소

<constructors> n <description>

n <parameters>

생성자 parameters 요소

<parameters> 요소는 <constructor><parameter> 요소의 컨테이너입니다.

<parameters> 요소는 선택 사항입니다. <parameters> 요소에는 특성이 없습니다.

표 6‑30. 요소 계층

상위 요소 하위 요소

<constructor> <parameter>

생성자 parameter 요소

<parameter> 요소는 생성자의 매개 변수를 정의합니다.

<parameter> 요소는 선택 사항입니다. 플러그인의 <parameter> 요소 수에는 제한이 없습니다. <parameter> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 문자열 API 설명서에서 사용할 매개 변수 이름입니다. 필수 특성입니다.

type Orchestrator 매개 변수 유형 API 설명서에서 사용할 매개 변수 유형입니다. 필수 특성입니다.

is-optional true 또는 false true이면 값이 null일 수 있습니다.선택적 특성입니다.

since-version 문자열 메서드 버전입니다. 선택적 특성입니다.

표 6‑31. 요소 계층

상위 요소 하위 요소

<parameters> 없음

attributes 요소

<attributes> 요소는 <object><attribute> 요소의 컨테이너입니다.

<attributes> 요소는 선택 사항입니다. <attributes> 요소에는 특성이 없습니다.

VMware vRealize Orchestrator를 사용한 개발

230 VMware, Inc.

Page 231: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑32. 요소 계층

상위 요소 하위 요소

<object> <attribute>

attribute 요소

<attribute> 요소는 플러그인된 기술의 Java 클래스 특성을 Orchestrator JavaScript 엔진을 통해 사용할 수 있는 JavaScript 특성에 매핑합니다.

<attribute> 요소는 선택 사항입니다. 플러그인의 <attribute> 요소 수에는 제한이 없습니다. <attribute> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

java-name Java 특성 Java 특성의 이름입니다. 필수 특성입니다.

script-name JavaScript 개체 해당하는 JavaScript 개체의 이름입니다. 필수 특성입니다.

return-type 문자열 이 특성이 반환하는 개체의 유형입니다. API 탐색기 설명서에 나타납니다.선택적 특성입니다.

참고 JavaScript 반환 유형이Properties이면 지원되는 기본 Java구현은 java.util.HashMap 및java.util.Hashtable입니다.

read-only true 또는 false true이면 이 특성을 수정할 수 없습니다. 선택적 특성입니다.

is-optional true 또는 false true이면 이 필드는 null일 수 있습니다. 선택적 특성입니다.

show-in-api true 또는 false false이면 이 특성이 API 설명서에 나타나지 않습니다. 선택적 특성입니다.

is-deprecated true 또는 false true이면 개체가 사용되지 않는 특성을 매핑합니다. 선택적 특성입니다.

since-version 숫자 특성이 사용되지 않게 된 버전입니다.선택적 특성입니다.

표 6‑33. 요소 계층

상위 요소 하위 요소

<attributes> 없음

메서드 요소

<methods> 요소는 <object><method> 요소의 컨테이너입니다.

<methods> 요소는 선택 사항입니다. <methods> 요소에는 특성이 없습니다.

표 6‑34. 요소 계층

상위 요소 하위 요소

<object> <method>

6장 플러그인 개발

VMware, Inc. 231

Page 232: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

메서드 요소

<method> 요소는 플러그인된 기술의 Java 메서드를 Orchestrator JavaScript 엔진이 노출하는JavaScript 메서드로 매핑합니다.

<method> 요소는 선택 사항입니다. 플러그인의 <method> 요소 수에는 제한이 없습니다. <method> 요소에는다음과 같은 특성이 있습니다.

Type 값 설명

java-name Java 메서드 예를 들어 getVms(DataStore)와 같이괄호로 묶인 인수 유형을 포함하는Java 메서드 서명의 이름. 필수 특성입니다.

script-name JavaScript 메서드 해당하는 JavaScript 메서드의 이름입니다. 필수 특성입니다.

return-type Java 개체 유형 이 메서드가 가져오는 유형입니다. 선택적 특성입니다.

참고 JavaScript 반환 유형이Properties이면 지원되는 기본 Java구현은 java.util.HashMap 및java.util.Hashtable입니다.

static true 또는 false true이면 이 메서드는 정적입니다. 선택적 특성입니다.

show-in-api true 또는 false false이면 이 메서드가 API 설명서에나타나지 않습니다. 선택적 특성입니다.

is-deprecated true 또는 false true이면 개체가 사용되지 않는 메서드를 매핑합니다. 선택적 특성입니다.

since-version 숫자 메서드가 사용되지 않게 된 버전입니다. 선택적 특성입니다.

표 6‑35. 요소 계층

상위 요소 하위 요소

<methods> n <deprecated>

n <description>

n <example>

n <parameters>

example 요소

<example> 요소를 사용하여 API 탐색기 설명서에 표시되는 Javascript 메서드에 코드 예제를 추가할 수있습니다.

<example> 요소는 선택 사항입니다. <example> 요소에는 특성이 없습니다.

표 6‑36. 요소 계층

상위 요소 하위 요소

<method> n <code>

n <description>

VMware vRealize Orchestrator를 사용한 개발

232 VMware, Inc.

Page 233: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

code 요소

<code> 요소는 API 탐색기 설명서에 표시되는 예제 코드를 제공합니다.

<code> 태그와 </code> 태그 사이에 코드 예제를 제공합니다. <code> 요소는 선택 사항입니다. <code> 요소에는 특성이 없습니다.

표 6‑37. 요소 계층

상위 요소 하위 요소

<example> 없음

메서드 매개 변수 요소

<parameters> 요소는 <method><parameter> 요소의 컨테이너입니다.

<parameters> 요소는 선택 사항입니다. <parameters> 요소에는 특성이 없습니다.

표 6‑38.

상위 요소 하위 요소

<method> <parameter>

메서드 parameter 요소

<parameter> 요소는 메서드의 입력 매개 변수를 정의합니다.

<parameter> 요소는 선택 사항입니다. 플러그인의 <parameter> 요소 수에는 제한이 없습니다. <parameter> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

name 문자열 매개 변수 이름. 필수 특성입니다.

type Orchestrator 매개 변수 유형 매개 변수 유형. 필수 특성입니다.

is-optional true 또는 false true이면 값이 null일 수 있습니다.선택적 특성입니다.

since-version 문자열 메서드 버전입니다. 선택적 특성입니다.

표 6‑39. 요소 계층

상위 요소 하위 요소

<parameters> 없음

singleton 요소

<singleton> 요소는 Singleton 인스턴스로 JavaScript 스크립팅 개체를 생성합니다.

Singleton 개체는 정적 Java 클래스와 동일한 방식으로 동작합니다. Singleton 개체는Orchestrator가 플러그인된 기술에서 액세스하는 개체의 특정 인스턴스를 정의하는 것이 아니라 플러그인에서 사용할 수 있는 일반 개체를 정의합니다. 예를 들어 Singleton 개체를 사용하여 플러그인된 기술에 대한 연결을 설정할 수 있습니다.

<singleton> 요소는 선택 사항입니다. <singleton> 요소에는 다음과 같은 특성이 있습니다.

6장 플러그인 개발

VMware, Inc. 233

Page 234: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Type 값 설명

script-name JavaScript 개체 해당하는 JavaScript 개체의 이름입니다. 필수 특성입니다.

datasource Java 개체 이 JavaScript 개체의 소스 Java 개체입니다. 필수 특성입니다.

표 6‑40. 요소 계층

상위 요소 하위 요소

<object> 없음

enumerations 요소

<enumerations> 요소는 <enumeration> 요소의 컨테이너입니다.

<enumerations> 요소는 선택 사항입니다. <enumerations> 요소에는 특성이 없습니다.

표 6‑41. 요소 계층

상위 요소 하위 요소

<module> <enumeration>

enumeration 요소

<enumeration> 요소는 특정 유형의 모든 개체에 적용되는 공통 값을 정의합니다.

특정 유형의 모든 개체에 특정 특성이 필요하고 해당 특성의 값 범위가 제한된 경우 여러 값을 열거형 항목으로 정의할 수 있습니다. 예를 들어 개체 유형에 color 특성이 필요하고 빨간색, 파란색 및 녹색만 사용할 수 있는 경우 이 세 가지 색 값을 정의하는 세 가지 열거형 항목을 정의할 수 있습니다. 항목을 열거형 요소의 하위 요소로 정의합니다.

<enumeration> 요소는 선택 사항입니다. 플러그인의 <enumeration> 요소 수에는 제한이 없습니다.<enumeration> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

type Orchestrator 개체 유형 열거형 유형입니다. 필수 특성입니다.

표 6‑42. 요소 계층

상위 요소 하위 요소

<enumerations> n <url>

n <description>

n <entries>

entries 요소

<entries> 요소는 <enumeration><entry> 요소의 컨테이너입니다.

<entries> 요소는 선택 사항입니다. <entries> 요소에는 특성이 없습니다.

표 6‑43. 요소 계층

상위 요소 하위 요소

<enumeration> <entry>

VMware vRealize Orchestrator를 사용한 개발

234 VMware, Inc.

Page 235: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

entry 요소

<entry> 요소는 열거형 특성의 값을 제공합니다.

<entry> 요소는 선택 사항입니다. 플러그인의 <entry> 요소 수에는 제한이 없습니다. <entry> 요소에는 다음과 같은 특성이 있습니다.

Type 값 설명

id 텍스트 개체에서 열거형 항목을 특성으로 설정하는 데 사용하는 식별자입니다. 필수 특성입니다.

name 텍스트 항목 이름입니다. 필수 특성입니다.

표 6‑44. 요소 계층

상위 요소 하위 요소

<entries> 없음

Orchestrator 플러그인 개발에 대한 모범 사례플러그인의 구조 및 내용과 함께 특정 문제를 방지하는 방법을 이해하면 개발하는 Orchestrator 플러그인의 특정 측면을 개선할 수 있습니다.

n Orchestrator 플러그인 빌드 방법(235 페이지)

다양한 방법으로 Orchestrator 플러그인을 빌드할 수 있습니다. 플러그인 빌드를 계층별로 시작하거나 플러그인의 모든 계층에서 동시에 시작할 수 있습니다.

n Orchestrator 플러그인 유형(237 페이지)

플러그인을 사용하여 XML 또는 SSH와 같은 범용 라이브러리 또는 유틸리티뿐 아니라 vCloudDirector와 같은 전체 시스템을 Orchestrator와 통합할 수 있습니다. Orchestrator와 통합한기술에 따라 플러그인을 서비스용 플러그인, 범용 플러그인 및 시스템용 플러그인으로 분류할 수 있습니다.

n 플러그인 구현(240 페이지)

플러그인을 구성하고, 필요한 Java 클래스 및 JavaScript 개체를 구현하고, 플러그인 워크플로및 작업을 개발하고, 워크플로 프레젠테이션을 제공할 때 유용한 특정 방식 및 기술을 사용할 수 있습니다.

n Orchestrator 플러그인 개발에 대한 권장 사항(244 페이지)

Orchestrator 플러그인의 여러 구성 요소를 개발할 때 특정 작업 방식을 따르면 플러그인의 품질을 개선하는 데 도움이 됩니다.

n 플러그인 사용자 인터페이스 문자열 및 API 설명서 작성(246 페이지)

Orchestrator 플러그인 및 관련 API 설명서에 대한 UI(사용자 인터페이스) 문자열을 작성하는 경우 허용되는 스타일 및 형식 규칙을 따라야 합니다.

Orchestrator 플러그인 빌드 방법

다양한 방법으로 Orchestrator 플러그인을 빌드할 수 있습니다. 플러그인 빌드를 계층별로 시작하거나플러그인의 모든 계층에서 동시에 시작할 수 있습니다.

플러그인 계층에 대한 자세한 내용은 “Orchestrator 플러그인의 구조,”(44 페이지) 항목을 참조하십시오.

6장 플러그인 개발

VMware, Inc. 235

Page 236: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

상향식 플러그인 개발

상향식 개발 방법을 사용하여 계층별로 플러그인을 빌드할 수 있습니다.

상향식 개발 방법은 하위 수준 계층에서 시작하여 상위 수준 계층으로 이어지는 계층별 플러그인을 빌드합니다. 이 방법을 대화형 및 반복형 개발 방법과 함께 사용하면 각 반복에 대해 부분 또는 전체 계층이제공됩니다. N회 반복이 끝나면 플러그인이 완전히 완료됩니다.

그림 6‑3. 상향식 플러그인 개발

상위 수준 워크플로반복 n

반복 1

빌딩 블록 워크플로

작업

스크립팅 개체

래핑 클래스

인프라 클래스

상향식 플러그인 개발 방법의 장점은 한 번에 하나의 계층에 중점을 둔다는 점입니다.

상향식 플러그인 개발 방법에서 고려할 단점은 다음과 같습니다.

n 일부 삽입을 완료할 때까지 플러그인 개발 진행률을 표시하기 어렵습니다.

n Agile 개발 방법에는 그다지 적합하지 않습니다.

상향식 개발 프로세스는 래핑 클래스, 스크립팅 개체, 작업 또는 워크플로 집합이 없거나 줄어든 소규모플러그인에 적합한 것으로 간주됩니다.

하향식 플러그인 개발

하향식 개발 방법을 통해 하향식 기능으로 분할하여 플러그인을 빌드할 수 있습니다.

하향식 방법을 Agile 개발 프로세스와 함께 사용하는 경우 각 반복에 대해 새로운 기능이 제공됩니다. 따라서 N회 반복이 끝나면 플러그인이 완전히 구현됩니다.

VMware vRealize Orchestrator를 사용한 개발

236 VMware, Inc.

Page 237: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

그림 6‑4. 하향식 플러그인 개발

상위 수준 워크플로

반복 n반복 1

빌딩 블록 워크플로

작업

스크립팅 개체

래핑 클래스

인프라 클래스

하향식 플러그인 개발 방법은 다음과 같은 이점이 있습니다.

n 새로운 기능이 각 반복에 대해 완료되고 모든 반복 후 플러그인을 릴리스 및 사용할 수 있으므로 첫번째 반복에서 플러그인 개발 진행 상황을 쉽게 확인할 수 있습니다.

n 기능의 수직 분할을 완료하면 수행된 작업의 성공 기준 및 정의가 매우 명확하게 정의될 뿐만 아니라개발자, 제품 관리 및 QA(품질 보증) 엔지니어 간의 소통이 보다 원활해집니다.

n QA 엔지니어가 개발 프로세스 초기에 테스트 및 자동화를 시작할 수 있습니다. 따라서 소중한 피드백을 받을 수 있으며, 전체 프로젝트 이행 기간이 단축됩니다.

하향식 플러그인 개발 방법의 단점은 동시에 여러 계층에서 개발이 진행된다는 점입니다.

대부분의 플러그인에 하향식 플러그인 개발 프로세스를 적용해야 합니다. 동적 요구 사항이 있는 플러그인에 적합합니다.

Orchestrator 플러그인 유형

플러그인을 사용하여 XML 또는 SSH와 같은 범용 라이브러리 또는 유틸리티뿐 아니라 vCloudDirector와 같은 전체 시스템을 Orchestrator와 통합할 수 있습니다. Orchestrator와 통합한 기술에따라 플러그인을 서비스용 플러그인, 범용 플러그인 및 시스템용 플러그인으로 분류할 수 있습니다.

서비스용 플러그인

서비스용 플러그인 또는 범용 플러그인은 Orchestrator 내에서 서비스로 간주될 수 있는 기능을 제공합니다.

그림 6‑5. 서비스용 플러그인의 아키텍처

Orchestrator 어댑터 시스템

서비스 플러그인

6장 플러그인 개발

VMware, Inc. 237

Page 238: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

서비스용 플러그인은 XML, SSH 또는 SOAP와 같은 범용 라이브러리 또는 유틸리티를 Orchestrator에 노출합니다. 예를 들어 Orchestrator에서 사용할 수 있는 서비스용 플러그인은 다음과 같습니다.

JDBC 플러그인 워크플로 내에서 모든 데이터베이스를 사용할 수 있도록 해줍니다.

메일 플러그인 워크플로 내에서 이메일을 보낼 수 있도록 해줍니다.

SSH 플러그인 워크플로 내에서 SSH 연결을 열고 명령을 실행할 수 있도록 해줍니다.

XML 플러그인 워크플로 내에서 XML 문서를 관리할 수 있도록 해줍니다.

서비스용 플러그인의 특징은 다음과 같습니다.

복잡성 서비스용 플러그인의 복잡성은 하위 내지 중간 수준입니다. 서비스용 플러그인은 구체적인 기능을 제공하기 위해 Orchestrator 내에 특정 라이브러리 또는 라이브러리의 일부를 노출합니다. 예를 들어 XML 플러그인은DOM(문서 개체 모델) XML 구문 분석기 구현을 OrchestratorJavaScript API에 추가합니다.

크기 서비스용 플러그인은 크기가 비교적 작습니다. 서비스용 플러그인에는 모든플러그인용과 동일한 기본 클래스 집합이 필요하며 그 밖에도 새 기능을 추가할 수 있도록 새 스크립팅 개체를 제공하는 다른 클래스가 필요합니다.

인벤토리 서비스용 플러그인은 소규모 개체 인벤토리만 있어도 작동하며, 인벤토리가필요 없는 경우도 있습니다. 서비스용 플러그인의 개체 모델은 작고 일반적이므로 Orchestrator 인벤토리 내에 이 모델을 표시하지 않아도 됩니다.

시스템용 플러그인

시스템용 플러그인은 외부 시스템을 오케스트레이션할 수 있도록 Orchestrator 워크플로 엔진을 외부시스템에 연결합니다.

다음은 시스템용 플러그인의 예입니다.

vCenter Server 플러그인

워크플로를 사용하여 vCenter Server 인스턴스를 관리할 수 있도록 해줍니다.

vCloud Director 플러그인

워크플로 내에서 vCloud Director 설치와 상호 작용할 수 있도록 해줍니다.

Cisco UCSM 플러그인 워크플로 내에서 Cisco 엔티티와 상호 작용할 수 있도록 해줍니다.

다음은 시스템용 플러그인의 주요 특징입니다.

복잡성 시스템용 플러그인은 노출하는 기술이 비교적 복잡하기 때문에 범용 플러그인보다 복잡성 수준이 높습니다. 시스템용 플러그인은 외부 시스템과 상호작용하고 Orchestrator에서 해당 기능을 제공하기 위해 Orchestrator내에 외부 시스템의 모든 요소를 표시해야 합니다. 외부 시스템이 통합 메

VMware vRealize Orchestrator를 사용한 개발

238 VMware, Inc.

Page 239: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

커니즘을 제공하는 경우 이 메커니즘을 사용하여 Orchestrator에서 시스템의 기능을 보다 쉽게 노출할 수 있습니다. 그러나 Orchestrator에서 외부 시스템의 요소를 표시하는 것 외에 뛰어난 확장성 및 캐싱 메커니즘을제공하고 이벤트와 알림을 처리하는 등의 기능이 필요할 수도 있습니다.

크기 시스템용 플러그인은 크기가 크거나 중간 정도입니다. 시스템용 플러그인은많은 스크립팅 개체를 제공하기 때문에 기본 클래스 집합과 별도로 많은 클래스가 필요합니다. 또한 상호 작용할 몇 가지 다른 도우미 및 보조 클래스가 필요할 수도 있습니다.

인벤토리 일반적으로 시스템용 플러그인에는 개체가 많으므로 Orchestrator에서쉽게 찾아서 사용할 수 있도록 이러한 개체를 인벤토리에 적절히 노출해야합니다. 시스템용 플러그인이 노출해야 하는 많은 개체로 인해 가능한 한많은 플러그인용 코드를 자동으로 생성할 보조 도구 또는 프로세스를 구축해야 합니다. 예를 들어 vCenter Server 플러그인은 이러한 도구를 제공합니다.

개체 지향 시스템용 플러그인

개체 지향 시스템은 개체 및 RPC를 기반으로 하는 상호 작용 메커니즘을 제공합니다.

개체 지향 시스템의 가장 일반적인 모델은 SOAP를 사용하는 웹 서비스 모델입니다. 이 모델 내의 개체는 개체 상태와 관련된 특성 집합이 있으며, 대상 시스템 쪽에서 호출되는 원격 메서드 집합을 제공합니다.

그림 6‑6. 개체 지향 시스템용 플러그인

Orchestrator 어댑터 시스템

개체 지향 시스템 플러그인

예:WSDL

생성

개체 지향 시스템용 플러그인을 구현할 때 고려할 수 있는 사항은 다음과 같습니다.

n SOAP를 사용하는 경우 WSDL 파일을 사용하여 개체 모델과 통신 메커니즘을 결합하는 클래스 집합을 생성할 수 있습니다.

n 이 개체 모델은 Orchestrator 내에서 노출해야 하는 거의 모든 것입니다.

리소스 지향 시스템용 플러그인

리소스 지향 시스템은 HTTP 메서드를 사용하는 간단한 작업 및 리소스를 기반으로 하는 상호 작용 메커니즘을 제공합니다.

리소스 지향 시스템의 대표적인 모델은 XML 등과 결합된 REST 모델입니다. 이 모델 내의 개체에는 해당 상태와 관련된 특성 집합이 있습니다. 대상 시스템에서 메서드를 호출(통신 메커니즘)하려면 GET,POST, PUT 등의 표준 HTTP 메서드를 사용하고 몇 가지 규칙을 따라야 합니다.

6장 플러그인 개발

VMware, Inc. 239

Page 240: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

그림 6‑7. 리소스 지향 시스템용 플러그인

시스템

리소스 지향 시스템 플러그인

예:XSD

생성

Orchestrator

리소스 지향 시스템용 플러그인을 개발할 때 고려할 수 있는 사항은 다음과 같습니다.

n REST를 사용하거나 HTTP와 XML만 사용하는 경우 메시지를 읽고 쓰려면 하나 이상의 XML 스키마 파일을 가져와야 합니다. 이러한 스키마에서 개체 모델을 정의하는 클래스 집합을 생성할 수 있습니다. 이 클래스 집합은 개체 상태만 정의합니다. 작업이 HTTP 메서드를 통해 암시적으로 정의(예:vCloud Director 플러그인)되거나, 몇 가지 특정 XML 메시지를 통해 명시적으로 정의(예: CiscoUCSM 플러그인)되기 때문입니다.

n 다른 클래스 집합에서 통신 메커니즘을 구현해야 합니다. 이 클래스 집합은 원래 개체 모델과 상호 작용하는 새 개체 모델을 정의합니다. 통신 메커니즘용 개체 모델은 개체와 메서드로만 구성됩니다.

n 원래 개체 모델과 통신 메커니즘용 개체 모델을 모두 Orchestrator 내에 노출할 수 있습니다. 이 경우 두 개체 모델이 노출되는 방식 및 양쪽에서 관련 개체를 병합할지(개체 지향 시스템을 시뮬레이션하기 위해) 또는 별도로 유지할지 여부에 따라 어느 정도 복잡성이 가중될 수 있습니다.

플러그인 구현

플러그인을 구성하고, 필요한 Java 클래스 및 JavaScript 개체를 구현하고, 플러그인 워크플로 및 작업을 개발하고, 워크플로 프레젠테이션을 제공할 때 유용한 특정 방식 및 기술을 사용할 수 있습니다.

n 프로젝트 구조(240 페이지)

Orchestrator 플러그인의 프로젝트에 표준 구조를 적용할 수 있습니다.

n 프로젝트 내부 구조(241 페이지)

플러그인을 구현할 때 개체를 캐시하거나, 백그라운드에서 가져오거나, 복제하는 등 특정 방법을 적용할 수 있습니다. 이러한 방법을 따르면 플러그인의 성능을 개선하고, 동시 실행 문제를 방지하고,Orchestrator 클라이언트의 응답성을 높일 수 있습니다.

n 워크플로 내부 구조(242 페이지)

Orchestrator 플러그인에서 수행하는 장기 작업을 모니터링할 워크플로를 구현할 수 있습니다.

n 워크플로 및 작업(242 페이지)

워크플로를 보다 쉽게 개발하고 사용하기 위해 특정 모범 사례를 사용할 수 있습니다.

n 워크플로 프레젠테이션(243 페이지)

워크플로 프레젠테이션을 만드는 경우 특정 구조 및 규칙을 적용해야 합니다.

프로젝트 구조

Orchestrator 플러그인의 프로젝트에 표준 구조를 적용할 수 있습니다.

플러그인 프로젝트에 대한 모듈과 함께 표준 Maven 구조를 사용하여 모든 기능이 있는 위치를 명확하게나타낼 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

240 VMware, Inc.

Page 241: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑45. 플러그인 프로젝트의 구조

모듈 설명

/myAwesomePlugin-plugin 플러그인 프로젝트의 루트입니다.

/o11nplugin-myAwesomePlugin 최종 플러그인 DAR 파일을 작성하는 모듈입니다.

/o11nplugin-myAwesomePlugin-config 플러그인 구성 웹 애플리케이션을 포함하는 모듈입니다.표준 WAR 파일을 생성합니다.

/o11nplugin-myAwesomePlugin-core 표준 Orchestrator 플러그인 인터페이스를 구현하는 모든 클래스와 해당 인터페이스에 사용되는 다른 보조 클래스를 포함하는 모듈입니다. 표준 JAR 파일을 생성합니다.

/o11nplugin-myAwesomePlugin-model 플러그인을 통해 타사 기술을 Orchestrator와 통합하도록 도와주는 모든 클래스를 포함하는 모듈입니다. 이 클래스는 표준 Orchestrator 플러그인 API에 대한 직접 참조를 포함할 수 없습니다.

/o11nplugin-myAwesomePlugin-package 작업 및 워크플로가 포함된 외부 Orchestrator 패키지파일을 가져와 최종 플러그인 DAR 파일 내에 포함하는모듈입니다. 이 모듈은 선택 사항입니다.

프로젝트 내부 구조

플러그인을 구현할 때 개체를 캐시하거나, 백그라운드에서 가져오거나, 복제하는 등 특정 방법을 적용할수 있습니다. 이러한 방법을 따르면 플러그인의 성능을 개선하고, 동시 실행 문제를 방지하고,Orchestrator 클라이언트의 응답성을 높일 수 있습니다.

개체 캐시

플러그인은 원격 서비스와 상호 작용할 수 있으며, 이러한 상호 작용은 서비스 쪽의 원격 개체를 나타내는로컬 개체에 의해 제공됩니다. 플러그인의 성능 및 Orchestrator UI의 응답성을 높이려면 원격 서비스에서 매번 가져오는 대신 로컬 개체를 캐시하면 됩니다. 이 경우 모든 플러그인 클라이언트에 하나의 캐시를 사용하거나, 플러그인 사용자당 하나의 캐시를 사용하거나, 타사 서비스 사용자당 하나의 캐시를 사용하는 등 캐시 범위를 고려할 수 있습니다. 구현된 캐싱 메커니즘은 개체를 찾아서 무효화하기 위해 플러그인 인터페이스에 통합됩니다.

백그라운드에서 개체 가져오기

플러그인 인벤토리에 대용량 개체 목록을 표시해야 하지만 이러한 개체를 신속하게 검색할 방법이 없는경우 백그라운드에서 개체를 가져올 수 있습니다. 예를 들어 fake 및 loaded의 두 가지 상태로 개체를 유지하여 백그라운드에서 개체를 가져올 수 있습니다. fake 개체는 생성하기가 매우 쉽고 인벤토리에 표시해야하는 최소한의 정보(예: 이름 및 ID)를 제공한다고 가정해 보겠습니다. 이 경우 항상 fake 개체를 반환할수 있으며, 실제로 모든 정보(실제 개체)가 필요한 경우 사용 중인 엔티티 또는 플러그인에서 load 메서드를 자동으로 호출하여 실제 개체를 가져올 수 있습니다. 사용 중인 엔티티의 작업을 예측하기 위해 fake개체가 반환된 후 자동으로 시작하도록 개체 로드 프로세스를 구성할 수도 있습니다.

동시 실행 문제를 방지하기 위해 개체 복제

플러그인에 캐시를 사용하는 경우 개체를 복제해야 합니다. 요청하는 모든 엔티티에 항상 동일한 개체 인스턴스를 반환하는 캐시를 사용할 경우 원치 않는 결과가 발생할 수 있습니다. 예를 들어 엔티티 A는 개체 O를 요청하여 해당 특성과 함께 인벤토리에 개체를 표시합니다. 이와 동시에 엔티티 B는 개체 O를 요청하고 엔티티 A는 개체 O의 특성을 변경하는 워크플로를 실행합니다. 이 실행이 끝나면 워크플로에서개체의 update 메서드를 호출하여 서버 쪽의 개체를 업데이트합니다. 엔티티 A와 엔티티 B가 개체 O의동일한 인스턴스를 가져온 경우 엔티티 A는 변경 내용이 서버 쪽에 커밋되기 이전에도 엔티티 B가 수행한 모든 변경 내용을 인벤토리에 표시합니다. 정상적으로 실행되면 문제가 없지만 실행에 실패한 경우 엔티티 A에 대한 개체 O의 특성이 되돌려지지 않습니다. 이 경우 캐시(플러그인의 find 작업)에서 항상 동일한 인스턴스 대신 개체의 복제본을 반환한다면 사용 중인 각 엔티티에서 자체 복사본을 표시하고 수정하므로 적어도 Orchestrator 내에서의 동시 실행 문제를 방지할 수 있습니다.

6장 플러그인 개발

VMware, Inc. 241

Page 242: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

다른 엔티티에 변경 내용 알림

캐시와 개체 복제를 동시에 사용하는 경우 문제가 발생할 수 있습니다. 가장 큰 문제는, 사용 중인 엔티티에서 표시하는 개체가 해당 개체에 사용 가능한 최신 버전이 아닐 수 있다는 점입니다. 예를 들어 엔티티에서 인벤토리를 표시하고 개체가 한 번 로드되었지만 이와 동시에 다른 엔티티가 일부 개체를 변경 중인경우 첫 번째 엔티티에는 변경 내용이 표시되지 않습니다. 이 문제를 방지하기 위해 Orchestrator 플러그인 API에서 PluginWatcher 및 IPluginPublisher 메서드를 사용하여 Orchestrator 클라이언트의 다른 인스턴스에서 변경 내용을 볼 수 있도록 일부 항목이 변경되었음을 알릴 수 있습니다. 이는 Orchestrator클라이언트의 고유한 인스턴스, 즉 인벤토리 내 한 개체의 변경 내용이 인벤토리의 다른 개체에 영향을 주고 이러한 개체에 알림을 제공해야 하는 경우에도 적용됩니다. 알림을 주로 사용하는 작업으로는, 개체 또는 개체의 일부 속성이 인벤토리에 표시될 때 이러한 개체를 추가, 업데이트 및 삭제하는 작업이 포함됩니다.

언제든지 모든 개체를 찾을 수 있도록 설정

유형 및 ID만으로 개체를 찾을 수 있도록 IPluginFactory 인터페이스의 find 메서드를 구현해야 합니다.find 메서드는 Orchestrator를 다시 시작하고 워크플로를 재개하는 즉시 호출될 수 있습니다.

쿼리 서비스 시뮬레이션(없는 경우)

Orchestrator 클라이언트에서 특정한 경우 일부 개체를 쿼리하거나, 해당 개체를 트리 대신 목록 또는테이블 등으로 표시해야 할 수 있습니다. 이는 플러그인에서 언제든지 일부 개체 집합을 쿼리할 수 있어야함을 의미합니다. 타사 기술에서 쿼리 서비스를 제공하는 경우 이 서비스를 적용하고 사용해야 합니다. 그렇지 않으면 복잡성이 커지거나 솔루션 성능이 저하됨에도 불구하고 쿼리 서비스를 시뮬레이션할 수 있어야 합니다.

메서드 찾기에서 런타임 예외를 반환해서는 안 됨

플러그인 내에 검색을 구현하는 IPluginFactory 인터페이스의 메서드는 제어되거나 제어되지 않는 런타임예외를 발생시켜서는 안 됩니다. 이는 워크플로가 실행 중일 때 비정상적인 유효성 검사 오류 실패를 초래할 수 있습니다. 예를 들어 워크플로의 두 노드 사이에서 첫 번째 노드의 출력이 두 번째 노드의 입력인경우 find 메서드가 호출됩니다. 이때 런타임 예외로 인해 개체를 찾을 수 없는 경우에는 Orchestrator클라이언트에서 유효성 검사 오류 외에 다른 정보를 얻을 수 없습니다. 로그 파일 내에서 얻을 수 있는 정보의 양은 플러그인이 예외를 기록하는 방식에 따라 달라집니다.

워크플로 내부 구조

Orchestrator 플러그인에서 수행하는 장기 작업을 모니터링할 워크플로를 구현할 수 있습니다.

작업 모니터링과 같은 장기 실행 작업을 모니터링할 워크플로를 구성할 수 있습니다. 이 워크플로는Orchestrator 트리거 및 대기 중인 이벤트를 기반으로 할 수 있습니다. 작업을 대기 중인 차단된 워크플로는 Orchestrator 서버가 시작되는 즉시 재개될 수 있다는 점을 고려해야 합니다. 모니터링 프로세스를 제대로 재개하려면 플러그인에서 필요한 모든 정보를 가져올 수 있어야 합니다.

모니터링 워크플로 또는 해당 워크플로에서 내부적으로 사용할 수 있는 작업은 폴링 속도 및 가능한 시간초과를 지정하는 메커니즘을 제공해야 합니다.

워크플로 내에서 스크립팅 코드 조각을 디버깅하는 프로세스는 간단한 프로세스가 아니며, 특히 코드가Java 코드를 호출하지 않는 경우에는 더욱 그렇습니다. 이로 인해 기본 Orchestrator 스크립팅 개체에서 제공하는 로깅 메서드만 사용할 수밖에 없는 경우가 있습니다.

워크플로 및 작업

워크플로를 보다 쉽게 개발하고 사용하기 위해 특정 모범 사례를 사용할 수 있습니다.

빌딩 블록으로 워크플로 개발 시작

빌딩 블록은 몇 가지 입력 매개 변수만으로 간단한 출력을 반환하는 단순한 워크플로입니다. 다양한 빌딩블록 집합이 있는 경우 상위 수준 워크플로를 쉽게 만들 수 있으며, 복잡한 워크플로를 생성하는 데 보다효율적인 도구 집합을 제공할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

242 VMware, Inc.

Page 243: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

보다 작은 구성 요소를 기반으로 상위 수준 워크플로 생성

몇 가지 입력 및 내부 단계를 사용하여 복잡한 워크플로를 개발해야 하는 경우 이를 보다 작고 단순한 빌딩 블록 워크플로 및 작업으로 분할할 수 있습니다.

가능할 때마다 작업 생성

워크플로를 개발할 때 유연성을 개선하기 위해 작업을 만들 수 있습니다.

n 스크립팅 메서드에 대한 복잡한 개체 또는 매개 변수를 쉽게 만들기 위해

n 항상 반복되는 공통 코드 조각을 방지하기 위해

n UI 유효성 검사를 수행하기 위해

가능할 때마다 워크플로에서 작업 호출

워크플로 스키마 내에서 노드로 직접 작업을 호출할 수 있습니다. 이렇게 하면 단일 작업을 호출하기 위해스크립팅 코드 블록을 추가할 필요가 없기 때문에 워크플로 스키마를 보다 단순하게 유지할 수 있습니다.

필요한 정보 입력

워크플로 또는 작업의 모든 요소에 대한 정보를 제공합니다.

n 워크플로 또는 작업에 대한 설명 제공

n 입력 매개 변수에 대한 설명 제공

n 출력에 대한 설명 제공

n 워크플로의 특성에 대한 설명 제공

버전 정보를 업데이트된 상태로 유지

플러그인의 버전을 관리하는 경우 플러그인의 주요 업데이트, 중요한 구현 정보 등의 정보가 포함된 의미있는 설명을 플러그인에 추가합니다.

워크플로 프레젠테이션

워크플로 프레젠테이션을 만드는 경우 특정 구조 및 규칙을 적용해야 합니다.

워크플로 프레젠테이션의 워크플로 입력에 다음 속성을 사용합니다.

표 6‑46. 워크플로 입력 속성

속성 사용

Show in Inventory 사용자가 인벤토리 보기에서 워크플로를 실행하도록 지원하려면 이 속성을 사용합니다.

Specify a root object to be shown in the chooser 사용자가 입력을 선택하도록 지원하려면 이 속성을 사용합니다. 프레젠테이션에서 루트 개체를 새로 고칠 수 있거나, 루트 개체가 특성이거나, 개체 메서드에서 루트 개체를 검색할 수 있는 경우 프레젠테이션에서 개체를 새로 고치기 위한 적절한 작업을 만들거나 설정해야 합니다.

Maximum string length 이름, 설명, 파일 경로 등의 긴 문자열에 이 속성을 사용합니다.

Minimum string length 테스트 도구에서 빈 문자열을 방지하려면 이 속성을 사용합니다.

Custom validation 작업을 통해 단순하지 않은 유효성 검사를 구현합니다.

단계 및 표시 그룹을 사용하여 입력을 구성합니다. 이러한 구성은 사용자가 워크플로의 모든 입력 매개 변수를 식별하고 구별하는 데 도움이 됩니다.

6장 플러그인 개발

VMware, Inc. 243

Page 244: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Orchestrator 플러그인 개발에 대한 권장 사항

Orchestrator 플러그인의 여러 구성 요소를 개발할 때 특정 작업 방식을 따르면 플러그인의 품질을 개선하는 데 도움이 됩니다.

표 6‑47. 플러그인 구현의 유용한 작업 방식

구성 요소 항목 설명

일반 타사 API 액세스 플러그인은 가급적 타사 API에 액세스할 수 있는 간소화된방법을 제공해야 합니다.

인터페이스 API에서 제공되지 않는 경우에도 플러그인은 일관성 있는 표준 사용자 인터페이스를 제공해야 합니다.

작업 스크립팅 개체 생성, 수정, 삭제 및 그 밖에 스크립팅 개체에 사용 가능한다른 모든 방법에 대한 작업을 만들어야 합니다.

설명 작업 설명에서는 작동 방식 대신 작업의 기능을 설명해야 합니다.

스크립팅 스크립팅을 사용하여 개체의 속성이나 메서드를 가져오는 경우 개체 값이 null 또는 undefined와 다른지 확인할 수 있습니다.

사용되지 않음 작업이 사용되지 않는 경우 comment 또는 throw 문이 대체 작업을 나타내거나, 사용되지 않는 버전의 작업을 기반으로 하는 솔루션이 실패하지 않도록 작업에서 새 대체 작업을 호출해야 합니다.

워크플로 오케스트레이션된 기술의 사용자 인터페이스 작업

오케스트레이션된 기술의 사용자 인터페이스에서 사용할 수있는 모든 작업에 대한 워크플로를 만들어야 합니다.

설명 워크플로 설명에서는 작동 방식 대신 워크플로의 기능을 설명해야 합니다.

프레젠테이션 속성 mandatoryinput

모든 필수 워크플로 입력에 대해 mandatory input 속성을 설정해야 합니다.

프레젠테이션 속성 defaultvalue

엔티티를 구성하는 워크플로를 개발한 경우 워크플로 프레젠테이션에서 이 엔티티에 대한 기본 구성 값을 로드해야 합니다. 예를 들어 호스트 구성이라는 워크플로를 개발한 경우 워크플로 프레젠테이션에서 호스트 구성에 대한 기본값을 로드해야 합니다.

프레젠테이션 속성 Show ininventory

인벤토리 개체에 대한 상황별 워크플로를 유지할 수 있도록Show in inventory 속성을 설정해야 합니다.

프레젠테이션 속성 specify aroot parameter

트리 루트에서 인벤토리를 찾아보지 않아도 되는 경우 워크플로에서 이 속성을 사용해야 합니다.

워크플로 유효성 검사 워크플로의 유효성을 검사하여 모든 오류를 해결해야 합니다.

개체 생성 새 개체를 생성하는 모든 워크플로는 새 개체를 출력 매개 변수로 반환해야 합니다.

사용되지 않음 워크플로가 사용되지 않는 경우 comment 또는 throw 문이 대체 워크플로를 나타내거나, 이전 버전의 워크플로를 기반으로 하는 솔루션이 실패하지 않도록 사용되지 않는 워크플로에서 새 대체 워크플로를 호출해야 합니다.

인벤토리 호스트 연결 끊김 호스트 연결이 인벤토리에 포함된 경우 이 호스트를 사용할수 없게 되면 호스트 연결이 끊어졌음을 나타내야 합니다. 이렇게 하려면 - disconnected를 추가하여 루트 개체의 이름을변경하거나, vCloud Director 플러그인에서 수행하는 것과같은 방식으로 이 개체 아래의 개체 트리를 제거하면 됩니다.

Select value as list 속성 인벤토리 개체는 treeview 또는 list로 선택할 수 있어야 합니다.

VMware vRealize Orchestrator를 사용한 개발

244 VMware, Inc.

Page 245: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑47. 플러그인 구현의 유용한 작업 방식 (계속)

구성 요소 항목 설명

호스트 관리자 플러그인에서 대상 시스템에 대한 host 개체를 구현하는 경우 호스트 속성을 추가, 제거 또는 편집할 수 있는 속성을 가진 상위 hostmanager 루트 개체가 있어야 합니다.

개체 가져오기 또는 업데이트 오케스트레이션된 기술에서 쿼리 서비스가 실행 중인 경우이를 사용하여 여러 개체를 가져와야 합니다.

하위 항목 검색 하위 개체를 별도로 검색해야 하는 경우 검색 프로세스가 다중 스레드되어야 하며 단일 오류 시 차단되지 않아야 합니다.

Orchestrator 개체 변경 인벤토리에서 요소 상태를 변경할 수 있는 모든 워크플로는개체가 동기화되지 않는 것을 방지하기 위해 인벤토리를 업데이트해야 합니다.

외부 개체 변경 Orchestrator 외부에서 수행된 작업의 결과로 인해 오케스트레이션된 기술에서 변경 사항이 발생한 경우 알림 메커니즘을 사용하여 이러한 변경 사항을 알릴 수 있습니다. 작업이러한 작업으로 인해 오케스트레이션된 기술에서 개체가 제거된 경우 데이터 실패 또는 손실을 방지하기 위해 그에 따라인벤토리를 새로 고쳐야 합니다. 예를 들어 vCenterServer에서 가상 시스템이 삭제된 경우 vCenter Server플러그인은 제거된 가상 시스템 개체를 제거하기 위해 인벤토리를 업데이트합니다.

찾기 개체 찾기 개체에는 개체를 구분하는 데 사용할 수 있는 속성이 있어야 합니다. 이는 일반적으로 사용자 인터페이스에 표시되는 속성입니다.

스크립팅 개체 구현 경우에 따라 개체에 두 개의 인스턴스가 있을 수 있으므로 ==작업이 동일한 개체에서 수행되도록 하려면 equals 메서드를구현해야 합니다.

플러그인 개체 속성 상위 개체가 있는 개체는 parent 속성을 구현해야 합니다.

플러그인 개체 속성 하위 개체가 있는 개체는 하위 개체의 어레이를 반환하는GET 메서드를 구현해야 합니다.

인벤토리 개체 인벤토리 개체는 Server.find를 사용하여 검색할 수 있어야합니다.

모든 인벤토리 개체는 워크플로에서 입력 또는 출력 특성으로 사용할 수 있도록 직렬화할 수 있어야 합니다.

생성자 및 메서드 대부분의 경우 스크립팅 가능한 개체는 생성자가 있거나 다른 개체 특성 또는 메서드에서 반환되어야 합니다.

개체 ID 외부 시스템에서 발급된 ID를 가진 개체는 둘 이상의 서버를오케스트레이션할 때 ID 중복이 발생하지 않도록 내부 ID를사용해야 합니다.

개체 검색 search 또는 find 메서드는 모든 개체 대신 지정된 이름 또는ID를 찾을 수 있도록 필터를 구현해야 합니다. 예를 들어Orchestrator 서버에는 해당 ID별로 플러그인 개체를 찾을수 있는 Server.FindForId 메서드가 있습니다. 이렇게 하려면 플러그인에서 찾기 가능한 각 개체에 대해 이 메서드를 구현해야 합니다.

트리거 가능한 경우 Orchestrator에서 여러 이벤트에 대해 정책을트리거할 수 있도록 변경되는 개체에 트리거를 사용할 수 있어야 합니다. 예를 들어 새 가상 시스템이 추가되거나, 전원이 켜지거나, 전원이 꺼진 경우 등을 확인하기 위해Orchestrator에서는 vCenter 플러그인에서 Datacenter개체에 대한 트리거 또는 이벤트를 모니터링할 수 있습니다.

개체 속성 다른 플러그인에 상주하는 개체는 플러그인 개체 간에 쉽게변환하기 위한 속성을 가지고 있어야 합니다. 예를 들어 가상시스템 개체에는 moref(관리 개체 참조 ID)가 있어야 합니다.

6장 플러그인 개발

VMware, Inc. 245

Page 246: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

표 6‑47. 플러그인 구현의 유용한 작업 방식 (계속)

구성 요소 항목 설명

세션 관리자 다른 세션이 있을 수 있는 원격 서버에 연결하는 경우 플러그인에서 공유 세션 및 사용자별 세션을 구현해야 합니다.

트리거 트리거 모든 장기 실행 작업 및 차단 메서드는 반환되는 작업과 비동기식으로 시작하고 완료 시 트리거 이벤트를 생성할 수 있어야 합니다.

열거형 열거형 지정된 유형에 대한 열거형에는 열거된 여러 값에서 선택할수 있는 인벤토리 개체가 있어야 합니다.

로깅 로그 메서드는 다양한 로그 수준을 구현해야 합니다.

버전 관리 플러그인 버전 플러그인 버전은 표준을 따라야 하며, 플러그인 업데이트와함께 업데이트되어야 합니다.

API 설명서 메서드 API 설명서에 설명된 메서드는 개체에 대한 no xyzmethod / property 예외를 발생시켜서는 안 됩니다. 그 대신, 사용 가능한 속성이 없는 경우 메서드는 null을 반환하고세부 정보와 함께 문서화되어야 합니다.

vso.xml 모든 개체, 메서드 및 속성은 vso.xml에 문서화되어야 합니다.

플러그인 사용자 인터페이스 문자열 및 API 설명서 작성

Orchestrator 플러그인 및 관련 API 설명서에 대한 UI(사용자 인터페이스) 문자열을 작성하는 경우 허용되는 스타일 및 형식 규칙을 따라야 합니다.

일반 권장 사항

n 플러그인에 포함된 VMware 제품의 정식 이름을 사용합니다. 예를 들어 다음 제품에 대한 정식 이름 및 VMware 용어를 사용합니다.

올바른 용어 사용 금지

vCenter Server VC 또는 vCenter

vCloud Director vCloud

n 마침표를 사용하여 모든 워크플로 설명을 종료합니다. 예를 들어 Creates a new Organization.은 워크플로 설명입니다.

n 맞춤법 검사기가 있는 텍스트 편집기를 사용하여 설명을 작성한 다음 플러그인으로 이동합니다.

n 플러그인 이름이 해당 플러그인과 연결되는 승인된 타사 제품 이름과 정확히 일치하는지 확인합니다.

워크플로 및 작업

n 정보를 제공하는 설명을 작성합니다. 대부분의 작업 및 워크플로에는 한두 문장이면 충분합니다.

n 상위 수준 워크플로는 보다 광범위한 설명 및 주석을 포함할 수 있습니다.

n 동사로 설명을 시작합니다(예: Creates…). 자체 참조 언어(예: This workflow creates)를 사용하지 마십시오.

n 문장을 완성하는 설명 끝에 마침표를 넣습니다.

n 워크플로 또는 작업의 구현 방법 대신 해당 기능을 설명합니다.

n 워크플로 또는 작업은 일반적으로 폴더 및 패키지에 포함됩니다. 이러한 폴더 및 패키지에 대한 간단한 설명도 포함합니다. 예를 들어 워크플로 폴더에 대해 Set of workflows related to vApp Templatemanagement와 유사한 설명을 작성할 수 있습니다.

VMware vRealize Orchestrator를 사용한 개발

246 VMware, Inc.

Page 247: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

워크플로 및 작업 매개 변수

n 설명이 포함된 명사 구(예: Name of)로 워크플로 및 작업 설명을 시작합니다. It's the name of와 같은구를 사용하지 마십시오.

n 매개 변수 및 작업 설명의 끝에 마침표를 넣지 마십시오. 이러한 설명은 완성된 문장이 아닙니다.

n 워크플로의 입력 매개 변수는 프레젠테이션 보기에서 적절한 이름으로 레이블을 지정해야 합니다. 대부분의 경우 관련 입력을 표시 그룹으로 결합할 수 있습니다. 예를 들어 Name of theOrganization과 Full name of the Organization이라는 레이블을 지닌 두 개의 입력을 사용하는 대신, Organization이라는 레이블의 표시 그룹을 만들고 Organization 그룹에 Name 및Full name 입력을 배치할 수 있습니다.

n 단계 및 표시 그룹의 경우 워크플로 프레젠테이션에 표시되는 설명이나 주석도 추가합니다.

플러그인 API

n API 설명서는 vso.xml 파일 및 Java 소스 파일에 있는 모든 설명서를 참조합니다.

n vso.xml 파일의 경우 워크플로 및 작업에 사용하는 해당 메서드와 함께 찾기 개체와 스크립팅 개체의설명에 동일한 규칙을 사용합니다. 개체 특성 및 메서드 매개 변수의 설명에 워크플로 및 작업 매개변수와 동일한 규칙을 사용합니다.

n vso.xml 파일에서는 특수 문자를 피하고 <![CDATA[insert your description here!]]> 태그 내에 설명을 포함합니다.

n Java 소스 파일에 표준 Javadoc 스타일을 사용합니다.

6장 플러그인 개발

VMware, Inc. 247

Page 248: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator를 사용한 개발

248 VMware, Inc.

Page 249: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

Maven을 사용하여 플러그인 생성 7Orchestrator Appliance는 아키타입에서 플러그인 프로젝트를 만드는 데 사용할 수 있는 Maven 아티팩트가 포함된 저장소를 제공합니다.

저장소는 https://orchestrator_server:8281/vco-repo/ 또는 http://orchestrator_server:8280/vco-repo/(Maven 버전이 HTTPS 프로토콜을 지원하지 않는 경우)에서 호스팅됩니다. 이 위치는 표준Orchestrator Maven 플러그인 프로젝트의 pom.xml 파일에 포함되어 있습니다.Orchestrator Appliance를 배포한 경우에만 Maven 저장소에 액세스할 수 있습니다.

이 장에서는 다음 주제에 대해 설명합니다.

n “아키타입에서 Maven을 사용하여 Orchestrator 플러그인 생성,”(249 페이지)

n “Maven 아키타입,”(250 페이지)

n “Maven 기반 플러그인 개발 모범 사례,”(250 페이지)

아키타입에서 Maven을 사용하여 Orchestrator 플러그인 생성명령줄 인터페이스에서 명령을 실행하여 아키타입에서 표준 Orchestrator Maven 플러그인을 만들 수있습니다.

필수 조건

n Orchestrator Appliance 5.5.1 이상을 설치했는지 확인합니다.

n Apache Maven 3.0.4 또는 3.0.5를 설치했는지 확인합니다.

프로시저

1 대화형 모드에서 아키타입을 선택하여 프로젝트를 만듭니다.

mvn archetype:generate -DarchetypeCatalog=https://orchestrator_server:8281/vco-repo/archetype-

catalog.xml -DrepoUrl=https://orchestrator_server:8281/vco-repo -

Dmaven.repo.remote=https://orchestrator_server:8281/vco-repo -Dmaven.wagon.http.ssl.insecure=true -

Dmaven.wagon.http.ssl.allowall=true

참고 Orchestrator Appliance를 배포한 경우에는 Maven 저장소에만 액세스할 수 있습니다.

2 (선택 사항) HTTPS를 통해 저장소에 액세스할 수 없는 경우 HTTP를 통해 액세스할 수 있습니다.HTTP를 통해 저장소에 액세스하거나 유효한 SSL 인증서가 있는 경우 -Dmaven.wagon.http.ssl.allowall=true 플래그를 사용하지 않고 프로젝트를 만들 수 있습니다.

mvn archetype:generate -DarchetypeCatalog=http://orchestrator_server:8280/vco-repo/archetype-

catalog.xml -DrepoUrl=http://orchestrator_server:8280/vco-repo -

Dmaven.repo.remote=http://orchestrator_server:8280/vco-repo -Dmaven.wagon.http.ssl.insecure=true

VMware, Inc. 249

Page 250: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

3 프로젝트 디렉토리로 이동하여 플러그인을 빌드합니다.

cd project_dir && mvn clean install -Dmaven.wagon.http.ssl.insecure=true -

Dmaven.wagon.http.ssl.allowall=true

빌드 프로세스에 성공하면 DAR 모듈의 target/ 디렉토리에 플러그인 .dar 파일이 생성됩니다.

Maven 아키타입미리 정의된 Maven 아키타입 집합을 템플릿으로 사용하여 Orchestrator 플러그인을 개발할 수 있습니다.

다음 표에서는 Orchestrator에서 사용할 수 있는 기본 Maven 아키타입을 설명합니다.

표 7‑1. 기본 Maven 아키타입

아키타입 설명

com.vmware.o11n:o11n-plugin-archetype-simple com.vmware.o11n:o11n-plugin-archetype-simple

com.vmware.o11n:o11n-package-archetype RCS, Diff, 사후 처리 등과의 더 나은 상호 작용을 위해패키지를 소스 형태로 유지하는 데 사용할 수 있는 컨텐츠전용 Maven 프로젝트입니다.

com.vmware.o11n:o11n-client-archetype-rest Orchestrator REST API와 통신하고 워크플로를 호출하는 간단한 명령줄 도구입니다.

com.vmware.o11n:o11n-plugin-archetype-inventory 인벤토리 사용 현황을 보여 주는 플러그인입니다. 이 플러그인은 단일 유형에 대한 저장소, 어댑터 및 팩토리를 구현합니다. 인벤토리는 디스크의 파일에 저장됩니다.

com.vmware.o11n:o11n-archetype-inventory-annotation 주석 위에 vso.xml 설명자가 생성되는 플러그인입니다.

com.vmware.o11n:o11n-archetype-spring Spring 기반 SDK를 사용하고, DI 지원 환경을 제공하며, 표준 플러그인 API에 비해 상위 수준 서비스를 추가하는 플러그인입니다.

com.vmware.o11n:o11n-plugin-archetype-modeldriven ModelDriven을 사용하여 플러그인을 빌드하기 위한 플러그인 구조를 생성하는 아키타입입니다.

Maven 기반 플러그인 개발 모범 사례일련의 작업을 수행하여 Maven으로 만든 Orchestrator 플러그인을 제공하는 프로세스를 개선할 수 있습니다.

저장소 관리자 사용

대규모 조직에서 플러그인을 만드는 경우 엔터프라이즈 저장소 관리자를 사용하여 프록시 저장소로 추가할 기본 Orchestrator Appliance 저장소를 설정할 수 있습니다. 중앙 저장소를 사용하면 관리 및 플러그인 프로젝트 공동 작업이 개선됩니다. 새 저장소에서 첫 번째 빌드를 완료한 경우 저장소 관리자가Orchestrator Appliance 저장소에서 아티팩트를 캐시하므로 기본 저장소를 해제할 수 있습니다.

워크플로 잠금

플러그인의 모든 워크플로가 예상대로 작동하는지 확인한 후에는 무단 수정을 방지하기 위해 워크플로를잠급니다. 워크플로를 잠그면 플러그인의 기본 기능이 손상되지 않습니다. 사용자가 특정 목적을 위해 기본 워크플로를 수정해야 하는 경우 원래 워크플로의 복사본을 만들어 해당 복사본을 편집할 수 있습니다.

잠긴 워크플로를 사용하여 릴리스 빌드를 생성하려면 -DallowedMask=vf 매개 변수를 Maven으로 전달합니다.

VMware vRealize Orchestrator를 사용한 개발

250 VMware, Inc.

Page 251: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

패키지 서명 인증서 사용

자체 서명된 인증서 또는 인증 기관에서 서명한 인증서를 사용하여 플러그인의 무결성 및 신뢰성을 보장할 수 있습니다. JDK의 keytool을 사용하여 인증서를 가져와 키 저장소에 _dunesrsa_alias_ 별칭으로 저장합니다.

키 저장소 파일의 경로와 키 저장소 암호를 지정하는 방법에는 두 가지 방법이 있습니다.

n MAVEN_OPTS 변수에 대한 -DkeystoreLocation 및 -DkeystorePassword 명령줄 매개 변수를 정의합니다.

n pom.xml 파일을 편집하여 값을 수동으로 삽입합니다. 예를 들면 다음과 같습니다.

<keystore>path to the keystore file</keystore>

<storepass>keystore password</storepass>

키 저장소를 가져오지 않으면 .package 파일이 archetype.keystore 파일로 서명됩니다.

7장 Maven을 사용하여 플러그인 생성

VMware, Inc. 251

Page 252: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator를 사용한 개발

252 VMware, Inc.

Page 253: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

색인

AAPI 설명서 90, 246API 탐색기, 액세스 172

CCommand 스크립팅 클래스 176

FForeach 40Foreach 요소 41, 42

HHasChildrenResult 열거형 62, 217

IIDynamicFinder 인터페이스 54, 210IPluginAdaptor 인터페이스 47, 55, 203,

210IPluginEventPublisher 인터페이스 56,

211IPluginFactory 인터페이스 48, 56, 203,

212IPluginNotificationHandler 57, 213IPluginPublisher 인터페이스 57, 213

Jjavascript, 파일 시스템 액세스 175JavaScript 169, 176

MMaven, 아키타입 250Mozilla Rhino JavaScript 엔진, 제한 사

항 170

OOrchestrator API 170, 185Orchestrator 클라이언트, 액세스 15OS 명령, 액세스 176

PPDF 126PluginExecutionException 61, 217PluginOperationException 61, 217PluginTrigger 58, 214PluginWatcher 59, 215

QQueryResult 59, 215

SScriptingAttribute 주석 63, 218ScriptingFunction 주석 63, 218ScriptingParameter 주석 63, 219SDKFinderProperty 클래스 60, 216

Vvso.xml

action 요소 65, 77, 221, 232attribute 요소 75, 231attributes 요소 75, 230code 요소 77, 233constructor 요소 74, 230constructors 요소 74, 229deprecated 요소 65, 220description 요소 64, 220entries 요소 79, 234entry 요소 79, 235enumeration 요소 78, 234enumerations 요소 78, 234events 요소 71, 227finder 요소 68, 223finder-datasource 요소 66, 222finder-datasources 요소 66, 221finders 요소 67, 223gauge 요소 72, 228id 요소 70, 226parameters 요소 74, 230scripting-objects 요소 73, 228singleton 요소 78, 233trigger 요소 71, 227trigger-properties 요소 72, 227url 요소 65, 220개체 요소 73, 229관계 요소 70, 225관계-링크 요소 71, 226메서드 매개 변수 요소 77, 233메서드 요소 76, 231, 232생성자 parameter 요소 74, 230설치 요소 65, 221속성 요소 69, 224

VMware, Inc. 253

Page 254: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

아키텍처 51, 207인벤토리 요소 67, 223인벤토리-하위 항목 요소 71, 226

vso.xml 파일모듈 요소 63, 219요소 63, 219정의 51, 206

XXML 스크립팅, E4X 179XPath 표현식 176, 177

ㄱ간단한 워크플로 예제영역 132참고 사항 132검색, 결과 수정 24검색 결과 22구성 요소, 생성 118기본 오류 처리기, 요소 39, 40

ㄷ대기 이벤트 요소 25대기 타이머 요소 25대상 9

ㄹ리소스 요소가져오기 192보기 191업데이트 193워크플로에 추가 194파일에 저장 193편집 192링크스키마 요소 32의사 결정 요소 36

ㅁ매개 변수속성 146승격 24읽기-쓰기 속성 145정의 19, 134, 156매개 변수 속성동적 93정적 93

모범 사례 79, 235

ㅂ바인딩스크립팅 가능한 작업 139스크팁팅 가능한 작업 138예외 38, 145

의사 결정 요소 134작업 136작업 요소 135정의 34, 157병렬 워크플로의 시작 워크플로 111보기 185복잡한 워크플로 예제영역 155참고 사항 155복합 유형 40, 42부울 선택 37

ㅅ사용 185사용자 상호 작용상대 시간 초과 99, 100외부 입력 정의 101요소 96, 97특성 96, 97사용자 상호 작용 요소 25사용자 상호 작용, security.group 특성 97사용자 상호 작용, timeout.date 특성 98,

100사용자 상호 작용, 예외 101사용자 상호 작용, 응답 104사용자 상호 작용, 입력 매개 변수 대화 상

자 103사용자 지정 의사 결정 요소 25상대 날짜 개체 99, 113생성, 워크플로 설명서 126설명서 126속성매개 변수 146읽기-쓰기 145스위치 작업, 스키마 요소 43스크립팅

API 탐색기 172Java 클래스 액세스 176JavaScript 개체 유형 173LDAP 예제 182Mozilla Rhino JavaScript 엔진 170OS 명령 액세스 176개체 추가 173기본 예제 179네트워킹 예제 183로깅 예제 183매개 변수 추가 175스크립팅된 요소 169예 178예외 처리 177워크플로 예제 183워크플로에서 스크립팅 엔진 액세스 171

VMware vRealize Orchestrator를 사용한 개발

254 VMware, Inc.

Page 255: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

이메일 예제 180자동 완성 173작업에서 스크립팅 엔진 액세스 172정책에서 스크립팅 엔진 액세스 172키워드의 색 코딩 174파일 시스템 예제 182

스크립팅 가능한 작업 요소, 바인딩 139스크립팅 엔진 170스크팁팅 가능한 작업 요소, 바인딩 138스키마논리적 흐름 31, 32데이터 흐름 33, 34링크 31, 32바인딩 33, 34사용자 지정 의사 결정 35예외 경로 31, 32의사 결정 32, 35표준 경로 31, 32

스키마 요소기본 오류 처리기 39, 40링크 32바인딩 34, 157사용자 상호 작용 96, 97속성 28, 29오류 처리기 39의사 결정 37전역 오류 처리기 39, 40시스템 속성 176시스템용 플러그인개체 지향 시스템 83, 239리소스 지향 시스템 83, 239

시작 워크플로 요소 25실패한 워크플로 실행 재개동작 설정 125사용하도록 설정 126시간 초과 126

ㅇ예외 38예외 바인딩, 생성 38오류 처리기, 요소 39요소, 스위치 작업 43워크플로

OGNL 표현식 값 95간단한 생성 128개발 단계 14검증 120, 149, 167다른 워크플로 호출 104동기 105, 107디버깅 121디버깅 예제 122매개 변수 19, 134버전 기록 127

변경 사항 전파 106복잡한 개발 150분기 37비동기 105, 108사용 권한 119삭제된 항목 복원 127생성 16, 129, 151선택한 개체에서 실행 111스케줄링됨 105, 108스키마 17시작 105실패한 워크플로 실행 재개 125, 126실행 123, 124, 149, 167영역 132, 155워크플로 편집기에서 실행 123입력 매개 변수 속성 94입력 매개 변수 전파 106종료 123중첩됨 105참고 사항 132, 155특성 19, 20, 134파일 시스템 액세스 175편집 16표준 라이브러리 16표준 워크플로 편집 16프레젠테이션 17, 92프레젠테이션 전파 106

워크플로 개발 11워크플로 디버거 121워크플로 디버깅, 예제 122워크플로 매개 변수, 이름 지정 20워크플로 생성 16워크플로 설명서 126워크플로 스키마링크 30바인딩 30보기 22생성 22, 130, 153스키마 요소 속성 28스키마 요소 속성 탭 29요소 22요소 복사 23편집 22워크플로 스키마, 요소 25워크플로 유효성 검사 도구 120워크플로 토큰검사점 123특성 123워크플로 토큰 특성 14워크플로 특성, 이름 지정 20워크플로 편집기열기 16

색인

VMware, Inc. 255

Page 256: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

일반 탭 18탭 17워크플로 폴더 16워크플로 프레젠테이션, 생성 92워크플로, 예약된 OGNL 키워드 20워크플로테스트 15원격 워크플로사전 요구 사항 109호출 109의사 결정 요소경로 삭제 37링크 36바인딩 134분기 삭제 37

입력 매개 변수사용자로부터 가져오기 92속성 93속성 설정 93실행 중 제공 96, 97정의 156입력 매개 변수 대화 상자, 생성 166입력 매개 변수 대화상자, 생성 148입력 매개 변수, 사용자로부터 가져온 91입력 바인딩 34

ㅈ작업구현하는 요소 찾기 187기본 지침 187매개 변수 188바인딩 136버전 기록 188삭제된 항목 복원 189생성 152, 186이름 지정 188재사용 185추가 186코딩 지침 187특성 188

작업 보기 185, 186작업 요소, 바인딩 135장기 실행 워크플로날짜 개체 113타이머 기반 114트리거 115트리거 개체 113트리거 기반 117전역 오류 처리기, 요소 39, 40종료 워크플로 요소 25중첩된 워크플로 110직렬 워크플로의 시작 워크플로 111

ㅊ출력 매개 변수 13출력 바인딩 34클러스터에서의 워크플로 개발 14

ㅌ토큰 13특성읽기-쓰기 속성 145, 165정의 20, 134

ㅍ파일 시스템,

System.getTempDirectory 175파일 시스템 액세스 175패키지디지털 권한 관리 195사용 권한 196생성 195서명 195프레젠테이션생성 148, 166입력 단계 91표시 그룹 91표시 그룹 생성 166프레젠테이션 탭 91, 93, 166플러그인

DAR 아카이브 53, 209IAop 인터페이스 54, 210JAR 파일 53, 209vso.xml 파일 53, 209vso.xml 파일의 역할 47, 202WAR 파일 53, 209WebConfigurationAdaptor 인터페이

스 58, 213감시자 50, 205개발 249개체 이름 지정 52, 208구성 요소 46, 201구조 50, 206내용 50, 206빌드 방법 80, 235생성 249수신기 50, 205아키타입 249아키텍처 43, 199어댑터 47, 203외부 API 노출 45, 201워크플로 트리거 50, 205유형 81, 237이벤트 처리기 50, 205정책 50, 205

VMware vRealize Orchestrator를 사용한 개발

256 VMware, Inc.

Page 257: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

정책 게이지 50, 205정책 트리거 50, 205찾기 개체 49, 204팩토리 48, 203플러그인 부분 43, 199플러그인 API

HasChildrenResult 열거형 62, 217IDynamicFinder 인터페이스 54, 210IPluginAdaptor 인터페이스 55, 210IPluginEventPublisher 인터페이스 56,

211IPluginFactory 인터페이스 56, 212IPluginNotificationHandler 57, 213IPluginPublisher 인터페이스 57, 213PluginExecutionException 61, 217PluginOperationException 61, 217PluginTrigger 58, 214PluginWatcher 59, 215QueryResult 59, 215ScriptingAttribute 주석 63, 218ScriptingFunction 주석 63, 218ScriptingParameter 주석 63, 219SDKFinderProperty 클래스 60, 216플러그인 개발구현 84, 240모범 사례 79, 235, 250상향식 80, 236하향식 80, 236

플러그인 구조 44, 200플러그인 구현워크플로 86, 242워크플로 내부 구조 86, 242워크플로 프레젠테이션 87, 243작업 86, 242프로젝트 구조 84, 240프로젝트 내부 구조 85, 241

플러그인 문자열 90, 246플러그인 어댑터, 생성 47, 203플러그인 유형서비스용 플러그인 81, 237시스템용 플러그인 82, 238플러그인 팩토리, 생성 48, 203플러그인, 스크립팅 개체 49, 204

ㅎ하위 워크플로, 여러 번 실행 41

색인

VMware, Inc. 257

Page 258: VMware vRealize Orchestrator를 사용한 개 발 · n 일반 워크플로 정보 입력(18 페이지) 사용자는 워크플로 편집기의 일반 탭에 워크플로 이름 및

VMware vRealize Orchestrator를 사용한 개발

258 VMware, Inc.