Referensi Sintaksis

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

Sintaksis untuk konfigurasi dan template

Sintaksis dasar

  • resources - Kumpulan 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, Anda menggunakan bagian accessControl:

  1. Tambahkan bagian accessControl ke konfigurasi tingkat teratas untuk setiap resource yang ingin Anda terapkan 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 informasi mendetail tentang cara mengontrol akses ke resource, lihat Menetapkan 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 mengetahui informasi tentang kapan harus menggunakan referensi, dan contoh lainnya, pelajari lebih lanjut cara membuat referensi.

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

Untuk melihat properti yang dapat Anda buat referensinya, lihat metode get untuk API resource. Misalnya, untuk mengetahui daftar semua properti untuk instance VM, lihat respons untuk metode instances.get().

Anda mendeklarasikan referensi menggunakan sintaksis yang mirip dengan notasi 'titik' 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 level teratas, bukan menyediakan properti dan nilai secara statis langsung dalam template. Untuk membuat properti template, gunakan sintaksis:

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

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

Kemudian, di konfigurasi tingkat 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. Anda memberikan kunci dan menetapkan nilai 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 berdasarkan per resource. Deployment Manager memiliki metadata unik yang memicu fitur tertentu. Misalnya, fitur dependsOn mengandalkan 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 cara pengguna berinteraksi dengan template. Sintaksis berikut dapat digunakan dalam file skema Anda. Pelajari Skema lebih lanjut.

info

Properti info berisi informasi meta tentang skema. Hal 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

imports

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.

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 di kolom properti dapat ditetapkan oleh pengguna template. Anda dapat menggunakan semua validasi skema JSON yang didukung untuk properti ini, seperti:

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

Minimal, sebaiknya sertakan jenis dan deskripsi kolom agar pengguna mengetahui nilai yang dapat diterima untuk properti. Untuk properti opsional, sebaiknya sertakan juga 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