구문 참조

이 페이지에서는 Deployment Manager에서 사용되는 구문을 설명합니다. 이 가이드를 참조하여 구성 및 템플릿에 사용할 구문을 확인할 수 있습니다.

구성 및 템플릿 구문

기본 구문

  • resources - 만들 리소스 집합입니다.
    • name - 이 리소스의 이 인스턴스화 이름입니다.
    • type - 리소스 유형입니다. compute.v1.instance, 유형 공급자(예: gcp-types/compute-v1:addresses) 또는 가져온 템플릿 같은 기본 유형입니다. 지원되는 유형 제공자 목록을 참조하세요.
    • properties - 이 리소스의 속성입니다. 소개는 템플릿 속성을 참조하세요.
    • metadata - 이 리소스의 추가 구성입니다. 메타데이터의 필드 목록을 참조하세요.

예시

resources:
- name: vm-instance
  type: compute.v1.instance
  properties:
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    ...

액세스 제어

리소스에 IAM 정책을 설정하려면 accessControl 섹션을 사용합니다.

  1. 액세스 제어 정책을 적용하려는 각 리소스의 최상위 구성에 accessControl 섹션을 추가합니다.

  2. 리소스에 원하는 gcpIamPolicy를 지정합니다. 각 IAM 정책은 바인딩 목록을 포함할 수 있습니다. 각 바인딩은 주 구성원 목록을 역할에 바인딩합니다.

리소스 액세스 제어에 대한 자세한 내용은 구성에서 액세스 제어 설정을 참조하세요.

예를 들어 다음 accessControl 섹션에서는 사용자에게 역할을 부여하는 바인딩을 추가합니다.

사용자 역할
alice@example.com roles/pubsub.editor
  • my-other-app@appspot.gserviceaccount.com
  • jane@example.com
roles/pubsub.publisher
resources:
- name: a-new-pubsub-topic
  type: pubsub.v1.topic
  properties:
    ...

  accessControl:
    gcpIamPolicy:
      bindings:
      - role: roles/pubsub.editor
        members:
        - "user:alice@example.com"
      - role: roles/pubsub.publisher
        members:
        - "user:jane@example.com"
        - "serviceAccount:my-other-app@appspot.gserviceaccount.com"

참조

참조를 사용하는 경우에 대한 자세한 내용과 더 많은 예시를 살펴보려면 참조 만들기에 대해 자세히 알아보세요.

직접 값을 제공하는 대신 다른 리소스의 속성에 대한 참조를 사용할 수 있습니다. 예를 들어 동일한 배포의 인스턴스 템플릿을 사용하는 인스턴스 그룹 관리자를 만들려는 경우 인스턴스 템플릿의 전체 링크를 명시적으로 입력하는 대신 $(ref.instance-template.selfLink) 구문을 통해 참조를 사용할 수 있습니다.

참조를 만들 수 있는 대상 속성을 확인하려면 리소스 API의 get 메서드를 참조하세요. 예를 들어 VM 인스턴스의 모든 속성 목록은 instances.get() 메서드의 응답을 참조하세요.

JSONPath '점' 표기법과 비슷한 구문을 사용하여 참조를 선언합니다. 다음 구문을 사용하여 참조를 선언합니다.

$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)

Compute Engine 인스턴스의 네트워크 인터페이스와 같은 목록 속성의 경우 다음 구문을 사용합니다.

$(ref.RESOURCE_NAME.LIST_PROPERTY[index].ITEM)

예시

$(ref.exampleInstance.networkInterfaces[0].natIp)
$(ref.exampleInstance.serviceAccounts[0].email)

배포 관련 환경 변수

배포를 만들 때 Deployment Manager는 현재 프로젝트 이름, 배포 이름과 같은 배포 정보가 포함된 환경 변수를 만듭니다.

사용 가능한 환경 변수 전체 목록은 환경 변수를 참조하세요.

환경 변수를 사용하려면 다음 명령어를 실행합니다.

{{ env["deployment"] }} # Jinja

context.env["deployment"] # Python

예시

- type: compute.v1.instance
  name: vm-{{ env["deployment"] }}

템플릿 속성

템플릿 속성은 개발자가 만드는 임의 속성입니다. 값을 하드 코딩하는 대신 템플릿에서 직접 속성 및 값을 정적으로 제공하는 것과 반대로 템플릿 속성을 선언하고 최상위 구성에서 속성 값을 설정할 수 있습니다. 템플릿 속성을 만들려면 다음 구문을 사용하세요.

