Referensi Sintaksis

Halaman ini menjelaskan sintaksis yang digunakan oleh Deployment Manager. Gunakan panduan ini sebagai referensi sintaksis yang akan digunakan dalam konfigurasi dan template Anda.

Sintaksis untuk konfigurasi dan template

Sintaksis dasar

  • resources - Sekumpulan resource yang akan dibuat.
    • name - Nama untuk pembuatan instance resource ini.
    • type - Jenis resource. Ini dapat berupa jenis dasar seperti compute.v1.instance, penyedia jenis seperti gcp-types/compute-v1:addresses, atau template yang diimpor. Lihat daftar penyedia jenis yang didukung.
    • properties - Properti resource ini. Untuk pengantar, lihat Properti template.
    • metadata - Konfigurasi tambahan untuk resource ini. Lihat daftar kolom di Metadata.

Contoh

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

Kontrol Akses

Jika ingin menetapkan kebijakan IAM pada resource, gunakan bagian accessControl:

  1. Tambahkan bagian accessControl ke konfigurasi level teratas untuk setiap resource tempat Anda ingin menerapkan kebijakan kontrol aksesnya.

  2. Tentukan gcpIamPolicy yang diinginkan untuk resource. Setiap kebijakan IAM dapat berisi daftar binding. Setiap binding mengikat daftar akun utama ke peran.

Untuk mengetahui informasi mendetail tentang cara mengontrol akses ke resource, lihat Menyetel kontrol akses dalam konfigurasi.

Misalnya, bagian accessControl berikut menambahkan binding yang memberikan peran ini kepada pengguna:

Pengguna Peran
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"

Referensi

Untuk mendapatkan informasi tentang kapan harus menggunakan referensi, dan contoh lainnya, pelajari lebih lanjut cara membuat referensi.

Anda dapat menggunakan references ke properti resource lain, bukan memberikan nilai secara langsung. Misalnya, jika ingin membuat pengelola grup instance yang menggunakan template instance dari deployment yang sama, daripada secara eksplisit mengetik link lengkap untuk template instance, Anda dapat menggunakan referensi dengan sintaksis $(ref.instance-template.selfLink).

Untuk melihat properti yang dapat dijadikan acuan referensi, lihat metode get untuk API resource. Misalnya, untuk melihat daftar semua properti untuk instance VM, lihat respons untuk metode instances.get().

Anda mendeklarasikan referensi menggunakan sintaksis yang serupa dengan notasi 'dot' JSONPath. Gunakan sintaksis berikut untuk mendeklarasikan referensi:

$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)

Untuk properti yang berupa daftar, seperti antarmuka jaringan untuk instance Compute Engine, gunakan sintaksis berikut:

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

Contoh

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

Variabel lingkungan khusus deployment

Saat Anda membuat deployment, Deployment Manager akan membuat variabel lingkungan yang berisi potongan informasi tentang deployment Anda, seperti nama project saat ini, nama deployment, dan sebagainya.

Untuk mengetahui daftar lengkap variabel lingkungan yang tersedia, lihat Variabel lingkungan.

Untuk menggunakan variabel lingkungan:

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

context.env["deployment"] # Python

Contoh

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

Properti template

Properti template adalah properti arbitrer yang Anda buat. Daripada melakukan hard code pada nilai, Anda dapat mendeklarasikan properti template dan menetapkan nilai properti dalam konfigurasi tingkat atas, bukan menyediakan properti dan nilai secara statis langsung di template. Untuk membuat properti template, gunakan sintaksis:

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

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

Kemudian di konfigurasi level teratas atau template induk, tetapkan nilai properti:

imports:
- path: vm_template.jinja

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

Pelajari Properti Template lebih lanjut.

Output

Di bagian output, Anda dapat menentukan key-value pair arbitrer yang mengekspos informasi tertentu tentang deployment. Anda memberikan kunci dan menetapkan nilainya sebagai string statis, referensi ke properti, variabel template, atau variabel lingkungan.

  • outputs - Mendeklarasikan daftar output yang dapat dipanggil pengguna di properti resource mereka.
    • name - Nama properti output.
    • value - Nilai properti output.

Contoh

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

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

Pelajari Output lebih lanjut.

Metadata

Bagian metadata berisi metadata khusus yang dapat Anda terapkan per resource. Deployment Manager memiliki metadata unik yang memicu fitur tertentu. Misalnya, fitur dependsOn bergantung pada entri metadata.

Bergantung pada

Properti dependsOn membuat dependensi eksplisit di antara resource Anda. Misalnya, menentukan bahwa Resource A bergantung pada Resource B akan memastikan bahwa Resource B selalu dibuat sebelum Resource A.

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

Contoh

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

Pelajari lebih lanjut cara membuat dependensi eksplisit.

Sintaksis untuk skema

Skema adalah cara bagi Anda untuk mengontrol bagaimana pengguna dapat berinteraksi dengan template. Sintaksis berikut dapat digunakan di file skema Anda. Pelajari Skema lebih lanjut.

info

Properti info berisi informasi meta tentang skema. Elemen ini mencakup informasi seperti judul, nomor versi, deskripsi, dan sebagainya.

Minimal, berikan judul dan deskripsi di properti ini.

Contoh

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

impor

Kolom imports berisi daftar file yang sesuai yang diperlukan untuk template yang menggunakan skema ini. Saat Anda mengupload template dengan skema yang memiliki daftar impor, Deployment Manager akan memeriksa apakah semua file dalam properti impor diupload bersama dengan template tersebut.

Contoh

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

wajib

Kolom wajib berisi daftar elemen dari kolom properti yang diperlukan dalam template yang menggunakan skema. Setiap elemen yang tidak ditentukan dalam kolom wajib diisi ini dianggap opsional.

Contoh

required:
  - name

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

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

properties

Kolom properties berisi aturan skema JSON untuk dokumen ini. Elemen yang dijelaskan dalam kolom properti dapat ditetapkan oleh pengguna template. Anda dapat menggunakan semua validasi skema JSON yang didukung untuk properti ini, seperti:

  • type (string, boolean, integer, number, ...)
  • default
  • minimum / exclusiveMinimum / maximum / exclusiveMaximum
  • minLength / maxLength
  • pattern
  • not X / allOf X, Y / anyOf X, Y / oneOf X, Y

Setidaknya, sebaiknya sertakan jenis dan deskripsi kolom agar pengguna tahu berapa nilai yang dapat diterima untuk properti tersebut. Untuk properti opsional, sebaiknya sertakan nilai default.

Baca dokumentasi Validasi Skema JSON untuk mengetahui daftar kata kunci validasi.

Contoh

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

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

Langkah selanjutnya