클라우드 프로비저닝 및 거버넌스에서 표현식 사용

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 13분
  • 정책 작업의 표현식은 값을 설정하거나 재정의할 수 있습니다. Blueprint의 표현식은 자원의 속성에 액세스할 수 있으며 요청 양식 필드에 값을 매핑할 수 있습니다. 표현식은 자원 블록, Blueprint, 정책 및 클라우드 프로비저닝 및 거버넌스가 스크립트를 사용할 수 있는 모든 위치에서 사용할 수 있습니다.

    표현식 사용

    표현식은 시스템에서 동적으로 생성되는 정보에 대한 값을 보유할 수 있으며, 예를 들어 사용자가 클라우드 사용자 포털에서 만드는 선택 항목의 값입니다. 표현식은 자원 블록, Blueprint, 정책 및 클라우드 프로비저닝 및 거버넌스가 스크립트를 사용할 수 있는 모든 위치에서 사용할 수 있습니다.

    자원 블록에서 표현식 사용

    각 자원 블록 작업은 표현식을 사용하여 각 매개변수의 값을 저장합니다. 이 식에서는 하드 코딩된 값, 사용자가 클라우드 사용자 포털에서 프로비저닝하는 스택의 데이터, CMDB 데이터 및 스크립트에서 파생된 데이터를 사용할 수 있습니다. 기본적으로 클라우드 프로비저닝 및 거버넌스는 각 자원 블록 작업에 대해 매개변수 세트와 해당 표현식을 생성합니다.

    예를 들어, 자원이 속한 데이터센터를 보유하는 매개변수 Location는 표현식 ${parameter.Location}을 사용합니다.

    그림 1. 자원 블록의 표현식
    자원 블록의 위치 매개변수
    Blueprint에서 표현식 사용

    Blueprint는 표현식을 사용하여 자원 블록의 각 작업에 대한 입력 매개변수를 매핑합니다. 기본적으로 Blueprint에는 자원 블록에 지정된 것과 동일한 매개변수와 값이 표시됩니다.

    표현식을 사용하여 Blueprint 속성에 액세스할 수 있습니다. 매핑 열의 표현식은 단계에서 각 작업에 대한 Blueprint 속성을 정의합니다. 예를 들어, 스택 요청 양식에 나타나는 위치 속성은 {$parameter.Location} 표현식을 통해 액세스할 수 있습니다. ${parameter.Location} 값이 있는 위치 매개변수는 Blueprint 작업을 선택하면 입력 탭에 나타납니다.

    그림 2. Blueprint에서의 표현식
    위치 매개변수 및 표현식
    정책 작업에서 표현식 사용

    정책 작업은 표현식을 사용하여 클라우드 사용자 포털의 요청 양식에서 사용자가 전송하는 매개변수 값을 재정의할 수 있습니다. 스택 작업에서 사용자 데이터에 액세스하고 이를 재정의할 수도 있습니다. 예를 들어, formData.Stackname = "your-naming-convention"; 표현식을 사용하여 스택의 이름을 바꿀 수 있습니다.

    그림 3. 정책 스크립트에서의 표현식
    정책 예시 스크립트

    표현식을 사용하여 Blueprint 속성에 액세스할 수 있습니다. 매핑 열의 표현식은 단계에서 각 작업에 대한 Blueprint 속성을 정의합니다. 예를 들어 가상 머신의 요청 양식에 표시되는 위치 속성은 {$parameter.Location} 표현식에서 액세스됩니다.

    표현식 형식

    정의 표현식
    정의 표현식은 초기 바인딩(또는 정적 바인딩)의 한 형태입니다. 이러한 바인딩은 컴파일 타임 바인딩을 나타내며 사용자가 스택 요청 양식을 전송할 때(스택 또는 자원 프로비저닝이 시작 될 때) 평가됩니다. 정의 표현식은 오케스트레이션 중에 생성되는 데이터에 액세스할 수 없습니다. 정의 표현식은 중괄호로 묶여 있습니다. 예: ${parameter.CloudAccount}
    런타임 표현식
    런타임 표현식은 후기 바인딩(또는 동적 바인딩)의 한 형태입니다. 이러한 바인딩은 런타임 바인딩을 참조하고 오케스트레이션 중에 만들어진 데이터(예: 스택 항목)에 대한 액세스 권한을 갖습니다. 런타임 표현식은 오케스트레이션 실행 중에 호출될 때 계산됩니다. 런타임 표현식은 일반적으로 테이블의 데이터를 닷워킹하는 데 사용됩니다. 런타임 표현식은 괄호로 묶여 있습니다. 예: $(Stack.items[VM1].attributes[node_id])
    정의/런타임 표현식
    일부 표현식에는 정의와 런타임 표현식이 모두 포함됩니다.
    복잡한 표현식
    다른 표현식 내에서 모든 형식의 표현식을 중첩할 수 있습니다.

    정의 표현식 구문 및 예시

    허용되는 구문에는 달러 기호와 중괄호가 사용됩니다. 다음과 같은 형식을 사용할 수 있습니다.
    • ${parameter.}. Blueprint 프로비저닝 같은 프로세스의 입력 속성에서 값을 검색하려면 이러한 유형의 표현식을 사용합니다. 테이블에서 데이터를 가져오지 않습니다.
    • ${Stack.items[]}. 이 구문을 사용하여 스택에 있는 특정 항목의 속성에 액세스합니다.
    • ${randomNumber}. 이 구문을 사용하여 임의의 숫자를 생성합니다. 예를 들어 임의의 노드 이름 또는 스택 이름을 사용하여 VM을 프로비저닝할 수 있습니다.
    표 1. 정의 표현식 예시
    설명
    ${parameter.BillingCode} 이 표현식은 Blueprint에서 청구 코드 매개변수가 나타나는 방식을 보여줍니다.
    ${parameter.formData.CatalogAttributeType} 이 표현식은 사용자가 클라우드 사용자 포털의 카탈로그 항목 양식을 채우는 동안 사용자가 제출한 카탈로그 속성을 사용합니다.
    ${parameter.userData.userId} 이 표현식은 사용자가 클라우드 사용자 포털의 카탈로그 항목 양식에 내용을 입력하는 동안 사용자 ID를 사용합니다.
    ${Stack.items[Virtual Server].attributes[sys_id]} 이 표현식은 스택과는 떨어진 가상 서버의 sys_id를 가져옵니다. 가상 서버는 스택에 사용되는 자원 블록의 별칭입니다.

    런타임 표현식 구문 및 예시

    허용되는 구문에는 달러 기호와 괄호가 사용됩니다. 다음과 같은 형식을 사용할 수 있습니다.
    • $(ci.tablename) 여기서 tablename은 시스템 내 테이블이며 일반적으로 CMDB의 CI 테이블입니다. 이 구문을 사용하여 테이블의 필드 값에 액세스합니다.
    • $(Stack.items[]). 이 구문을 사용하여 스택에 있는 특정 항목의 속성에 액세스합니다.
    표 2. 런타임 표현식 예시
    설명
    $(ci.cmdb_ci_cloud_subnet[ sys_id=12231231231231231231].cidr) 이 표현식에서 지정한 표현식은 클라우드 서브넷 테이블로 이동하고 주어진 sys_id를 사용하여 특정 기록을 찾은 다음 cidr 열의 값을 취합니다.
    $(ci.sn_cmp _ip_pool[subnet=${parameter.formData.Subnet Id}]) 이 표현식에는 런타임 및 정의 형식 표현식이 결합됩니다. 등호 =는 일치하는 값을 계산하는 데 사용됩니다. 표현식 점은 IP 풀 테이블로 안내하고 사용자가 제출한 서브넷 ID가 있는 서브넷을 찾습니다.
    $(ci.cmdb_ci_cloud_subnet[${parameter.formData.SubnetId}].cidr) 이 표현식에는 런타임 및 정의 형식 표현식이 결합됩니다. 이 표현식은 프로비저닝 중에 사용자가 선택한 서브넷의 cidr 필드 값을 사용합니다. 대괄호 []는 표현식 점이 클라우드 서브넷 테이블로 닷워킹되고 사용자가 Blueprint 프로비저닝에서 제출한 서브넷 값을 확인한다는 것을 나타냅니다. 이 표현식은 cidr 필드 값을 가져와 서브넷 sys_id의 cidr 필드에 있는 값으로 안내합니다.
    $(Stack.items[Virtual Server].attributes[sys_id]) 정의 표현식 예시와 같이 이 식에서는 스택과는 떨어진 가상 서버의 sys_id를 사용합니다.

    예시 표현식

    $(ci.cmdb_ci_nic[$(Script:CMPVMNICs.getNICs[arg=$(Stack.items[Virtual Server].attributes[sys_id])])].private_ip)
    • $(ci: 테이블에서 데이터를 검색하는 런타임 표현식입니다.
    • cmdb_ci_nic: NIC(네트워크 인터페이스 카드)용 CI입니다.
    • $(Script: 스크립트 기반 표현식입니다.
    • CMPVMNICs: 스크립트 포함입니다.
    • getNICs: 스크립트 안에 있는 함수입니다.
    • arg: 스크립트에 대한 인수는 함수를 포함합니다. 속성이 여러 개인 경우 인수는 ","로 구분됩니다.
    • $(Stack.items: 스택에서 스택 항목을 검색하는 런타임 스택 표현식입니다. 인수는 Blueprint에 지정된 별칭입니다.
    • Virtual Server: Blueprint에서 사용하는 자원 별칭입니다.
    • $(Stack.items[Virtual Server].attributes[sys_id]): 스택에서 스택 항목("Virtual Server") 자원 인스턴스의 sys_id를 검색합니다.
    • private_ip: Cmdb_ci_nic의 속성입니다. 필요한 경우 공용 IP로 대체합니다.

    표현식

    Simple parameter mapping expression

    이 형식의 표현식은 Blueprint 작업, 자원 블록 및 정책과 같은 프로세스의 입력 속성에서 값을 검색합니다. 테이블에서 데이터를 가져오지 않습니다. Blueprint에서 클라우드 API 자원에 이르기까지 한 레이어에서 다른 레이어로 값을 매핑합니다.

    • 유형: 정의
    • 구문: ${parameter.}
    • 예시:
      • ${parameter.BillingCode}는 청구 코드를 반환합니다.
      • ${parameter.formData.CatalogAttributeType}클라우드 사용자 포털에서 요청 양식에 제출된 카탈로그 속성을 사용합니다.
      • ${parameter.userData.userId}클라우드 사용자 포털의 요청 양식에서 작업하는 사용자의 ID를 사용합니다..

    Stack item expression

    CMDB의 CI 인스턴스는 각 스택 항목을 나타냅니다. 스택 항목 표현식을 사용하여 스택 항목 또는 스택 항목 자체를 다시 검색하는 CI에서 첫 번째 수준의 속성을 찾습니다.

    • 유형: 정의/런타임
    • 구문: ${Stack.items[]} 또는 $(Stack.items[])
    • 예시:

      ${Stack.items[VirtualServer1].attributes[sys_id]}는 스택 내 가상 서버의 sys_id를 가져오는 정의 유형 표현식입니다. VirtualServer1는 스택에 사용되는 자원 블록의 별칭입니다.

      $(Stack.items[VirtualServer2].attributes[sys_id])는 스택 일부인 가상 서버의 sys_id를 가져오는 런타임 유형 표현식입니다.

      ${Stack.items[vm1].attributes[node_id]}는 VM용으로 생성된 CI의 node_id 속성을 읽습니다. vm1은 스택 항목 이름(또는 Blueprint 내 자원의 별칭)입니다.

      $(Stack.items[vm1].status)는 스택 항목의 상태를 읽습니다.

    Property override expressions in policies

    정책에서는 시스템에서 값을 취하거나 난수를 사용하여 속성을 재정의할 수 있습니다. 양식에서 작업을 수행한 사용자와 클라우드 사용자 포털 양식에 있는 데이터를 모두 사용할 수 있습니다.

    • 유형: 정의/런타임
    • 구문: ${parameter.formData.xyz} or ${this.parameter.userData.xyz}
    • 예시:

      다음 값은 스택 이름을 Stack_Bob.Smith@company.com로 정의할 수 있습니다: Stack_${parameter.userData.userId}

      IP 풀 테이블에서 서브넷을 가져와서 런타임 표현식을 사용하여 스택 또는 테이블 값을 설정합니다.

      $(ci.sn_cmp _ip_pool[subnet=${parameter.formData.Subnet Id}])

      스크립트에서 다음과 같이 값을 할당할 수 있습니다.

      formData.App_Server_NodeName = "MyNodeName";

      this.parameter.userData.userId == 'servicenowuserId';

    • 정책 작업 스크립트 만들기 또한 참조하십시오.

    Script expression

    이 예에서 VMPropertiesgetIP라고 불리는 함수가 포함된 스크립트입니다. 스크립트 표현식은 표현식이 중첩된 복잡한 표현식의 예이기도 합니다.

    • 유형: 런타임
    • 구문: $(Script:scriptName.function[])
    • 예시:

      $(Script:VMPropertiesUtil.getIP[ arg=$(Stack.items[VM1].attributes[object_id])])

      개인 IP 표현식:$(ci.cmdb_ci_nic[$(Script:CMPVMNICs.getNICs[arg=$(Stack.items[Virtual Server].attributes[sys_id])])].private_ip)

      공용 IP 표현식: $(ci.cmdb_ci_nic[$(Script:CMPVMNICs.getNICs[arg=$(Stack.items[Virtual Server].attributes[sys_id])])].public_ip)

      자격 증명 별칭을 가져오는 표현식: $(Script:CMPVMUtils.getCredentialAlias[arg=${Stack.items[Virtual Server].attributes[sys_id]}])

      IP 주소를 가져오는 표현식: $(Script:CMPVMUtils.getReachableIp[arg=$(Stack.items[Virtual Server].attributes[sys_id])])

    CI lookup expression

    일반적으로 CMDB의 CI 테이블에 있는 테이블의 필드 값에 액세스합니다.

    • 유형: 정의/런타임
    • 구문: $(ci.tableName)
    • 예시:

      $(ci.sn_cmp _ip_pool[subnet=${parameter.formData.Subnet Id}])는 런타임 유형과 정의 유형 표현식을 통합합니다. = 연산자는 일치하는 값을 계산합니다. 표현식 점은 IP 풀 테이블로 안내하고 사용자가 제출한 서브넷 ID가 있는 서브넷을 찾습니다.

      $(ci.cmdb_ci_cloud_subnet[${parameter.formData.SubnetId}].cidr)는 사용자가 프로비저닝 중에 지정한 서브넷의 cidr 필드의 값을 사용합니다. 표현식은 클라우드 서브넷으로 닷워킹하고 Blueprint 프로비저닝에서 사용자가 제출한 서브넷 값을 조회하여 cidr 필드 값을 추출한 다음 서브넷의 sys_id cidr 필드로 값을 안내합니다.

    Random number expression

    임의의 수를 생성합니다. 예를 들어 임의의 노드 이름 또는 스택 이름을 사용하여 VM을 프로비저닝할 수 있습니다.

    • 유형: 런타임
    • 구문 및 예시: ${randomNumber}

    Scratchpad expression/Resource operation output attribute expression

    한 작업의 출력 속성을 다른 작업으로 읽어옵니다.

    • 유형: 런타임
    • 구문: 다양
    • 예: 한 작업의 출력을 설정하거나 노출 하려면:

      ${Compute Interface.CreateNode.Output.resp.nodeId}

      출력 속성을 읽으려면(여기서 VM1.Provision 은 출력 속성이 읽히는 작업임):

      $(Outputs[VM1.Provision].NodeId)

    Conditions in expressions

    Blueprint 단계 및 자원 운영 단계에서 조건부 표현식을 사용하여 단계를 조건부로 실행하거나 건너뛸 수 있습니다. 조건식은 Javascript 표현식이고 표현식 대체를 지원합니다.

    • 유형: 정의/런타임
    • 구문: 다양
    • 예시:

      ‘${parameter.CloudAccount}’==’Amazon Cloud Account’

      ‘$(Stack.items[vm1].attributes[node_id]) ’== ’VM1’

    Complex expression

    표현식을 중첩할 수 있습니다. 예를 들어, ${parameter. ServerID}는 CI의 sys_id를 매핑하고 외부 표현식이 사용되기 전에 대체됩니다.

    • 유형: 모두
    • 구문: 다양
    • 예: $(ci.cmdb_ci_vm_instance[${parameter.ServerID}].name)

    Order context

    이 표현식은 수명주기 작업에 유용하며 sn_cmp_order 테이블의 일부로서 주문 속성에 대한 닷워킹을 수행할 수 있도록 합니다.

    • 유형: 런타임
    • 구문: $(context.order.column_name)
    • 예시:
      • 요청 항목: $(context.order.sc_req_item)
      • 요청 항목 객체에서 닷워킹: $(context.order.sc_req_item.number)
      • 혼합 표현식(상수 + 표현식): "ram$(context.order.sc_req_item.number)"