{{ properties["property-name"] }} # Jinja

context.properties["property-name"] # Python

그런 후 최상위 구성 또는 상위 템플릿에서 속성 값을 설정합니다.

imports:
- path: vm_template.jinja

resources:
- name: my-vm
  type: vm_template.jinja
  properties:
   property-name: example-value

템플릿 속성에 대해 자세히 알아보세요.

출력

출력 섹션에서는 배포에 대한 특정 정보를 노출하는 임의의 키/값 쌍을 정의할 수 있습니다. 키를 제공하고 값을 정적 문자열, 속성 참조, 템플릿 변수 또는 환경 변수로 설정합니다.

  • outputs - 사용자가 자신의 리소스 속성에서 호출할 수 있는 출력 목록을 선언합니다.
    • name - 출력 속성 이름입니다.
    • value - 출력 속성 값입니다.

예시

resources:
- name: vm-instance
  type: compute.v1.instance
  ...

outputs:
- name: databaseIp
  value: $(ref.vm-instance.networkInterfaces[0].natIp)
- name: databaseName
  value: example-database

출력에 대해 알아보세요.

메타데이터

metadata 섹션에는 리소스별 기준으로 적용할 수 있는 특수한 메타데이터가 포함됩니다. Deployment Manager에는 특정 기능을 트리거하는 고유한 메타데이터가 있습니다. 예를 들어 dependsOn 기능은 메타데이터 항목을 사용합니다.

dependsOn

dependsOn 속성은 리소스 사이에서 명시적 종속 항목을 만듭니다. 예를 들어 리소스 A가 리소스 B에 의존하도록 지정하면 항상 리소스 B가 리소스 A보다 먼저 생성됩니다.

metadata: the metadata for this resource
  dependsOn: Any explicit dependencies to another resource.

예시

resources:
- name: vm-instance
  type: compute.v1.instance
  properties:
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    ...
  metadata:
    dependsOn:
    - persistent-disk-1
    - a-new-network-1

명시적 종속성 만들기에 대해 알아보세요.

스키마 구문

스키마를 사용하면 사용자가 템플릿을 상호작용하는 방법을 제어할 수 있습니다. 스키마 파일에서 다음 구문을 사용할 수 있습니다. 스키마에 대해 자세히 알아보세요.

info

info 속성에는 스키마에 대한 메타 정보가 포함됩니다. 여기에는 제목, 버전 번호, 설명 등과 같은 정보가 포함됩니다.

이 속성에는 최소한 제목과 설명을 제공합니다.

예시

info:
  title: MongoDB Template
  author: Jane
  description: Creates a MongoDB cluster
  version: 1.0

imports

imports 필드에는 이 스키마를 사용하는 템플릿에 필요한 해당 파일 목록이 포함됩니다. imports 목록이 있는 스키마가 포함된 템플릿을 업로드하면 Deployment Manager가 imports 속성의 모든 파일이 템플릿과 함께 업로드되었는지 확인합니다.

예시

imports:
  - path: helper.py
    name: mongodb_helper.py

required

required 필드에는 스키마를 사용하는 템플릿에 필요한 속성 필드의 요소 목록이 포함됩니다. 이 required 필드에 지정되지 않은 요소는 모두 선택 항목으로 고려됩니다.

예시

required:
  - name

properties:
  name:
    type: string
    description: Name of your Mongo Cluster

  size:
    type: integer
    default: 2
    description: Number of Mongo Secondaries

properties

properties 필드에는 이 문서의 JSON 스키마 규칙이 포함됩니다. 템플릿 사용자가 properties 필드에 설명된 요소를 설정할 수 있습니다. 다음과 같은 속성에 지원되는 모든 JSON 스키마 검증을 사용할 수 있습니다.

  • type(문자열, 부울, 정수, 숫자 등)
  • default
  • minimum / exclusiveMinimum / maximum / exclusiveMaximum
  • minLength / maxLength
  • pattern
  • not X / allOf X, Y / anyOf X, Y / oneOf X, Y

사용자가 속성에 사용 가능한 값이 무엇인지 알 수 있도록 적어도 필드의 type 및 description을 포함하는 것이 좋습니다. 선택적인 속성의 경우에는 default 값도 포함하는 것이 좋습니다.

검증 키워드 목록은 JSON 스키마 검증 문서를 참조하세요.

예시

properties:
  name:
    type: string
    description: Name of your Mongo Cluster

  size:
    type: integer
    default: 2
    description: Number of Mongo Secondaries
    minimum: 1

다음 단계